Module: Statecraft::Pipeline::Surface

Defined in:
lib/statecraft/pipeline/surface.rb

Overview

The record-facing API mixed into the model at mounting time. Bang variants return the created log record; non-bang variants return it too, or false on GuardFailed / InvalidTransition. Programmer errors and TransitionConflict — StaleTransition included — always raise.

Instance Method Summary collapse

Instance Method Details

#fire(event_name, metadata: {}, seen: nil) ⇒ Object



24
25
26
27
28
# File 'lib/statecraft/pipeline/surface.rb', line 24

def fire(event_name, metadata: {}, seen: nil)
  fire!(event_name, metadata: , seen: seen)
rescue GuardFailed, InvalidTransition
  false
end

#fire!(event_name, metadata: {}, seen: nil) ⇒ Object



20
21
22
# File 'lib/statecraft/pipeline/surface.rb', line 20

def fire!(event_name, metadata: {}, seen: nil)
  Pipeline.new(self).fire(event_name, metadata: , seen: seen)
end

#transition_to(to_state, metadata: {}, bypass_events: false, seen: nil) ⇒ Object



14
15
16
17
18
# File 'lib/statecraft/pipeline/surface.rb', line 14

def transition_to(to_state, metadata: {}, bypass_events: false, seen: nil)
  transition_to!(to_state, metadata: , bypass_events: bypass_events, seen: seen)
rescue GuardFailed, InvalidTransition
  false
end

#transition_to!(to_state, metadata: {}, bypass_events: false, seen: nil) ⇒ Object



10
11
12
# File 'lib/statecraft/pipeline/surface.rb', line 10

def transition_to!(to_state, metadata: {}, bypass_events: false, seen: nil)
  Pipeline.new(self).direct(to_state, metadata: , bypass_events: bypass_events, seen: seen)
end