Class: Honeybadger::RailsSubscriber

Inherits:
NotificationSubscriber show all
Defined in:
lib/honeybadger/notification_subscriber.rb

Instance Method Summary collapse

Methods inherited from NotificationSubscriber

#finish, #format_payload, #process?, #start

Methods included from InstrumentationHelper

#decrement_counter, #extract_attributes, #extract_callable, #gauge, #histogram, #increment_counter, #metric_agent, #metric_attributes, #metric_instrumentation, #metric_source, #monotonic_timer, #time

Instance Method Details

#record(name, payload) ⇒ Object



43
44
45
46
# File 'lib/honeybadger/notification_subscriber.rb', line 43

def record(name, payload)
  return unless Honeybadger.config.load_plugin_insights?(:rails, feature: :events)
  Honeybadger.event(name, payload)
end

#record_metrics(name, payload) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/honeybadger/notification_subscriber.rb', line 48

def record_metrics(name, payload)
  return unless Honeybadger.config.load_plugin_insights?(:rails, feature: :metrics)

  metric_source "rails"

  case name
  when "sql.active_record"
    return if payload[:query]&.match?(/^(begin|commit)( immediate)?( transaction)?$/i)
    gauge("duration.sql.active_record", value: payload[:duration])
  when "process_action.action_controller"
    gauge("duration.process_action.action_controller", value: payload[:duration], **payload.slice(:method, :controller, :action, :format, :status))
    gauge("db_runtime.process_action.action_controller", value: payload[:db_runtime], **payload.slice(:method, :controller, :action, :format, :status))
    gauge("view_runtime.process_action.action_controller", value: payload[:view_runtime], **payload.slice(:method, :controller, :action, :format, :status))
  when /^cache_.*.active_support$/
    gauge("duration.#{name}", value: payload[:duration], **payload.slice(:store))
  end
end