Module: Igniter::Extensions::Contracts::SagaPack

Defined in:
lib/igniter/extensions/contracts/saga_pack.rb

Class Method Summary collapse

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

Raises:



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

.manifestObject



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