class Faulty::Events::Notifier

The default event dispatcher for Faulty

Public Class Methods

new(listeners = []) click to toggle source

@param listeners [Array<ListenerInterface>] An array of event listeners

# File lib/faulty/events/notifier.rb, line 8
def initialize(listeners = [])
  @listeners = listeners.freeze
end

Public Instance Methods

notify(event, payload) click to toggle source

Notify all listeners of an event

If a listener raises an error while handling an event, that error will be captured and written to STDERR.

@param event [Symbol] The event name @param payload [Hash] A hash of event payload data. The payload keys

differ between events, but should be consistent across calls for a
single event
# File lib/faulty/events/notifier.rb, line 21
def notify(event, payload)
  raise ArgumentError, "Unknown event #{event}" unless EVENTS.include?(event)

  @listeners.each do |listener|
    begin
      listener.handle(event, payload)
    rescue StandardError => e
      warn "Faulty listener #{listener.class.name} crashed: #{e.message}"
    end
  end
end