Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2009-02-25

Bilboをruby 1.9.1で動かす

ここ(さくらのレンタルサーバー)のデータ容量が、いつの間にか1Gから3Gに増えていたことに気づき、余裕が出来たので、Bilbo(本ブログのCGIシステム)を1.9.1で動かすことに挑戦。

結論から言うと、2箇所修正したら動くようになった。今現在、この日記はruby 1.9.1で動いている。

ruby 1.9.1-p0をインストールして、動かしてみたらerbテンプレート内の下記箇所でさっそくエラーが。

<% @entries.each do |@entry| %>
  <%= render_view(:entry) %>
<% end %>

1行目のブロック引数。うんこれは知ってた……。Bilboの実装は1行の削減に重きを置いているので、1.9系では動かなくなることを承知で、奇跡を期待しつつ書いたコードだったけど、やっぱりダメだったか。

泣く泣く次のように書き換えた。もっといい書き方があればそうしたいのだけど、それが浮かばなかったから、上記のようになっていたわけで……。

<% @entries.each do |entry| %>
  <%= @entry = entry; render_view(:entry) %>
<% end %>

2つ目の修正は以下。

<% (config[:css] or 'stylesheets/bilbo.css').to_a.each do |e| %>

Stringオブジェクトからto_aがなくなった模様。次のように書き換えた。

<% [config[:css] || 'stylesheets/bilbo.css'].flatten.each do |e| %>

もうひとつ「Hash#index」で警告が出たので、ここは「key」に書き換えようかと思ったのだけど、そうすると1.8では動かないみたい。

action = (params[:action] || params.index(nil) || 'list').to_sym

上記のindexメソッドは保留。ここはどうしたらいいんだろう。

とりあえず動いているけど、本当にこれだけでいいのか?いちおう初めから1.9を意識してコードを書いていた(2年くらい前)からそれが良かったようだ。