Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Rubyで状態遷移を実装できるGem「AASM」(その1_導入)

AASMはRubyで状態遷移を実装できるGemです。

導入

$ gem install aasm

使い方

クラスの中で呼び出すDSLになっています。
たとえば…次のような、シンプルな状態遷移図を実装する場合は
f:id:shuzo_kino:20150301205341p:plain

require "aasm"

class AASM_Sample
  include AASM

  aasm do
    state :sleep, :initial => true
    state :sence
    state :transmit

    event :sleep do
      transitions :from => :transmit, :to => :sence
    end

    event :sence do
      transitions :from => :sleep, :to => :transmit
    end

    event :transmit do
      transitions :from => :sence, :to => :sleep
    end
  end
end

as = AASM_Sample.new
p as.sleep?
p as.may_sence?
p as.sence { p 42}
p as.sleep?
p as.sence?

とやれば、出力として

true
true
42
true
false
false

を得ます。

どうでもいい話

初見で自衛業さんの誘導弾かな?とか思いましたが、画像検索すると、同名の仏国製対地誘導弾の画像がでてきます。世界的には「sea」よか「surface」の方なんですねぇ(白目