Module: Igniter::Extensions::Contracts::JournalPack
- Defined in:
- lib/igniter/extensions/contracts/journal_pack.rb
Class Method Summary collapse
- .apply_journal_effect(invocation:) ⇒ Object
- .execute_journaled_inline(invocation:) ⇒ Object
- .install_into(kernel) ⇒ Object
- .journal ⇒ Object
- .manifest ⇒ Object
- .reset_journal! ⇒ Object
Class Method Details
.apply_journal_effect(invocation:) ⇒ Object
36 37 38 39 |
# File 'lib/igniter/extensions/contracts/journal_pack.rb', line 36 def apply_journal_effect(invocation:) journal[:effects] << invocation.to_h invocation.payload end |
.execute_journaled_inline(invocation:) ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/igniter/extensions/contracts/journal_pack.rb', line 41 def execute_journaled_inline(invocation:) journal[:executions] << invocation.to_h result = invocation.runtime.execute( invocation.compiled_graph, inputs: invocation.inputs, profile: invocation.profile ) journal[:results] << result.to_h result end |
.install_into(kernel) ⇒ Object
18 19 20 21 22 |
# File 'lib/igniter/extensions/contracts/journal_pack.rb', line 18 def install_into(kernel) kernel.effects.register(:journal, method(:apply_journal_effect)) kernel.executors.register(:journaled_inline, method(:execute_journaled_inline)) kernel end |
.journal ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/igniter/extensions/contracts/journal_pack.rb', line 24 def journal @journal ||= { effects: [], executions: [], results: [] } end |
.manifest ⇒ Object
8 9 10 11 12 13 14 15 16 |
# File 'lib/igniter/extensions/contracts/journal_pack.rb', line 8 def manifest Igniter::Contracts::PackManifest.new( name: :extensions_journal, registry_contracts: [ Igniter::Contracts::PackManifest.effect(:journal), Igniter::Contracts::PackManifest.executor(:journaled_inline) ] ) end |
.reset_journal! ⇒ Object
32 33 34 |
# File 'lib/igniter/extensions/contracts/journal_pack.rb', line 32 def reset_journal! journal.each_value(&:clear) end |