class EvilEvents::Core::Events::Notifier::Sequential

@api private @since 0.3.0

Public Instance Methods

notify(manager, event) click to toggle source

@param manager [EvilEvents::Core::Events::Manager] @param event [EvilEvents::Core::Events::AbstractEvent] @raise [EvilEvents::FailingSubscribersError] @return void

@api private @since 0.3.0

# File lib/evil_events/core/events/notifier/sequential.rb, line 17
def notify(manager, event)
  errors_stack = EvilEvents::FailingSubscribersError.new

  event.__call_before_hooks__

  manager.subscribers.each do |subscriber|
    begin
      subscriber.notify(event)

      log_success(event, subscriber)
    rescue StandardError => error
      log_failure(event, subscriber)

      event.__call_on_error_hooks__(error)

      errors_stack << error
    end
  end

  event.__call_after_hooks__

  raise errors_stack unless errors_stack.empty?
end