Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

71 lines (53 sloc) 1.55 kb
module ActiveRecord
class LogSubscriber < ActiveSupport::LogSubscriber
IGNORE_PAYLOAD_NAMES = ["SCHEMA", "EXPLAIN"]
def self.runtime=(value)
Thread.current[:active_record_sql_runtime] = value
end
def self.runtime
Thread.current[:active_record_sql_runtime] ||= 0
end
def self.reset_runtime
rt, self.runtime = runtime, 0
rt
end
def initialize
super
@odd_or_even = false
end
def sql(event)
self.class.runtime += event.duration
return unless logger.debug?
payload = event.payload
return if IGNORE_PAYLOAD_NAMES.include?(payload[:name])
name = "#{payload[:name]} (#{event.duration.round(1)}ms)"
sql = payload[:sql].squeeze(' ')
binds = nil
unless (payload[:binds] || []).empty?
binds = " " + payload[:binds].map { |col,v|
[col.name, v]
}.inspect
end
if odd?
name = color(name, CYAN, true)
sql = color(sql, nil, true)
else
name = color(name, MAGENTA, true)
end
debug " #{name} #{sql}#{binds}"
end
def identity(event)
return unless logger.debug?
name = color(event.payload[:name], odd? ? CYAN : MAGENTA, true)
line = odd? ? color(event.payload[:line], nil, true) : event.payload[:line]
debug " #{name} #{line}"
end
def odd?
@odd_or_even = !@odd_or_even
end
def logger
ActiveRecord::Base.logger
end
end
end
ActiveRecord::LogSubscriber.attach_to :active_record
Jump to Line
Something went wrong with that request. Please try again.