class ElasticAPM::Normalizers::ActiveRecord::SqlNormalizer

@api private

Public Class Methods

new(*args) click to toggle source
Calls superclass method ElasticAPM::Normalizers::Normalizer.new
# File lib/elastic_apm/normalizers/active_record.rb, line 11
def initialize(*args)
  super

  @type = format('db.%s.sql', lookup_adapter || 'unknown').freeze
  @summarizer = SqlSummarizer.new
end

Public Instance Methods

normalize(_transaction, _name, payload) click to toggle source
# File lib/elastic_apm/normalizers/active_record.rb, line 18
def normalize(_transaction, _name, payload)
  return :skip if %w[SCHEMA CACHE].include?(payload[:name])

  name = summarize(payload[:sql]) || payload[:name]
  context =
    Span::Context.new(db: { statement: payload[:sql], type: 'sql' })
  [name, @type, context]
end

Private Instance Methods

lookup_adapter() click to toggle source
# File lib/elastic_apm/normalizers/active_record.rb, line 33
def lookup_adapter
  ::ActiveRecord::Base.connection.adapter_name.downcase
rescue StandardError
  nil
end
summarize(sql) click to toggle source
# File lib/elastic_apm/normalizers/active_record.rb, line 29
def summarize(sql)
  @summarizer.summarize(sql)
end