LoginSignup
0
0

More than 3 years have passed since last update.

heroku Precompiling assets failed. を解決した方法

Posted at

環境について

Rails 6.0.3.4
ruby 2.6.3p62
heroku/7.47.7
になります

注意

初心者の記事なのでもっと良い方法があるかもしれません。
もしあればコメントください

起きた問題

herouにデプロイができなくなった。
git push heroku masterを実行したところ、「Precompiling assets failed.」というエラー、、

qiita.rb
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を使いました。

すると

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ヶ月前からでした、、、
エラーが出たらその場で解決しないと、後々とんでもないことになると学びました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0