Herokuで動いている「むびりす」をRails 3から4に移行してみた。非互換部分のコード修正は意外に少なく、いくつかのExceptionやWarningを潰すだけで済んだ。ついでにRubyも2.0.0に上げている。
工夫したのは、自動インジェクションされなくなったrails_log_stdoutとrails3_serve_static_assetsの扱い。そして、まだRails 4をサポートしていないheroku-deflaterの扱いだ。
rails_log_stdout、rails3_serve_static_assetsの扱い
rails_log_stdoutとrails3_serve_static_assetsは、「Getting Started with Rails 4.x on Heroku」に書かれているgemには頼らず、以下のようにした。
- config.ru
$stdout.sync = true
- config/environments/production.rb
config.logger = Logger.new(STDOUT) config.logger.level = Logger::INFO config.serve_static_assets = true
heroku-deflaterの扱い
heroku-deflaterは、作者がRails 4を使っておらず、サポートされるのに時間がかかりそうなので、Forkしてしまった。
Rails 4に移行した理由
Rails 3ではSweeperにバグがあり、キャッシュがうまく消せなかった。Rails 4ではプラグイン化され、バグも直っているようなので、移行することにした。Sweeperの挙動はまだ試していない。
ちなみに「むびりす」では、DB処理よりビューのレンダリングに時間がかかっている。速度のみを求めているわけではない(RailsやHerokuを使っているぐらいだし)とはいえ、速いにこしたことはない。
追記(2013-05-05)
heroku-deflaterがRack 1.5をサポートしました。
これで、Rails 4アプリにも普通に導入できます。ありがたい限りです。
