module Instana::Instrumentation::ActiveRecord

Constants

IGNORED_NAMES
IGNORED_SQL
SANITIZE_REGEXP

Public Instance Methods

log(sql, name = 'SQL', binds = [], *args) click to toggle source
Calls superclass method
# File lib/instana/instrumentation/active_record.rb, line 11
def log(sql, name = 'SQL', binds = [], *args)
  call_payload = {
    activerecord: {
      adapter: @config[:adapter],
      host: @config[:host],
      username: @config[:username],
      db: @config[:database],
      sql: maybe_sanitize(sql)
    }
  }

  if binds.all? { |b| b.respond_to?(:value_before_type_cast) } && !::Instana.config[:sanitize_sql]
    mapped = binds.map(&:value_before_type_cast)
    call_payload[:activerecord][:binds] = mapped
  end

  maybe_trace(call_payload, name) { super(sql, name, binds, *args) }
end

Private Instance Methods

ignored?(call_payload, name) click to toggle source
# File lib/instana/instrumentation/active_record.rb, line 44
def ignored?(call_payload, name)
  IGNORED_NAMES.include?(name) ||
    IGNORED_SQL.any? { |s| call_payload[:activerecord][:sql].upcase.start_with?(s) }
end
maybe_sanitize(sql) click to toggle source
# File lib/instana/instrumentation/active_record.rb, line 32
def maybe_sanitize(sql)
  ::Instana.config[:sanitize_sql] ? sql.gsub(SANITIZE_REGEXP, '?') : sql
end
maybe_trace(call_payload, name) { || ... } click to toggle source
# File lib/instana/instrumentation/active_record.rb, line 36
def maybe_trace(call_payload, name, &blk)
  if ::Instana.tracer.tracing? && !ignored?(call_payload, name)
    ::Instana.tracer.trace(:activerecord, call_payload, &blk)
  else
    yield
  end
end