ЯoomeR

プログラミング~実装とエラー解決と、時々、AI~

git push heroku masterが失敗する[解決方法一覧]

Precompiling assets failed.

ログを確認し、rake aborted!の文言を探そう。

「invalid base 64」というエラーが表示されることも多い。

パターン1.jsファイルの配置場所が間違っている

例えば、Rails6系ではapplication.jsには以下のような記述をする。

require("../check_test");

application.jsの配置は(app>javascriopt>packs>application.js)である。

対して、check_test.jsの正しい配置は(app>javascriopt>check_test.js)である。

間違っていないか確認しよう。

rake aborted!
SyntaxError: /tmp/build…….

このような表示がターミナルにある場合は、記述ミスが原因である。

ログを確認し、どこの記述に原因があるかを探そう。

パターン3.ActiveSupport::MessageEncryptor::InvalidMessage

master.keyの値がローカルとherokuで一致していない可能性が高い。

「確認したし、合ってるぞ・・・」という場合でも一度こちらを試してみよう。

(「ArgumentError: key must be 16 bytes」というエラーが表示されることが多い)

Step1.credentials.yml.encの削除

config直下にあるので、削除しよう。

Step2.master.keyの削除

こちらもconfig直下にあるので削除しよう。

Step3.削除したものを再作成

ターミナルで以下のコマンドを実行しよう。

EDITOR="vi" bin/rails credentials:edit

これで「credentials.yml.enc」、「master.key」が再作成される。

VSCodeを確認しておこう。

Step4.commit、pushを実効する。

ローカルのmaster.keyが反映されていないため、commit、pushを行ってリモートにも反映しておこう。

Step5.herokuへ環境変数を設定する。

以下のコマンドをターミナルで実行しよう。

heroku config:set RAILS_MASTER_KEY=`cat config/master.key`

Step6.設定の確認

以下のコマンドをターミナルで実行しよう。

heroku config

VSCodeのmaster.keyの中身と同じ文字列になっていればOK。

Step7.再度push

以下のコマンドをターミナルで実行しよう。

git push heroku master

これにて完了である。