class RuntimeProfiler::Callback::ActiveRecord

Attributes

data[R]

Public Class Methods

new() click to toggle source
# File lib/runtime_profiler/callbacks/active_record.rb, line 8
def initialize
  @data = {}
end

Public Instance Methods

call(*args) click to toggle source
# File lib/runtime_profiler/callbacks/active_record.rb, line 12
def call(*args)
  event = RuntimeProfiler::SqlEvent.new(args: args, trace: caller)

  return unless event.recordable?
  return if event.trace.empty?

  @data.key?(event.key) ? update(event) : add(event)
end

Private Instance Methods

add(event) click to toggle source
# File lib/runtime_profiler/callbacks/active_record.rb, line 23
def add(event)
  key = event.key
  @data[key] = {}

  @data[key][:sql]      = event.sanitized_sql
  @data[key][:runtimes] = [
    [event.total_runtime, event.trace.first]
  ]
end
update(event) click to toggle source
# File lib/runtime_profiler/callbacks/active_record.rb, line 33
def update(event)
  @data[event.key][:runtimes] << [event.total_runtime, event.trace.first]
end