module Statesman::Events
Constants
- VERSION
Public Class Methods
included(base)
click to toggle source
# File lib/statesman/events.rb, line 6 def self.included(base) unless base.respond_to?(:states) raise "Statesman::Events included before/without Statesman::Machine" end base.extend(ClassMethods) end
Public Instance Methods
available_events()
click to toggle source
# File lib/statesman/events.rb, line 44 def available_events state = current_state self.class.events.select do |_, transitions| transitions.key?(state) end.map(&:first) end
trigger(event_name, metadata = {})
click to toggle source
# File lib/statesman/events.rb, line 38 def trigger(event_name, metadata = {}) self.trigger!(event_name, metadata) rescue Statesman::InvalidTransitionError, Statesman::GuardFailedError false end
trigger!(event_name, metadata = {})
click to toggle source
# File lib/statesman/events.rb, line 23 def trigger!(event_name, metadata = {}) transitions = self.class.events.fetch(event_name) do raise Statesman::InvalidTransitionError, "Event #{event_name} not found" end new_state = transitions.fetch(current_state) do raise Statesman::InvalidTransitionError, "State #{current_state} not found for Event #{event_name}" end transition_to!(new_state.first, metadata) true end