読者です 読者をやめる 読者になる 読者になる

babie steps

作業療法記録

Heroku に Rails 3.1 アプリを git push すると rake assets:precompile でエラーが出るときの対処法

rails3 heroku

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 つけたりして脳内で補って下さい)