AASMはRubyで状態遷移を実装できるGemです。
導入
$ gem install aasm
使い方
クラスの中で呼び出すDSLになっています。
たとえば…次のような、シンプルな状態遷移図を実装する場合は
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」の方なんですねぇ(白目