Just do IT

思うは招く

【Rails】rails_adminアップデート時にUglifierでassets precompileエラー

結論

rails_admin gemを3.0.0 から 3.1.1にアップデートするときにuglifierでアセットのプレコンパイルが通らないエラーが出た。

Uglifier::Error:
assets precompilation failed.

結論としては、uglifierがES6に対応してないためプレコンパイルが通らなかった。terserに置き換えたら解決した。

gem terser

経緯

まず、uglifierはもうメンテされてない。最終コミットが2021年9月だ。

github.com

そして、READMEにも「ruby-terserのほうが良い選択だよ」と書かれている。

UglifyJS only works with ES5. If you need to compress ES6, ruby-terser is a better option.

まんま書いてるけど、uglifierはES5にしか対応していない。なのでterserを使う。

configに

config.assets.js_compressor = Uglifier.new(harmony: true)

を記述していたが、これでもダメだった。

terser gemをbundle installし、config/environments/production.rbに以下を記述。

config.assets.js_compressor = Uglifier.new(harmony: true) # 削除
config.assets.js_compressor = :terser # 記述

無事プレコンパイルが通るようになりました。

以下の記事を参考にさせていただきました。感謝。

【Rails】uglifierはterserに置き換えた方がいいかもな話 - Qiita