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