class Airbrake::Rails::ActiveRecordSubscriber

ActiveRecordSubscriber sends SQL information, including performance data.

@since v8.1.0

Public Instance Methods

call(*args) click to toggle source
# File lib/airbrake/rails/active_record_subscriber.rb, line 10
def call(*args)
  routes = Airbrake::Rack::RequestStore[:routes]
  return if !routes || routes.none?

  event = Airbrake::Rails::Event.new(*args)
  frame = last_caller

  routes.each do |route, params|
    Airbrake.notify_query(
      route: route,
      method: params[:method],
      query: event.sql,
      func: frame[:function],
      file: frame[:file],
      line: frame[:line],
      start_time: event.time,
      end_time: event.end
    )
  end
end

Private Instance Methods

last_caller() click to toggle source
# File lib/airbrake/rails/active_record_subscriber.rb, line 33
def last_caller
  exception = StandardError.new
  exception.set_backtrace(
    Airbrake::Rails::BacktraceCleaner.clean(Kernel.caller)
  )
  Airbrake::Backtrace.parse(exception).first || {}
end