Class: EventSubscribers::AppsignalSubscriber
- Inherits:
-
Object
- Object
- EventSubscribers::AppsignalSubscriber
- Defined in:
- app/services/event_subscribers/appsignal_subscriber.rb
Overview
Promotes severity-prefixed Rails.events to AppSignal via the project's
ErrorReporting wrapper. Subscribed with a filter (see
config/initializers/360_rails_event_subscribers.rb) so it only ever receives
events whose name signals a severity:
error.* -> ErrorReporting.error (web / background namespace)
warning.* -> ErrorReporting.warning (web_warning / background_warning)
Every other event stays log-only (LogSubscriber) to keep AppSignal volume
bounded. Telemetry events worth tracking in AppSignal as custom data get an
explicit entry here as they're adopted (see the 0818 task doc).
Constant Summary collapse
- SEVERITY_PREFIXES =
Event-name prefix => ErrorReporting severity method.
{ "error." => :error, "warning." => :warning }.freeze
Class Method Summary collapse
-
.relevant?(event) ⇒ Boolean
Subscribe filter: whether this subscriber wants the event at all.
Instance Method Summary collapse
Class Method Details
.relevant?(event) ⇒ Boolean
Subscribe filter: whether this subscriber wants the event at all. Used as
the block passed to Rails.event.subscribe so non-severity events never
reach #emit.
25 26 27 |
# File 'app/services/event_subscribers/appsignal_subscriber.rb', line 25 def self.relevant?(event) SEVERITY_PREFIXES.keys.any? { |prefix| event[:name].start_with?(prefix) } end |
Instance Method Details
#emit(event) ⇒ void
This method returns an undefined value.
31 32 33 34 35 36 |
# File 'app/services/event_subscribers/appsignal_subscriber.rb', line 31 def emit(event) severity = severity_for(event[:name]) return unless severity ErrorReporting.public_send(severity, event[:name], context_for(event)) end |