おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Rails 2.3.5をRails 3.0にアップグレードする方法

一人で使ってるscaffoldに毛が生えたようなRails 2.3.5のアプリをRails 3.0にアップグレードするまでのメモです。あんまり情報もないので手探りでやってみて、その後に「こうやるといいのかなー」というのをまとめました。もっといい方法あったら教えてください。

Rails 3.0は既にインストール済みのものとして話を進めてます。

rails_upgradeのインストール

Rails 3 へのアップグレードを補助するプラグイン rails_upgrade をインストール

script/plugin install git://github.com/rails/rails_upgrade.git

バックアップ

rake rails:upgrade:backup

で主要なファイルをバックアップ

Gemfileの作成

rake rails:upgrade:gems

の出力結果をGemfileに貼り付け。さらに

# beta版のrails3.0を使うのでコメントアウト
# path "/path/to/rails", :glob => "{*/,}*.gemspec"
gem "rails", "3.0.0.beta"
gem "mysql"
gem "rspec", ">= 2.0.0.beta.1", :group => :test
gem "rspec-rails", ">= 2.0.0.beta.1", :group => :test

のように書き換え(適宜自分の環境に合うように書き換えてください)。

routes.rbの書き換え

rake rails:upgrade:routes

の出力結果をconfig/routes.rbにコピペ

config/application.rbの作成

rake rails:upgrade:configuration

の出力結果をconfig/application.rbへ

少しずつRails2依存コードを減らす

rake rails:upgrede:check

を実行→該当部分の修正をして出力結果を一個ずつ減らしていく。

その他Rails3で必要なファイルを作成

Rails.rootから一つ上のディレクトリにて

rails プロジェクト名

のようにしてRails3で必要になるファイルを生成。この際に上書きしても良さそうなファイルは上書きする。

サーバの起動

rails s

としてwebrickを起動してみる。エラーなら該当する部分を修正する。

例えば

  • rails_xssをインストールしてたら削除する。
  • config/initializers/new_rails_defaults.rbを削除する

などなど。webrickが起動するまで繰り返す。

サーバ起動後

一通り操作を試してみて動かない部分を調べる。

例えばlink_to_remoteは動かないので

  1. jquery-ujsをインストール
  2. link_to_remoteをlink_toに書き換えて:remote => trueを付ける

などとする。

簡単にまとめると

  1. バックアップ
  2. 設定ファイルの作成/修正
  3. railsコマンドで必要なファイルの生成/上書き
  4. あとはトライアンドエラー

という感じでしょうか。もっとスマートにアップグレードできたらいいんですけどねー