Module: Igniter::Extensions::Contracts::SagaPack
- Defined in:
- lib/igniter/extensions/contracts/saga_pack.rb
Class Method Summary collapse
- .build(&block) ⇒ Object
- .ensure_installed!(profile) ⇒ Object
- .explain(result) ⇒ Object
- .install_into(kernel) ⇒ Object
- .manifest ⇒ Object
- .run(environment, inputs:, compensations:, compiled_graph: nil, &block) ⇒ Object
Class Method Details
.build(&block) ⇒ Object
27 28 29 |
# File 'lib/igniter/extensions/contracts/saga_pack.rb', line 27 def build(&block) Saga::CompensationSet.build(&block) end |
.ensure_installed!(profile) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/igniter/extensions/contracts/saga_pack.rb', line 47 def ensure_installed!(profile) return if profile.pack_names.include?(:extensions_saga) raise Saga::SagaError, "SagaPack is not installed in profile #{profile.fingerprint}; add Igniter::Extensions::Contracts::SagaPack" end |
.explain(result) ⇒ Object
43 44 45 |
# File 'lib/igniter/extensions/contracts/saga_pack.rb', line 43 def explain(result) result.explain end |
.install_into(kernel) ⇒ Object
23 24 25 |
# File 'lib/igniter/extensions/contracts/saga_pack.rb', line 23 def install_into(kernel) kernel end |
.manifest ⇒ Object
16 17 18 19 20 21 |
# File 'lib/igniter/extensions/contracts/saga_pack.rb', line 16 def manifest Igniter::Contracts::PackManifest.new( name: :extensions_saga, metadata: { category: :orchestration } ) end |
.run(environment, inputs:, compensations:, compiled_graph: nil, &block) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/igniter/extensions/contracts/saga_pack.rb', line 31 def run(environment, inputs:, compensations:, compiled_graph: nil, &block) profile = environment.profile ensure_installed!(profile) graph = compiled_graph || environment.compile(&block) Saga::Runner.new( compiled_graph: graph, profile: profile, compensations: compensations ).run(inputs: inputs) end |