rails 3.2.10でセキュリティパッチが当たっていたので、herokuで稼働中のサービスのrailsのバージョンを上げたときの作業メモ。
前提
- Herokuでrailsアプリを稼働していた。railsのバージョンは3.2.8
- rubyのバージョンは1.9.2であった
手順
- rails 3.2.10で推奨されているrubyのバージョンがないか確認
- ローカルのruby のバージョンを1.9.3-p327にアップデート
- railsのバージョンをアップデート
- heroku上のrubyのバージョンを変えるためにGemfileにrubyのバージョンを明記
- アプリのローカルでのテスト
- herokuにアプリをデプロイ
- heroku上のrubyのバージョンを確認
- heroku上でのテスト
1. rails 3.2.10で推奨されているrubyのバージョンがないか確認
これは、railsのリリースノートを視るだけ。3.2.9と3.2.10を見た。もちろん内容も確認。
Riding Rails: Rails 3.2.9 has been released!
Riding Rails: [ANN] Rails 3.2.10, 3.1.9, and 3.0.18 have been released!
3.2.9のリリースノートにruby 1.9.3-p327が推奨と書いてあったので、これまで怠けてたrubyのバージョンをいよいよアップデートすることにした。
2. ローカルのruby のバージョンを1.9.3-p327にアップデート
この辺は別のエントリに書いたので、以下を参照。openssl周りでハマりまくった。
rvmをアップデートしてから、ruby1.9.3をopensslと一緒にコンパイルしながら入れる。
3. railsのバージョンをアップデート
色々やり方はありそうだけど、自分は単純に
> bundle update rails
とした。
4. heroku上のrubyのバージョンを変えるためにGemfileにrubyのバージョンを明記
Gemfileの先頭に以下のようにrubyのバージョンを記載。
source 'https://rubygems.org' ruby '1.9.3' gem 'rails', '~>3.2' ##以下省略
この辺を参考に
Heroku | Multiple Ruby Version Support on Heroku
※最初は、gem 'rails', '3.2.10'とか書いていたけど、tkawachi先生の指摘により、gem 'rails', '~> 3.2'に変えた。これで、今後はbundle update railsだけでいけるはず。
5. アプリのローカルでのテスト
これは、頑張ってやって下さい。単体テスト・結合テストが充実していると楽
6. herokuにアプリをデプロイ
gitでherokuのリポジトリにpushするだけ。
> git push hogehoge master
7. heroku上のrubyのバージョンを確認
herokuのrubyはバージョンを指定することはできるけど、パッチレベルは指定できないらしい。
念のため、ローカルにインストールしたrubyのバージョンと同じかを確認しておく。
8. heroku上でのテスト
これも頑張ってやってください。