class InfluxReporter::Normalizers::ActiveRecord::SQL

Public Class Methods

new(*args) click to toggle source
# File lib/influx_reporter/normalizers/active_record.rb, line 11
def initialize(*args)
  super(*args)
  adapter = begin
              ::ActiveRecord::Base.connection.adapter_name.downcase
            rescue
              nil
            end
  @kind = "db.#{adapter || 'unknown'}.sql"
  @sql_parser = SqlSummarizer.new config
end

Public Instance Methods

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

  signature =
    signature_for(payload[:sql]) || # SELECT FROM "users"
    payload[:name] ||               # Users load
    'SQL'

  return :skip if signature == 'SELECT FROM "schema_migrations"'

  extra = payload[:sql].length < 256 ? { values: { sql: payload[:sql] } } : nil

  [signature, @kind, extra]
end

Private Instance Methods

signature_for(sql) click to toggle source
# File lib/influx_reporter/normalizers/active_record.rb, line 39
def signature_for(sql)
  @sql_parser.signature_for(sql)
end