sessanの日記

主に開発技術関連でお勉強したことをまとめていくサイトです。

Herokuで稼働しているRailsをバージョン3.2.10に上げるために行ったこと

rails 3.2.10でセキュリティパッチが当たっていたので、herokuで稼働中のサービスのrailsのバージョンを上げたときの作業メモ。

前提

  • Herokuでrailsアプリを稼働していた。railsのバージョンは3.2.8
  • rubyのバージョンは1.9.2であった

手順

  1. rails 3.2.10で推奨されているrubyのバージョンがないか確認
  2. ローカルのruby のバージョンを1.9.3-p327にアップデート
  3. railsのバージョンをアップデート
  4. heroku上のrubyのバージョンを変えるためにGemfileにrubyのバージョンを明記
  5. アプリのローカルでのテスト
  6. herokuにアプリをデプロイ
  7. heroku上のrubyのバージョンを確認
  8. 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と一緒にコンパイルしながら入れる。

  1. rvmのアップデート - sessanの日記
  2. rvmで新しいバージョンのrubyをインストールする - sessanの日記

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のバージョンと同じかを確認しておく。

heroku上で動いているrubyのバージョンを確認する方法 - sessanの日記

8. heroku上でのテスト

これも頑張ってやってください。