Class: Aggro::SagaRunner

Inherits:
Object
  • Object
show all
Includes:
Aggregate
Defined in:
lib/aggro/saga_runner.rb,
lib/aggro/saga_runner/start_saga.rb

Overview

Private: Aggregate which runs saga processes.

Defined Under Namespace

Classes: StartSaga

Instance Method Summary collapse

Methods included from Aggregate

#initialize

Methods included from Logging

#log

Methods included from EventDSL

#handles_event?

Instance Method Details

#bindingsObject



23
24
25
# File 'lib/aggro/saga_runner.rb', line 23

def bindings
  @bindings ||= []
end

#cancel_bindingsObject



27
28
29
30
# File 'lib/aggro/saga_runner.rb', line 27

def cancel_bindings
  bindings.each(&:cancel)
  @bindings = []
end

#reject(reason) ⇒ Object



32
33
34
35
36
# File 'lib/aggro/saga_runner.rb', line 32

def reject(reason)
  did.rejected reason: reason

  teardown
end

#resolve(value) ⇒ Object



38
39
40
41
42
# File 'lib/aggro/saga_runner.rb', line 38

def resolve(value)
  did.resolved value: value

  teardown
end

#transition(step_name, *args) ⇒ Object



44
45
46
47
48
49
# File 'lib/aggro/saga_runner.rb', line 44

def transition(step_name, *args)
  cancel_bindings
  did.transitioned state: step_name, args: args

  run_step step_name, args
end