kakuyonの日記

Webアプリやセキュリティに関する事を書いていけたらと考えています。

HerokuがRailsのアセットパイプラインを読み取ってくれない問題

経緯

Rails Tutorialの5章終了! Herokuへデプロイ!
最後にいざ動作確認、といったところで、
f:id:kakuyon:20180715022725p:plain
何故かエラー…
rails testは問題無く通過できたのに…


修正作業へ

とりあえずログを見ろと言われてるので、heroku logsで確認

2018-07-14T17:21:49.698143+00:00 app[web.1]: F, [2018-07-14T17:21:49.698072 #4] FATAL -- : [7859d62e-523d-48d0-97fa-4ea4ce8bac18]
2018-07-14T17:21:49.698250+00:00 app[web.1]: F, [2018-07-14T17:21:49.698175 #4] FATAL -- : [7859d62e-523d-48d0-97fa-4ea4ce8bac18] ActionView::Template::Error (The asset "rails.png" is not present in the asset pipeline.):
2018-07-14T17:21:49.698483+00:00 app[web.1]: F, [2018-07-14T17:21:49.698416 #4] FATAL -- : [7859d62e-523d-48d0-97fa-4ea4ce8bac18] 10: <%= link_to "Sign up now!", signup_path, class: "btn btn-lg btn-primary" %>

一部抜粋

よく見てみると、not present in the asset pipelineとか言われてますね。
この時は、なんとなく画像が認識されていないんだろうなーくらいに捉えてました。

画像を利用していないページにアクセスすると、表示はされるものの、
スタイルシートが反映されていない事に気づき、ここでようやくアセットパイプラインが認識されていないと判断。


対策法を調べてみると、デプロイする直前に

rake assets:precompile RAILS_ENV=production

↑これをコンソール上で実行することで、アセットパイプラインが利用可能になるとか。

後は、config/environments/production.rb内の
config.assets.compileをfalseからtrueに変更、これでアセットパイプラインを利用するようになる


この後デプロイ、アクセスすると正常に色々読み込んでくれるようになりました。
これ、初めてこういったフレームワークを使う人なら絶対悩まされると思うんですけど、
Rails Tutorialでは特に触れられていないんですよね…
途中でなにか設定を間違えたのでしょうか?

とりあえず以上です。