miuchee を heroku に移行したメモです。
移行理由
- @mkouhei さんのサーバ(さくら)を仮想マシン環境で使わせてもらっていた
- さくら環境要因で時折メンテが必要になっていた
- 現状の heroku なら無料で使えそうな状況である
- sendgrid は無料で毎日400通メールが送れる
- 無料で一日 18h までしかサーバが動かせないが、基本バックグラウンドで動かすサービスなのでそれほど問題ない
- (個人的に) カジュアルに Ruby のバージョンをあげたり、デプロイしたりできる環境の方が扱いやすい
移行メモ
- 移行前、 Ruby 1.9.3, Rails 3.2.12 であった
- そのままのバージョンで heroku に移行しようかと思ったが、そもそも Ruby 1.9.3 環境をローカルに用意するのも大変
- Ruby のバージョンを上げると gem も動かなくなったりする
- どうせ手間がかかるなら最新にするのが心の健康によい
- RSpec のバージョンアップ、yujinakayama/transpec が活躍した
- 段階的に Rails 4.0, 4.1, 4,2 と上げていった
- 4.0 に上げた時点で、Rails がActiveRecord の size メソッドの落とし穴 - おもしろwebサービス開発日記チラシの裏 に書いてあるような仕様に変わったようで関連する箇所が壊れた
- テスト通す → warning消す → バージョン上げるの繰り返し
- あとは gem 関連でいくつかハマった気がするけど、基本的にgemを最新にしたら直った気がする
- ついでなので CI 環境や自動デプロイ、バックグラウンド用にRedis を用意したり、サーバを puma にしたりなど今どきの環境に合わせた
- どっちかというとこっちのほうが時間かかったかも
所感
それほど大きいサービスではないのもあるけど、Rails 3.2 から 4.2 へのバージョンアップはそれほど苦ではなかった印象。RSpec も transpec 使えばそれほど大変じゃない。
ただいきなりではなく、少しずつバージョンアップしていくのが一番いいと思います…><教訓を活かして packsaddle/ruby-saddler と willnet/herobu で定期的に bundle update するようにして現状対応しています