Heroku に Rails 3.1 アプリを git push すると rake assets:precompile でエラーが出るときの対処法
Heroku で Rails 3.1 アプリを git push heroku master するとこんなエラーが出ることがあると思います。
-----> Preparing app for Rails asset pipeline Running: rake assets:precompile rake aborted! Failed to connect to a master node at localhost:27017 Tasks: TOP => environment (See full trace by running task with --trace) Precompiling assets failed, enabling runtime asset compilation Injecting rails31_enable_runtime_asset_compilation Please see this article for troubleshooting help: http://devcenter.heroku.com/articles/rails31_heroku_cedar#troubleshooting
で、その末尾に書いてある URL を読むと、どうもこのタスクが実行される時点では環境変数(heroku config で見れます)が存在してないらしい。なので、config/database.yml や config/mongoid.yml で、ENV["DATABASE_URL"] とか ENV["MONGOLAB_URI"] を使用してると、nil が返り空白になり、デフォルトアドレス・デフォルトポート(この場合は localhost:27017)を見に行ってコケるらしい。
んでもって、何もコミットせずに再度 git push heroku master とかしてみたら、"Everything up-to-date" とか出やがる。あー、git push 自体は受け入れられてるのね。
ってことで、
$ heroku run rake assets:precompile
と後付けでやったところ、うまく動きましたとさ、めでたしめでたし。
(staging 環境とか作ってる人は適当に --app つけたりして脳内で補って下さい)