ATND SearchをRails4にupdate

ATND Search をRails4にupdateしてみました。
versionup作業もこなれてきたせいか、作業自体はそれほど大変ではなかったです。

f:id:rochefort:20130630023223p:plain

参考

#400 What's New in Rails 4 - RailsCasts
RailsDiff
Ruby - Rails 4 で turbolinks をオフにする方法 - Qiita
jQueryの.hover()メソッドを.on()で使うためには? | THE HAM MEDIA BLOG
 

手順

1.まずはRails3系の最新にupdate

1) GemfileのRailsのバージョンを上げる
2) bundle update rails
3) rake rails:update
差分を確認しながら更新します。
4) テストが通ることを確認
 
RailsDiff
これとか結構便利です。
 

2.Rails4にupdate

基本は、1と同じです。
asciicast の内容がベータ版なので、今回は参考程度にさらっと読んだだけ。
手順としては下記を行いました。
 
1) 新規Railsプロジェクトを作成して見比べながら各種ファイルを移行(Gemfileなど)
ちなみにatndesearchはRails4からGemになったactiveresourceを利用しているので

gem 'activeresource', :require => 'active_resource'

Gemfileに追加が必要。
tourbolinkは不要なのでbundleから削除しています。
 
2) bundle update rails
3) rake rails:update
差分を確認しながら更新します。
4) scriptディレクトリが不要なので手動で削除
5) テストが通ることを確認

 

3. pluginの更新

1) bundle update
2) 各種修正
3) テストが通ることを確認
 
Railsあんまり関係ないですが
今回jQueryのバージョンが上がったことでdeprecatedなmethod(.live)の対応が必要でした。
jQueryの.hover()メソッドを.on()で使うためには? | THE HAM MEDIA BLOG  
あと、calendar部分はevent_calendar というのを使っているのですが
これのjQuery1.9対応ができていないので対応が必要です。

rails generate event_calendar --jquery

をした後、public下のjsとcssをassets下に移行して Adding jQuery 1.9 compatibility by terrell · Pull Request #82 · elevation/event_calendar
の対応を入れればOK。
(上でやった.liveを.onに変える対応です)
 

4.capistrano対応

以外と簡単やったなぁと思ってdeployするとエラーとなりました。
Upgrading to Rails 4 · capistrano/capistrano Wiki
 
ここに書かれている通りですが
manifest.ymlというファイルがあるようで
こいつをdeploy_root/assets_manifest.ymlとすればOKなようです。

$ find . -name "manifest.yml"
./shared/assets/manifest.yml
$ mv ./shared/assets/manifest.yml ./assets_manifest.yml

これをやって無事終了。