以前、足の早いrailsのバージョンアップに抵抗する、という記事では、Railsのバージョンアップに流されないようにする方法をまとめましたが、今回はその逆。
Railsのバージョンアップを敢行しようと思います。
Rails1.2.2 -> Rails1.2.6へ
以前、サタデーコードフィーバーに行ったときに、railsで開発をしている人にお会いしました。
そのときに聞いたお話では、rails2.0系に上げる前に、1.2系の最新にして、そこで出た不具合を直してから2.0系に上げるといい、とのこと。
なので、まずは、railsを1.2.6にバージョンアップします。
を実行します。
おそらく、問題なく終了することでしょう。
次に、前回は1.2.2で動作していたrailsを1.2.6で動作するように変えます。
アプリ上ではどのバージョンでrailsを動かしているかは、プロジェクト直下(Rakefileがあるところ)でscript/aboutコマンドを打つと確認できます。
結果としては、こんな感じで出るんじゃないでしょうか。
About your application's environment
Ruby version 1.8.5 (i386-mswin32)
RubyGems version 0.9.0
Rails version 1.2.2
Active Record version 1.15.2
Action Pack version 1.13.2
Action Web Service version 1.2.2
Action Mailer version 1.3.2
Active Support version 1.4.1
Edge Rails revision 71
Application root C:/aptana/workspace/Tokyo24
Environment development
Database adapter mysql
これが確認できたら、environment.rbの9行目を
-
RAILS_GEM_VERSION = '1.2.6'
と直して、以下のコマンドを打っていきます。
・ rake rails:unfreeze -> rake rails:freeze:gems VERSION=1.2.6
どっちかのコマンドを打つとrailsのバージョンが1.2.6に固定されます。
違いは、前者はSubversionを使って取得する方法で、後者は自分のローカルから作る方法であるということ。
今のところ、1.2.6をインストールしたばかりなので、rake rails:unfreezeだけっていうのもアリでしょう。
ただし、ここで注意がひとつ。
Subversionで管理している場合、これを単純に行うと、.svnフォルダごと消去して新しいものを作ってしまうので、コミットができなくなります。
そのため、まずは、ワンクッションおいて、svn上のvendor/rails以下を消してコミットすることを忘れないようにしましょう。
ということで、ここまでの過程で、アプリ側の設定はこうなりました。
(ちなみに、僕は面倒くさがりなので、これはrails:unfreezeしかやらなかったときの結果です。あしからず)
About your application's environment
Ruby version 1.8.5 (i386-mswin32)
RubyGems version 0.9.0
Rails version 1.2.6
Active Record version 1.15.6
Action Pack version 1.13.6
Action Web Service version 1.2.6
Action Mailer version 1.3.6
Active Support version 1.4.4
Application root C:/aptana/workspace/Tokyo24
Environment development
Database adapter mysql
修正開始……してみたものの
warning: don't put space before argument parentheses
メソッドと括弧の間を空けない
……あれ、あと、ない? 本当かな??
Rails1.2.6 -> Rails2.0.2へ
ということで、railsを2.0.2へバージョンアップ。
また、environment.rbの9行目を
-
RAILS_GEM_VERSION = '2.0.2'
に変えて、アプリの設定をscript/aboutでチェック。
*******************************************************************
* config.breakpoint_server has been deprecated and has no effect. *
*******************************************************************
About your application's environment
Ruby version 1.8.5 (i386-mswin32)
RubyGems version 0.9.0
Rails version 2.0.2
Active Record version 2.0.2
Action Pack version 2.0.2
Active Resource version 2.0.2
Action Mailer version 2.0.2
Active Support version 2.0.2
Application root C:/aptana/workspace/Tokyo24
Environment development
Database adapter mysql
見慣れないものがつきました。
これはこれで追々調べるとして、いろいろと動作確認をしていくことにします。
動作確認してみる
500 Internal Server Error。
一瞬でした。ありがとうございました。
ということで、直したところを淡々とまとめていきます。
ひとつめ。
/!\ FAILSAFE /!\ Sun Apr 20 17:47:44 +0900 2008
Status: 500 Internal Server Error
A secret is required to generate an integrity hash for cookie session data. Use config.action_controller.session = { :session_key => "_myapp_session", :secret => "some secret phrase of at least 30 characters" } in config/environment.rb
これは、セッションの管理の仕方が変わったせい。
/tmp/sessionsの中身を消します。
でもって、environment.rbに次の内容を追加(40行目辺りに)。
-
config.action_controller.session = {
-
:session_key => '_TestApplication_session',
-
:secret => '何か30文字のランダムな英数字の文字列'
-
}
ふたつめ。
起動時に出ていたこれ。
config.breakpoint_server has been deprecated and has no effect.
これは、/config/environments/development.rbにあった
-
config.breakpoint_server = true
という記述を消せばおk。
みっつめ。
NoMethodError (undefined method `paginate' for #<xxxxController :0x39e5e28>):
paginateはプラグインに移ったらしいので、プラグインをインストールします。
これを打とうとしたら、このコマンドを打って、gemのバージョンを上げろとエラーが出たので、そのまま従います。
改めて、最初のコマンドを打つと、無事インストールされます。
ただし、将来的にはwill_paginateというプラグインに変えてくれー、とあるので、それは後で対応することにしましょう(ソースの修正もあるみたいなので)。
ところで、この警告、1.2.6の時点でもdevelopment.logに出てたんですね。
ここを見ろということだったのか、と今さら気づきましたorz
最後に
/config/environment/*や、/config/routes.rbを2.0.2仕様に上書き、/config/initializerの内容を追加、/script配下の内容を新しいバージョンの内容に更新します(この辺はrails2.0.2で適当にプロジェクトを作ってみて差分を地道に確認してみました)
あとは、
で、boot.rbやjavascriptがアップデートされるので、それを実行します。
軽くしか動かしてませんが、どうやら無事に動いてくれているみたいです。
ひとまず、ここまででバージョンアップはひととおり終了ですかね。
ローカルでは無事に動くみたいではありますが、もうしばらく様子見と行きたいところですね。
Via:
- railsのバージョンを指定してインストールする。 - 関打エアコン
- Tiger Technologies: Freezing Rails
- Buku nota aku | railsのfreezeとunfreeze
- rake rails:freeze:gems 済みのとき、rake rails:freeze:edge が .svn を消しやがるので、コミットできなくなる - ζ*’ワ’)ζ<うっうー遅レス。
- Ruby on Rails/任意のRailsのバージョンでアプリを動かすように設定したい場合の対応 - ARK-Web SandBox Wiki
- rails 1.2.6 から 2.0.1 に移行 - 夜の Discovery
- Kodougu を Rails 1.2 から Rails 2.0 に挙げた際のログを残しておく - Akasata's Page(あかさたのページ)

0 Responses to “足の早いrailsのバージョンアップに乗っかる”