TakayukiKoyama Geek Blog

Create, Entertain, Experience

Herokuにデプロイしたときの「Precompiling assets failed.」エラーについて

久々に Heroku を使ったら、完全に手順を忘れた。

新しくRailsアプリ作ってデプロイすると、Herokuの「Activity」に以下のエラーが出てうまくいかない。

       Tasks: TOP => assets:precompile
       (See full trace by running task with --trace)
 !
 !     Precompiling assets failed.
 !
 !     Push rejected, failed to compile Ruby app.
 !     Push failed

 一見すると、assets:precompileの設定の問題かなと思ったが、ログをスクロールしていくと以下のようなエラーがある。(エラー内容はプロジェクトによって異なる)

       rake aborted!
       Sprockets::FileNotFound: couldn't find file 'xxx.png'
       (in /tmp/build_xxxxx/<AccountName>-<AppName>-xxxxxx/app/assets/stylesheets/application.css.scss)

 エラー内容はググる等で解決するとして、そもそもローカル環境上でもproduction時のassets:precompileもエラーになっていた。ローカル上で成功すれば、heroku側も成功するはずなので、ローカル上のassets:precompileが正常に動くようにしてからデプロイすると良い。

$ RAILS_ENV=production bundle exec rake assets:precompile

 ちなみに、「Precompiling assets failed.」でググると「config/application.rb」の「config.assets.initialize_on_precompile = true」をfalseにするようにみたいなことを書いてあったりするが、Rails4ではむしろtrueじゃないと通らなかった。