Sha256: 0ce2a930b17334ec4ea2eef8a069719f630c2eb2d18133017c700b7b62a5e475

Contents?: true

Size: 1.12 KB

Versions: 17

Compression:

Stored size: 1.12 KB

Contents

# A valid example
class TrafficLight
  include DataMapper::Resource

  property :id, Serial # see note 1

  is :state_machine, :initial => :green, :column => :color do
    state :green,  :enter => Proc.new { |o| o.log << "G" }
    state :yellow, :enter => Proc.new { |o| o.log << "Y" }
    state :red,    :enter => Proc.new { |o| o.log << "R" }

    event :forward do
      transition :from => :green,  :to => :yellow
      transition :from => :yellow, :to => :red
      transition :from => :red,    :to => :green
    end

    event :backward do
      transition :from => :green,  :to => :red
      transition :from => :yellow, :to => :green
      transition :from => :red,    :to => :yellow
    end
  end

  before :transition!, :before_hook
  after  :transition!, :after_hook

  def before_hook
    before_hook_log << attribute_get(:color)
  end

  def after_hook
    after_hook_log << attribute_get(:color)
  end

  def log; @log ||= [] end
  def before_hook_log; @bh_log ||= [] end
  def after_hook_log; @ah_log ||= [] end

  attr_reader :init
  def initialize(*args)
    (@init ||= []) << :init
    super
  end

end

TrafficLight.auto_migrate!

Version data entries

17 entries across 17 versions & 2 rubygems

Version Path
ardm-is-state_machine-1.2.0 spec/examples/traffic_light.rb
dm-is-state_machine-1.2.0 spec/examples/traffic_light.rb
dm-is-state_machine-1.2.0.rc2 spec/examples/traffic_light.rb
dm-is-state_machine-1.2.0.rc1 spec/examples/traffic_light.rb
dm-is-state_machine-1.1.0 spec/examples/traffic_light.rb
dm-is-state_machine-1.1.0.rc3 spec/examples/traffic_light.rb
dm-is-state_machine-1.1.0.rc2 spec/examples/traffic_light.rb
dm-is-state_machine-1.1.0.rc1 spec/examples/traffic_light.rb
dm-is-state_machine-1.0.2 spec/examples/traffic_light.rb
dm-is-state_machine-1.0.1 spec/examples/traffic_light.rb
dm-is-state_machine-1.0.0 spec/examples/traffic_light.rb
dm-is-state_machine-1.0.0.rc3 spec/examples/traffic_light.rb
dm-is-state_machine-1.0.0.rc2 spec/examples/traffic_light.rb
dm-is-state_machine-1.0.0.rc1 spec/examples/traffic_light.rb
dm-is-state_machine-0.10.2 spec/examples/traffic_light.rb
dm-is-state_machine-0.10.1 spec/examples/traffic_light.rb
dm-is-state_machine-0.10.0 spec/examples/traffic_light.rb