class InfinumGraylog::SqlActiveRecord

Constants

SKIPPABLE_ACTIONS
TYPE

Attributes

event[R]
trace[R]

Public Class Methods

new(event, trace) click to toggle source
# File lib/infinum_graylog/sql_active_record.rb, line 8
def initialize(event, trace)
  @event = event
  @trace = trace
end

Public Instance Methods

format() click to toggle source
# File lib/infinum_graylog/sql_active_record.rb, line 13
def format
  return unless configuration.types.include?(TYPE)
  return if event.payload[:statement_name].nil? && event.payload[:name].nil?
  return if skippable_actions.include?(event_name)

  {
    short_message: event_name,
    sql: sql,
    type: TYPE,
    duration: event.duration,
    application: configuration.application,
    trace: Rails.backtrace_cleaner.clean(trace)
  }
end

Private Instance Methods

configuration() click to toggle source
# File lib/infinum_graylog/sql_active_record.rb, line 50
def configuration
  InfinumGraylog.configuration
end
event_name() click to toggle source
# File lib/infinum_graylog/sql_active_record.rb, line 30
def event_name
  event.payload[:name] || 'SQL'
end
skippable_actions() click to toggle source
# File lib/infinum_graylog/sql_active_record.rb, line 46
def skippable_actions
  SKIPPABLE_ACTIONS + configuration.skippable_sql_actions
end
sql() click to toggle source
# File lib/infinum_graylog/sql_active_record.rb, line 34
def sql
  sql = event.payload[:sql].dup

  binds = event.payload[:binds]
  if binds.present?
    binds = binds.map { |_col, val| val.inspect }
    binds.each { |b| sql.sub!(/\$./, b) }
  end

  sql
end