Rails 2.0.1への移行

以前作成したRails1.2.6用のコードをRails 2.0.1に移行した時の作業記録。1.2.6に移行してから実施したので、この作業はそれほど時間はかかなかった。

1. environment.rbでRAILS_GEM_VERSIONを2.0.Xに変更

RAILS_GEM_VERSION = '2.0.1' unless defined? RAILS_GEM_VERSION
この修正は次のrakeを実行する前に行う必要がある。(rakeがバージョンを参照するので)

2. 現在のディレクトリのRailsファイル群を更新

rake rails:update

これにより、config/boot.rb、public/javascriptsディレクトリのJavascriptファイル、scriptディレクトリのスクリプトファイルが更新される。

3. セッションキーとシークレットの設定

以下のようにセッションキーとシークレットをconfig/environment.rbに追加する。どのように生成されるかは空のrailsプロジェクトを生成するとよくわかる。

Rails::Initializer.run do |config|
      ...
  config.action_controller.session = {
    :session_key => '_yourapp_session',
    :secret      => '0192838746074358285ab981273b1123 ..... '
  }
       ...
end

4. application.rbのセッションキー

1.2.XまでのRailsではapplication.rbでセッションキーの設定を行っていたが、上記のようなRails.Initializer.runで設定するように変わったのでコメントアウトする。

#  session :session_key => '_cathay_session_id'

代わりに、新しいRailsではCSRFのためにapplication.rbのデフォルトテンプレートが生成するコードをapplication.rbに反映させる。(ここでは入れておくだけ。必要に応じて設定する)

# Filters added to this controller apply to all controllers in the application.
# Likewise, all the methods added will be available for all controllers.

class ApplicationController < ActionController::Base
  helper :all # include all helpers, all the time

  # See ActionController::RequestForgeryProtection for details
  # Uncomment the :secret if you're not using the cookie session store
  protect_from_forgery # :secret => '852af24c2b356e52abc35dc3721d4ced'
end


この段階でそのまま./script/serverなどで動作を確認できるはず。