class ActiveRecord::LogSubscriber

Constants

IGNORE_PAYLOAD_NAMES

Public Class Methods

call_count() click to toggle source
# File lib/time_bandits/monkey_patches/active_record.rb, line 16
def self.call_count
  Thread.current.thread_variable_get(:active_record_sql_call_count) ||
    Thread.current.thread_variable_set(:active_record_sql_call_count, 0)
end
call_count=(value) click to toggle source
# File lib/time_bandits/monkey_patches/active_record.rb, line 12
def self.call_count=(value)
  Thread.current.thread_variable_set(:active_record_sql_call_count, value)
end
query_cache_hits() click to toggle source
# File lib/time_bandits/monkey_patches/active_record.rb, line 25
def self.query_cache_hits
  Thread.current.thread_variable_get(:active_record_sql_query_cache_hits) ||
    Thread.current.thread_variable_set(:active_record_sql_query_cache_hits, 0)
end
query_cache_hits=(value) click to toggle source
# File lib/time_bandits/monkey_patches/active_record.rb, line 21
def self.query_cache_hits=(value)
  Thread.current.thread_variable_set(:active_record_sql_query_cache_hits, value)
end
reset_call_count() click to toggle source
# File lib/time_bandits/monkey_patches/active_record.rb, line 30
def self.reset_call_count
  calls = call_count
  self.call_count = 0
  calls
end
reset_query_cache_hits() click to toggle source
# File lib/time_bandits/monkey_patches/active_record.rb, line 36
def self.reset_query_cache_hits
  hits = query_cache_hits
  self.query_cache_hits = 0
  hits
end

Public Instance Methods

sql(event) click to toggle source
# File lib/time_bandits/monkey_patches/active_record.rb, line 43
def sql(event)
  payload = event.payload

  self.class.runtime += event.duration
  self.class.call_count += 1
  self.class.query_cache_hits += 1 if payload[:cached] || payload[:name] == "CACHE"

  return unless logger.debug?

  return if IGNORE_PAYLOAD_NAMES.include?(payload[:name])

  log_sql_statement(payload, event)
end

Private Instance Methods

log_sql_statement(payload, event) click to toggle source
# File lib/time_bandits/monkey_patches/active_record.rb, line 58
def log_sql_statement(payload, event)
  name  = "#{payload[:name]} (#{event.duration.round(1)}ms)"
  name  = "CACHE #{name}" if payload[:cached]
  sql   = payload[:sql]
  binds = nil

  unless (payload[:binds] || []).empty?
    casted_params = type_casted_binds(payload[:type_casted_binds])
    binds = "  " + payload[:binds].zip(casted_params).map { |attr, value|
      render_bind(attr, value)
    }.inspect
  end

  name = colorize_payload_name(name, payload[:name])
  sql  = color(sql, sql_color(sql), true)

  debug "  #{name}  #{sql}#{binds}"
end