起こった事象
- 急にherokuでrailsがdeployできなくなった
- メールで「Automatic deployment of app名 failed.」とくる
- 構成は下記
- rails6
- webpacker 4.3.0
対処
結論から言うとherokuのnodeのversionが上がってwebpackerで使っていたnode-sassのversionが対応しなくなってdeployできなかった
対処法としては下記
- webpackerのversionを上げて現在のherokuのnodeに対応したものにする
- herokuのnodeのbuild packを入れてversionを指定する
後者が楽だがwebpackerが古すぎたのとwebpackerで使っているnode-sassがもう非推奨になっていたためこの機会にwebpackerをversionアップしてnode-sassも消そうと思った。
webpackerのversionアップ手順
苦しんで覚えるwebpackerのバージョン更新
https://zenn.dev/teitei_tk/articles/cd20ff6b66c51b
上記記事を参考にアップデート。
下記3つを更新
- yarnで@rails/webpackerを5.4.3に
- gemのwebpackerを5.4.3に
- webpack-dev-serverを最新に
webpackerは最近6が出たが
あまりにも新しいのと6は結構変わってそうなので5.4.3に。
gemfile
gem 'webpacker', '~> 5.4'
docker-compose run web bundle update --conservative webpacker
conservativeをつけて他は更新されないように
docker-compose run web yarn upgrade @rails/webpacker@5.4.3
docker-compose run web yarn upgrade webpack-dev-server --latest
上記でwebpack-dev-serverも更新
nodeのbuildpackを入れてversion指定
今回はやらなかったが上記でversion指定するやり方もあり