Edited at

Heroku上のSprocketsキャッシュを削除する

More than 1 year has passed since last update.


どういう問題が起こったか

使わないcoffee_scriptのgemとcoffeeファイルを含むアプリケーションをheroku上にdeployしてしまいsprocketsがcofeeのキャッシュを生成してしまったため、coffee_script gemを除外してもtmp/cache/assets をクリアしない限り

cannot load such file -- coffee_script

というエラーがassets:precompileタイミングで発生してしまう。という割とあるあるのトラブルをheroku上で発生させてしまった。


普段(heroku外)の解決方法

herokuではなくローカル等あれば rails tmp:clear で解決する。

heroku console で Rails.cache.clearを実行したり

heroku run rails tmp:clear を実行したりしてみたもののキャッシュのストア、リストアタイミングの問題でビルド時には再度エラーになってしまい解決しない。


Herokuで解決した方法

https://github.com/heroku/heroku-repo

heroku-repo の機能を使って purge-cacheすることで解決した。

heroku plugins:install heroku-repo

heroku repo:purge_cache -a appname

もろもろクリアされてしまうため、bundlerやYarn等のインストールも完全に再実行になってしまう点に注意


その他

多分cacheが使われないようにapplication.jsファイル等のキャッシュを利用しようとして問題になってるファイルを無駄に編集したりするとかでも解決するんじゃないかと思われる(未確認)

今回は慣れてないheroku上のトラブル & 趣味で解決を急がない状態だったので根本解決したく、強引な解決方法はとらず、キャッシュされてるtmpファイルを削除する方法を探した。