Ruby on Rails 2.1アプリを2.3RC1で動くようにした

試しに、Ruby on Rails 2.1.2で開発された アプリ(画面数 70程度)を Ruby on Rails 2.3.0RC1 で動くように修正してみました。

http://www.rubyonrails.org/images/rails.png


変更したのは以下の点のみでした

1. ActiveRecord::Baseを継承してないモデルクラス

私は、app/modelにActiveRecord::Baseを継承してないモデルクラスをよく作るのですが、それらのクラスがコントローラ内で未定義になってしまいましたので app/controllers/application_controller.rb 内でそれらのクラスは require require_dependencyするようにしました。

2. relative_url_root()

ActionController::AbstractRequest#relative_url_root()が無くなっていました ^^); しかし、コードを検討したところ ActionController::Request#request_uri() を使うことで relative_url_root()は不要になりました。

3. GettextAPI

Gettextを止めてI18nを使ったので、当然 Gettextの _()メソッドが使えなくなりました。これは I18n.t()メソッドで代用できます。

4. enviroment.rb、 config/initializers/*.rb

rake rails:update し設定を修正

5. Geetextを止め、I18nを使う

学んだ事

私はコントロラー・ビューには極力ロジック等を書かないようにしているので、テスト(RSpec)もモデル中心ですが、今回試したアプリには2つのみですがコントロラー・ビューのテストがあったので、上の問題がテストで発見できました。

Ruby on Rails は恒に進化しています。したがってRailsで作ったアプリはいつかRails自身のバージョンアップの必要性が出くる可能性が高いです。その際にはコントロラー・ビュー部分のテストコードも必要だということです。
ただし、RailsAPIの使い方のテストなので全てのコントロラー・ビュー部分のテストコードは書く必要は無いと思います。