Class: Honeybadger::Plugins::RailsBreadcrumbs Private

Inherits:
Object
  • Object
show all
Defined in:
lib/honeybadger/plugins/breadcrumbs.rb

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Class Method Summary collapse

Class Method Details

.send_breadcrumb_notification(name, duration, notification_config, data = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Used internally for sending out Rails Instrumentation breadcrumbs.

Parameters:

  • name (String)

    The ActiveSupport instrumentation key

  • duration (Number)

    The time spent in the instrumentation event

  • notification_config (Hash)

    The instrumentation event configuration

  • data (Hash) (defaults to: {})

    Custom metadata from the instrumentation event

Options Hash (notification_config):

  • :message (String | Proc)

    A message that describes the event. You can dynamically build the message by passing a proc that accepts the event metadata.

  • :category (Symbol)

    A key to group specific types of events

  • :select_keys (Array)

    A set of keys that filters what data we select from the instrumentation data (optional)

  • :exclude_when (Proc)

    A proc that accepts the data payload. A truthy return value will exclude this event from the payload (optional)

  • :transform (Proc)

    A proc that accepts the data payload. The return value will replace the current data hash (optional)



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/honeybadger/plugins/breadcrumbs.rb', line 75

def self.send_breadcrumb_notification(name, duration, notification_config, data = {})
  return if notification_config[:exclude_when] && notification_config[:exclude_when].call(data)

  message =
    case (m = notification_config[:message])
    when Proc
      m.call(data)
    when String
      m
    else
      name
    end

  data = data.slice(*notification_config[:select_keys]) if notification_config[:select_keys]
  data = notification_config[:transform].call(data) if notification_config[:transform]
  data = data.is_a?(Hash) ? data : {}

  data[:duration] = duration if duration

  Honeybadger.add_breadcrumb(
    message,
    category: notification_config[:category] || :custom,
    metadata: data
  )
end

.subscribe_to_notification(name, notification_config) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



102
103
104
105
106
107
108
# File 'lib/honeybadger/plugins/breadcrumbs.rb', line 102

def self.subscribe_to_notification(name, notification_config)
  ActiveSupport::Notifications.subscribe(name) do |_, started, finished, _, data|
    duration = finished - started if finished && started

    send_breadcrumb_notification(name, duration, notification_config, data)
  end
end