class Ezlog::Rails::ActiveRecord::LogSubscriber

Public Instance Methods

sql(event) click to toggle source
# File lib/ezlog/rails/active_record/log_subscriber.rb, line 5
def sql(event)
  ::ActiveRecord::Base.logger.debug log_message_from(event)
end

Private Instance Methods

basic_message_from(event) click to toggle source
# File lib/ezlog/rails/active_record/log_subscriber.rb, line 18
def basic_message_from(event)
  {
    message: "SQL - #{event.payload[:name]} (#{event.duration.round(3)}ms)",
    sql: event.payload[:sql],
    duration_sec: (event.duration / 1000.0).round(5)
  }
end
log_message_from(event) click to toggle source
# File lib/ezlog/rails/active_record/log_subscriber.rb, line 11
def log_message_from(event)
  basic_message_from(event).tap do |message|
    params = params_from event
    message[:params] = params if params.any?
  end
end
params_from(event) click to toggle source
# File lib/ezlog/rails/active_record/log_subscriber.rb, line 26
def params_from(event)
  return {} if event.payload.fetch(:binds, []).empty?

  params = event.payload[:binds]
  values = type_casted_values_from event
  param_value_pairs = params.zip(values).map do |param, value|
    [param.name, value_of(param, value)]
  end

  Hash[param_value_pairs]
rescue NoMethodError
  params
end
type_casted_values_from(event) click to toggle source
# File lib/ezlog/rails/active_record/log_subscriber.rb, line 40
def type_casted_values_from(event)
  binds = event.payload[:type_casted_binds]
  binds.respond_to?(:call) ? binds.call : binds
end
value_of(param, value) click to toggle source
# File lib/ezlog/rails/active_record/log_subscriber.rb, line 45
def value_of(param, value)
  param.type.binary? ? '-binary data-' : value
end