class Sequent::Util::DryRun::RecordingEventPublisher

Records which Projector’s and Workflow’s are executed

Attributes

projectors[R]
workflows[R]

Public Class Methods

new(result) click to toggle source
Calls superclass method
# File lib/sequent/util/dry_run.rb, line 63
def initialize(result)
  super()
  @result = result
end

Public Instance Methods

process_event(event) click to toggle source
# File lib/sequent/util/dry_run.rb, line 68
def process_event(event)
  [*Sequent::Core::Workflow.descendants, *Sequent::Core::Projector.descendants].each do |handler_class|
    next unless handler_class.handles_message?(event)

    if handler_class < Sequent::Workflow
      @result.invoked_workflow(EventInvokedHandler.new(event, handler_class))
    elsif handler_class < Sequent::Projector
      @result.invoked_projector(EventInvokedHandler.new(event, handler_class))
    else
      fail "Unrecognized event_handler #{handler_class} called for event #{event.class}"
    end
  rescue StandardError
    raise PublishEventError.new(handler_class, event)
  end
end