Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2005-10-28

[Ruby] BitChannel を読む (2)

def _handle(req)
  mid = "handle_#{req.cmd || 'view'}"
  return nil unless respond_to?(mid, true)
  __send__(mid, req)
end

handler.rb にあるメソッド。

req.cmd || 'view'

にあるような || の使い方がいろいろなところで発見できる。これまで自分はこういうケースを

req.cmd ? req.cmd : 'view'

などと書いてしまっていた。これじゃ Dry に反している。

この _handle メソッドが cmd に与えられた文字列から各種コマンドに対応するメソッド、そして WikiPage クラスを呼び出している。なので handle_diary メソッドや DiaryPage クラス、 テンプレートになる diary.rhtml を追加すれば日記ページが作れそうだ。

--

いままで他人のソースを見るのが嫌いでソースを読むことを避けていたが、今回はソースを読むのがすごく楽しい。職場で見かけるソースとはまったく違ってものすごく読みやすく理解しやすい。この分なら以前から目標にしていた Lily と Nadoka のソース読みも楽しくできるかもしれない。