Sha256: acaa60687b71dbb84fd3d5d909b9ac3051d45c5ab0c30a78af7fd9811b940c6d
Contents?: true
Size: 939 Bytes
Versions: 2
Compression:
Stored size: 939 Bytes
Contents
# frozen_string_literal: true module Dynflow module Stateful def self.included(base) base.extend ClassMethods end module ClassMethods def states raise NotImplementedError end def state_transitions raise NotImplementedError end end def states self.class.states end def state_transitions self.class.state_transitions end attr_reader :state def state=(state) set_state state, false end def set_state(state, skip_transition_check) state = state.to_sym if state.is_a?(String) && states.map(&:to_s).include?(state) raise "unknown state #{state}" unless states.include? state unless self.state.nil? || skip_transition_check || state_transitions.fetch(self.state).include?(state) raise "invalid state transition #{self.state} >> #{state} in #{self}" end @state = state end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dynflow-1.9.0 | lib/dynflow/stateful.rb |
dynflow-1.8.3 | lib/dynflow/stateful.rb |