金子邦彦研究室プログラミングRuby プログラミングaasm を使って,Ruby のクラスに状態遷移の機能を付与する

aasm を使って,Ruby のクラスに状態遷移の機能を付与する

aasm とは,Ruby のクラスに,状態遷移の機能を簡単に付けることができる機能を持ったソフトウェア.

前準備

  1. Linux での Ruby 処理系のインストールと, RubyGems のインストールが済んでいること
  2. JRuby を使う場合に限り,Windows での Java JDK 18 (Java SE Development Kit 18) のインストールが済んでいること.

aasm を gem を使ってインストール

  1. gem update」の実行

    
    gem update
    

    [image]
  2. 「gem install aasm --include-depenencies」の実行

    
    gem install aasm --include-depenencies
    

    [image]
  3. インストール終了の確認

    エラーメッセージが出ていないことを確認する.

    [image]

aasm の使用例

[image]


#! ruby -Ks
# coding: windows-31j

require 'pp'
require 'rubygems'
require 'aasm'

class BendingMachine
  include AASM

  # aasm_intial_state <初期状態>
  # 初期状態は,シンボルまたは文字列または Proc
  aasm_initial_state :客待ち

  # 状態には、初期状態を忘れずに含めること
  aasm_state :客待ち
  aasm_state :お金投入中

  # 状態遷移
  aasm_event :お金投入 do
    transitions :to => :お金投入中, :from => [:客待ち]
  end

  # 状態遷移
  aasm_event :お金残高なし do
    transitions :to => :客待ち, :from => [:お金投入中]
  end 
end

if __FILE__ == $0
  m = BendingMachine.new()
  # 現在の状態の表示
  print "現在の状態は: "
  print m.aasm_current_state, "\n"

  m.お金投入
  print "現在の状態は: "
  print m.aasm_current_state, "\n"

  m.お金残高なし
  print "現在の状態は: "
  print m.aasm_current_state, "\n"
end

■ 実行結果の例

[image]