>>589
メソッド定義は冗長になるが、正攻法なコードを。

def initialize(options = {})
  @turn = nil
  @actions = []
  for key, value in options
    case key
    when :turn
      @turn = value
    when :actions
      @actions = value
    else
      raise ArgumentError
    end
  end
end
attr_accessor :turn, :actions

使い方は Turn.new :turn => 1, :actions => [:hoge, :fuga, :foo] で。
このTurnクラスのような単なる構造体/レコードをたくさん定義する必要があるなら、
上のやり方だと面倒に感じるかもしれない。もしメタプログラミングに慣れれば、
自分で(Structのように)クラスを返すnewメソッドを定義できるようになる。
(普通はインスタンスを返すよね?)以下はそんなクラスの例。

Turn1 = MyStruct.new :turn, :action