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年くらい前)からそれが良かったようだ。