module NxtStateMachine::Hash::ClassMethods
Public Instance Methods
state_machine(name = :default, state_attr: :state, target: nil, &config)
click to toggle source
Calls superclass method
# File lib/nxt_state_machine/integrations/hash.rb, line 4 def state_machine(name = :default, state_attr: :state, target: nil, &config) machine = super( name, state_attr: state_attr, target: target, &config ) machine.get_state_with do |current_target| if current_target[state_attr].nil? current_target[state_attr] = initial_state.enum end current_target[state_attr] end machine.set_state_with do |current_target, transition| transition.run_before_callbacks result = set_state(current_target, transition, state_attr) transition.run_after_callbacks transition.run_success_callbacks || result rescue StandardError => error current_target[state_attr] = transition.from.enum if error.is_a?(NxtStateMachine::Errors::TransitionHalted) false else raise end end machine.set_state_with! do |current_target, transition| transition.run_before_callbacks result = set_state(current_target, transition, state_attr) transition.run_after_callbacks transition.run_success_callbacks || result rescue StandardError current_target[state_attr] = transition.from.enum raise end machine end