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
本当にこれだけで簡単にマイグレートが完了しました。