本日Herokuへアプリの試作版をデプロイしました。その際に「Precompiling assets failed.」とエラーが出たので、その原因と解決方法について紹介します。
概要
git push heroku master
ターミナルにて上記コマンドを実行すると、
エラーが出ます。
Precompiling assets failed.
!
! Push rejected, failed to compile Ruby app.
! Push failed
コンパイルがうまくいかないために、Herokuへのデプロイがうまくいかないようです。では、具体的にどの部分のコンパイルがうまくいっていないのか特定する必要があります。ターミナルの記述を遡って、どこにエラーが出ているのか確認します。
原因
ターミナルの記述を遡ると、errorらしき部分を見つけました。
Detecting rake tasks
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
rake aborted!
NameError: uninitialized constant Rack::MiniProfiler
エラーの原因を日本語訳すると、「Rack::MiniProfilerが初期化されていません」とのことですが、Rack::MiniProfilerに全く心当たりがないので、ネットで調べてみました。↓がその結果になります。
要約すると、Webサイトの素早さなどのパフォーマンスを計測してくれるGemです。「rails new」でアプリの大枠を生み出した時から、デフォルトで搭載されていたもので、特に気にせず利用していましたが、今回のエラーを引き起こしている原因に思えます。では、仮説を検証しましょう。
解決方法
Gemfileを確認します。
group :development do
(中略)
# gem 'rack-mini-profiler', '~> 2.0'
(中略)
end
MiniProfiler(正式名称はrack-mini-profiler)を発見したので、これをコメントアウトし、無効化します。また、これに付随して生成されたファイルの記述もコメントアウトして無効化します。
# Rack::MiniProfiler.config.start_hidden = true
以上で、「git push heroku master」を実行すると、無事デプロイできました。