概要
表題の通りですが、アセットパイプラインとwebpackを併用したアプリのbundle exec assets:precompileを開発用の非力な仮想サーバーでするとCompiling...で固まってしまいます。
解決策
Compiling...はwebpackのコンパイルをしているようです。最初時間がかかってSSHがタイムアウトしてるだけかと思ってタイムアウトしないようにしてみてしばらく放置してみたらCompilation failed!と悲しいメッセージが。
不思議なのはbin/webpackでコンパイルすると1,2分で終わります。そこで、assets:precompile時にwebpackをやらないようにしてbin/webpackを別途呼んでみるようにしたら失敗しなくなりました。
WEBPACKER_PRECOMPILE=false bundle exec rails assets:precompile
bin/webpack
WEBPACKER_PRECOMPILE=falseの環境変数でwebpackをしなくなります。根本的な解決ではないし、なんか気持ち悪いですが困ってる方いらっしゃましたら試してみてください。
想像ですが1プロセス内でアセットパイプラインのプリコンパイルとwebpackが走るとメモリが足りなくなるとかですかね?rails6で作ったアプリはwebpack一本になるのでこう言う心配はなくなるのかな?上記の対象アプリも6にアップグレードはしましたが、歴史的経緯でアセットパイプラインとwebpackが併用になっています。