RoR4がリリースされたので、手持ちのプロジェクトを4.0.0にアップデートしてみた。
具体的な移行方法は、既にウェブ上に記事が沢山あるので実際にハマった点だけを記す。
簡単にまとめると
- まず3.2系の最新版で動くようにする -> Ruby 2.0で動かす -> Rails 4へのアップデート という手順をしっかりやったほうがいい。
- herokuで動かすにはいくつか設定が必要。ローカルでRubyとRailsのアップデートをしてから、最後にherokuにdeployしてあれ動かない、となると対応が面倒くさいので、ワンステップずつdeployして動作確認していったほうがいい。
- 他は割と公式ガイド通りでスムーズ。
まずは3.2系の最新版で動くようにする。
古いRailsでは、一見Ruby 2.0で動作しているように見えても部分的におかしな挙動をすることがある。これはアップデートの過程での動作確認を混乱させることになる。(そのせいで最初結構ハマった)
まず3.2系の最新版にアップデートを行っておく 。(2013年6月現在3.2.13
で確認)
また、必要に応じて他のgemも最新版にしておいたほうがよい。
Ruby 2.0をインストール
開発マシンにRuby2.0をrvmでインストール。
一部マシンではopensslのバージョンが古かったため、途中でエラーがおきたが、brewで1.0.1eをインストール して解決。
heroku上にRuby 2.0を使う場合にはGemfileにruby "2.0.0"
を追加すればOK。
Rails 4へアップデート
- いくつか古いgemがrails 4で動かなかったので、先にアップデートした。
delayed_job
、lazy_high_charts
等。
実装の変更
一部実装をRoR 4用に変更する。
だいたい問題なかったが、下記の点で少しハマった。
herokuでCSS / JSが動かない
Production環境でアセット(CSS / JS)の配信が行われなくなった。
config.serve_static_assets = true
にして解決。
ajaxが動かない
jQueryのバージョンアップにともない、.live
が使えなくなっていた。
.on
へ置き換える形で実装変更。
参考: http://myjquery.blog.fc2.com/blog-entry-14.html#removed-3