環境について
Rails 6.0.3.4
ruby 2.6.3p62
heroku/7.47.7
になります
注意
初心者の記事なのでもっと良い方法があるかもしれません。
もしあればコメントください
起きた問題
herouにデプロイができなくなった。
git push heroku masterを実行したところ、「Precompiling assets failed.」というエラー、、
remote: !
remote: ! Precompiling assets failed.
remote: !
remote: ! Push rejected, failed to compile'
原因探し
Precompileのエラーが出ていると言うのがエラー文で判明した。
厄介な事が、、、
実はこのherokuのエラーが出ていたのはかなり前。
「また今度やればいいやー」って考えていたツケが回ってきました。
いつ、何をいじった時に現れたエラーなのかわからない。
そのため、修正方法も不明だった。
解決した方法
手順1
git log でコミットハッシュを調べ、そこにgit checkoutで飛ぶ
参考にしたのは以下のサイト
https://tmytokai.github.io/open-ed/activity/git/text02/page09.html
https://qiita.com/zetamatta/items/ab1eb6c954b197e53752
手順2
過去のコミットへ遡ったあと、
rails assets:precompile
を使用し、コンパイルができるか確認する。
コンパイルできた場合、手順4へ
コンパイルできなかった場合、手順3へ
手順3
コンパイルできなかった場合、その時点のコミットより以前でPrecompileエラーが出てるのでさらに過去に戻る。
ある程度時間に幅を持たせて遡った方が時間短縮になるだろう
手順4
その時点ではprecompileできているので、そのコミットの一つ前のコミットに遡り、そこでprecompileエラーが出ればビンゴです。
そこでエラーが出たと考えられます。
手順5
git show
コマンドを使って怪しいやつを見つけてください。
僕の場合、かなり数が多かったので
git show --name-only
を使用しました。
その結果、package.jsonが怪しかったので、
git show package.json
を使いました。
すると
- "@rails/webpacker": "^5.1.1",
+ "@rails/webpacker": "^6.0.0-pre.1",
この変更履歴があったため、
@rails/webpacker": "^5.1.1",
にダウングレードし、yarn installすると、rails assets:precompileが動作し、
git push heroku masterも動作しました。
まとめ
herokuにデプロイ時にPrecompiling assets failedエラーが出る
↓
git log でコミットハッシュを調べ、そこにgit checkoutで飛ぶ
↓
遡った時点でrails assets:precompileを行う (どの時点で起きたエラーか調べ続ける)
↓
git showで怪しい箇所を見つける
↓
(私の場合)
- "@rails/webpacker": "^5.1.1",にダウングレードで解決
反省
結局herokuのエラーが出ていたのは2ヶ月前からでした、、、
エラーが出たらその場で解決しないと、後々とんでもないことになると学びました。