Heroku で Webpacker での assets:precompile が動かなかったのを解決した

Heroku で Rails アプリケーションを稼働している。

このたび、 JS, CSS まわりを Sprockets から Webpacker へ乗り換えたが、Heroku へのデプロイの際に assets:precompile が延々と実行されない事象に陥った。

原因

Heroku のドキュメントを漁っていたら、以下に解決にいたりそうな記述を見つけた。

devcenter.heroku.com

Rake task defined, and don’t have a public/assets/manifest-*.json file.

public/assetsmanifest-*.json にないことが、 assets:precompile が実行される条件のようだ。

今回は、 public/assets/.sprockets-manifest-*.json というファイルがリポジトリに残っていた。

対応

public/assets/.sprockets-manifest-*.jsonリポジトリから削除した。

結果

〜〜略〜〜
Webpacker is installed 🎉 🍰
Using /tmp/build_154d9ad0359fd2fa6b43b8e446707f52/config/webpacker.yml file for setting up webpack paths
Compiling…
Compiled all packs in /tmp/build_154d9ad0359fd2fa6b43b8e446707f52/public/packs
Asset precompilation completed (47.88s)
Cleaning assets
Running: rake assets:clean
〜〜略〜〜

これで、 assets:precompile が実行され、アプリケーションで assets が読み込めるようになった。