module DataMapper::Is::StateMachine::InstanceMethods

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/dm-is-state_machine/is/state_machine.rb, line 100
def initialize(*args)
  super
  # ===== Run :enter hook if present =====
  return unless is_sm = model.instance_variable_get(:@is_state_machine)
  return unless machine = is_sm[:machine]
  return unless initial = machine.initial
  return unless initial_state = machine.find_state(initial)
  run_hook_if_present initial_state.options[:enter]
end

Public Instance Methods

run_hook_if_present(hook) click to toggle source

hook may be either a Proc or symbol

# File lib/dm-is-state_machine/is/state_machine.rb, line 111
def run_hook_if_present(hook)
  return unless hook
  if hook.respond_to?(:call)
    hook.call(self)
  else
    __send__(hook)
  end
end
transition!(event_name) click to toggle source
# File lib/dm-is-state_machine/is/state_machine.rb, line 120
def transition!(event_name)
  machine = model.instance_variable_get(:@is_state_machine)[:machine]
  column = machine.column
  machine.current_state_name = __send__(column)
  machine.fire_event(event_name, self)
  __send__("#{column}=", machine.current_state_name)
end