Active Support Structured Event Subscriber¶ ↑
ActiveSupport::StructuredEventSubscriber consumes ActiveSupport::Notifications in order to emit structured events via Rails.event.
An example would be the Action Controller structured event subscriber, responsible for emitting request processing events:
module ActionController class StructuredEventSubscriber < ActiveSupport::StructuredEventSubscriber attach_to :action_controller def start_processing(event) emit_event("controller.request_started", controller: event.payload[:controller], action: event.payload[:action], format: event.payload[:format] ) end end end
After configured, whenever a "start_processing.action_controller" notification is published, it will properly dispatch the event (ActiveSupport::Notifications::Event) to the start_processing method. The subscriber can then emit a structured event via the emit_event method.
- C
- E
- N
- S
Constants
| DEBUG_CHECK | = | proc { !ActiveSupport.event_reporter.debug_mode? } |
Class Public methods
new() Link
Instance Public methods
call(event) Link
emit_debug_event(name, payload = nil, caller_depth: 1, **kwargs) Link
Like emit_event, but only emits when the event reporter is in debug mode
# File activesupport/lib/active_support/structured_event_subscriber.rb, line 82 def emit_debug_event(name, payload = nil, caller_depth: 1, **kwargs) ActiveSupport.event_reporter.debug(name, payload, caller_depth: caller_depth + 1, **kwargs) rescue => e handle_event_error(name, e) end
emit_event(name, payload = nil, caller_depth: 1, **kwargs) Link
Emit a structured event via Rails.event.notify.
Arguments¶ ↑
-
name- The event name as a string or symbol -
payload- The event payload as a hash or object -
caller_depth- Stack depth for source location (default: 1) -
kwargs- Additional payload data merged with the payload hash
# File activesupport/lib/active_support/structured_event_subscriber.rb, line 75 def emit_event(name, payload = nil, caller_depth: 1, **kwargs) ActiveSupport.event_reporter.notify(name, payload, caller_depth: caller_depth + 1, **kwargs) rescue => e handle_event_error(name, e) end