herokuでruby1.8.7を使用する

現在、herokuのrubyのバージョンは、デフォルトで1.8.6ですが、変更できるようになっています。
開発環境が1.8.7だったので、知らずに1.8.6に存在しないメソッドを使って実装してしまい、herokuにpushして動きませんでした。
ログを見て一瞬途方に暮れましたが、先月から1.8.7と1.9.1が提供されていて助かりました。

NoMethodError (undefined method `product' for [3698, 360]:Array):

create or migrate

新規でサイトをherokuに作成する際にはスタックを選択できるそうです。

$ heroku create test-sushi-app --stack bamboo-ree-1.8.7
Created http://test-sushi-app.heroku.com/ | git@heroku.com:test-sushi-app.git

すでに稼働しているサイトのスタックを変更する際にはマイグレートを行います。

$ heroku stack:migrate bamboo-ree-1.8.7
----> Preparing to migrate myapp from aspen-mri-1.8.6 to bamboo-ree-1.8.7

.gemsファイルの用意

1.8.7が動くスタック"Bamboo"にはgemが何も入っていません。Railsもです。なので.gemsファイルを用意します。

.gemsファイルは、gemの名前を記載した拡張子.gemsのテキストファイルです。
.gemではなく、.gemsと複数形であることに注意して下さい。
初めて.gemsファイルを作ったときはファイル名の間違いに気づかず悩みました。

rails -v 2.3.5
pg

コミット

コードに何も変更がない場合は、リビルドが起きるようにgitでダミーのコミットを行います。

$ echo >> Rakefike && git commit -a -m "migrate to bamboo stack"
[master a9d5d99] migrate to bamboo stack
 1 files changed, 3 insertions(+), 1 deletions(-)

マイグレート

次いでマイグレートを実行します。

$ git push heroku master
Enter passphrase for key '/c/Users/toshifusa/.ssh/id_rsa':
Counting objects: 20, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (13/13), 35.11 KiB, done.
Total 13 (delta 7), reused 0 (delta 0)

-----> Heroku receiving push
-----> Migrating from aspen-mri-1.8.6 to bamboo-ree-1.8.7

-----> Installing gem rails 2.3.5 from http://gemcutter.org, http://gems.rubyfor
ge.org
       Successfully installed activesupport-2.3.5
       Successfully installed activerecord-2.3.5
       Successfully installed actionpack-2.3.5
       Successfully installed actionmailer-2.3.5
       Successfully installed activeresource-2.3.5
       Successfully installed rails-2.3.5
       6 gems installed

-----> Installing gem pg from http://gemcutter.org, http://gems.rubyforge.org
       Building native extensions.  This could take a while...
       Successfully installed pg-0.9.0
       1 gem installed

-----> Rails app detected
       Compiled slug size is 6.4MB
-----> Launching......... done
       http://bwz.heroku.com deployed to Heroku

-----> Migration complete, your app is now running on bamboo-ree-1.8.7

To git@heroku.com:bwz.git
   66a5f0b..60f6767  master -> master


本当にこれだけで簡単にマイグレートが完了しました。