めもめも。エラーで困った人が検索して見つけて、無事解決できる事を願って。

手元のRailsのバージョンが3.2.0なんですが、Herokuの方がまだ正式対応してないんですよね。

結論としてはRails 3.2.0に対応したモードがβ版として用意されているので、それを指定してheroku createしてやる必要がありました。変更は(今はまだ)できません。一度削除して作り直しです。

出たエラー

heroku rails db:migrate
WARNING: #<ArgumentError: Illformed requirement ["#<Syck::DefaultKey:0x00000008c15900> 3.2.0"]>
# -*- encoding: utf-8 -*-
Gem::Specification.new do |s|
s.name = %q{actionpack}
s.version = "3.2.0"
...

ログを確認するとこんなのが。

heroku logs
"Could not find activemodel-3.2.0 in any of the sources"

原因

Railsのバージョンが3.2.0で、関連して他のgemもバージョンが上がっているのですが、Heroku側がそれに対応していませんでした。

Heroku側がどのバージョンの環境用なのかは、stackというコマンドで確認できます。

heroku stack
  aspen-mri-1.8.6
* bamboo-mri-1.9.2
  bamboo-ree-1.8.7
  cedar (beta)

いくつかあるんですね。このうちcedar (beta)がRails 3.2.0用のものであるらしいです。

対応

使用するstackを変更……できればよいのですが、どうも作り直すしかないみたいです。

Herokuのコンソールから一度Destroy Appして、cederを指定してcreateします。

heroku create --stack cedar

stackの変更について

stack自体はstack:migrateで変更できるんですが、cedarは駄目みたい。

heroku stack:migrate cedar
 !    Stack migration to/from Cedar is not available. Create a new app with --stack cedar instead.
heroku stack:migrate "cedar (beta)"
 !    Stack not found