Module: ActiveRecord::OpenTracing

Defined in:
lib/active_record/open_tracing.rb,
lib/active_record/open_tracing/version.rb,
lib/active_record/open_tracing/processor.rb,
lib/active_record/open_tracing/sql_sanitizer.rb,
lib/active_record/open_tracing/sql_sanitizer/base.rb,
lib/active_record/open_tracing/sql_sanitizer/mysql.rb,
lib/active_record/open_tracing/sql_sanitizer/sqlite.rb,
lib/active_record/open_tracing/sql_sanitizer/regexes.rb,
lib/active_record/open_tracing/sql_sanitizer/postgres.rb,
lib/active_record/open_tracing/sql_sanitizer/sql_server.rb

Defined Under Namespace

Modules: SqlSanitizer Classes: Processor

Constant Summary collapse

VERSION =
"0.6.1"

Class Method Summary collapse

Class Method Details

.instrument(tracer: ::OpenTracing.global_tracer, sanitizer: nil, sql_logging_enabled: true) ⇒ Object

Instruments activerecord for use with OpenTracing

Parameters:

  • tracer (OpenTracing::Tracer) (defaults to: ::OpenTracing.global_tracer)

    The tracer to which to send traces

  • sanitizer (Symbol, String, nil) (defaults to: nil)

    The sanitizer to use. Options are :mysql, :postgres, :sql_server, :sqlite. If no sanitizer is specified, or a falsy value is passed, sql will not be sanitized.

  • sql_logging (Boolean)

    Whether to log sql statements to the tracer



19
20
21
22
23
24
25
26
# File 'lib/active_record/open_tracing.rb', line 19

def self.instrument(tracer: ::OpenTracing.global_tracer, sanitizer: nil, sql_logging_enabled: true)
  sql_sanitizer = sanitizer && SqlSanitizer.build_sanitizer(sanitizer)
  processor = Processor.new(tracer, sanitizer: sql_sanitizer, sql_logging_enabled: sql_logging_enabled)

  ActiveSupport::Notifications.subscribe("sql.active_record") do |*args|
    processor.call(*args)
  end
end