Herokuのアセットプリコンパイルがうまくいかないと言うエラーが出たので、それについてまとめておきます。
Herokuのアセットプリコンパイルエラーの解決法
現象
いつも通りHerokuにコンテナをプッシュしようと思ってアセットプリコンパイルしようと思ったら、エラー・・・。
エラー内容
/usr/local/bundle/gems/sassc-2.2.1/lib/sassc/engine.rb:42: [BUG] Illegal instruction at 0x00007f878b268def
バグとして報告してくれみたいな感じで出てました。一応解決できたのでそれについてまとめておきます。
解決法
結論から言うとGemのSasscをダウングレードします。理由は2.2系のSasscだとエラーになってしまうからです。
docker-compose down
でコンテナをストップします。- Gemfileに
gem "sassc", ~>2.1.0"
を記載してbundle install
もしくはbundle update
します。 - そうしたら
`docker-compose up --build
で一度コンテナがちゃんと動くか確認します。localhost:3000でも正常に表示されることを確認。 - 再度
heroku container:login
からheroku container:push web
、heroku container:release web
、heroku run rails db:migrate
、heroku run rails assets:precompile
といけば、コンパイルが通るはず。 - あとは
heroku open
でちゃんと動くか確認してください。
環境
Rails 6.0.2.2
Docker 19.03.8
Ruby 2.6.5
Heroku 7.39.2