railsadminteam / rails_admin

RailsAdmin is a Rails engine that provides an easy-to-use interface for managing your data
MIT License
7.88k stars 2.25k forks source link

Running into assets precompile problem with 3.1.0 #3562

Closed coding-bunny closed 6 days ago

coding-bunny commented 1 year ago

Describe the bug The assets:precompile step for our application is failing.

Reproduction steps

Expected behavior I expect the assets:precompile to work as expected. There's no issue on 3.0.0

Additional context

#20 [builder 8/8] RUN --mount=type=ssh     RAILS_ENV=production ASSETS_PRECOMPILE=1 SECRET_KEY_BASE=$(bin/rake secret)     bundle exec rake assets:precompile     && yarn cache clean     && rm -rf /app/tmp/*     && rm -rf /app/node_modules/.cache
#20 sha256:347ed495a7d3c9903ca17e06a2e7b9f0a138dec6529fe0117f1b2bfa1eadaa9d
#20 7.473 rake aborted!
#20 7.473 Uglifier::Error: 
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/uglifier-4.2.0/lib/uglifier.rb:291:in `parse_result'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/uglifier-4.2.0/lib/uglifier.rb:221:in `run_uglifyjs'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/uglifier-4.2.0/lib/uglifier.rb:166:in `compile'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/compressing.rb:84:in `block in js_compressor='
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/processor_utils.rb:84:in `call_processor'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/processor_utils.rb:66:in `block in call_processors'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/processor_utils.rb:65:in `reverse_each'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/processor_utils.rb:65:in `call_processors'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/loader.rb:182:in `load_from_unloaded'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/loader.rb:59:in `block in load'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/loader.rb:337:in `fetch_asset_from_dependency_cache'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/loader.rb:43:in `load'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/cached_environment.rb:44:in `block in load'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/cached_environment.rb:44:in `fetch'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/cached_environment.rb:44:in `load'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/base.rb:81:in `find_asset'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/base.rb:88:in `find_all_linked_assets'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/manifest.rb:125:in `each'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/manifest.rb:125:in `to_a'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/sprockets-4.1.1/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:47:in `block in synchronize'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:47:in `synchronize'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:47:in `synchronize'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb:22:in `execute'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/promise.rb:564:in `block in realize'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:352:in `run_task'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:343:in `block (3 levels) in create_worker'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:334:in `loop'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:334:in `block (2 levels) in create_worker'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:333:in `catch'
#20 7.475 /app/vendor/bundle/ruby/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:333:in `block in create_worker'
#20 7.476 Tasks: TOP => assets:precompile
#20 7.476 (See full trace by running task with --trace)
#20 ERROR: executor failed running [/bin/sh -c RAILS_ENV=production ASSETS_PRECOMPILE=1 SECRET_KEY_BASE=$(bin/rake secret)     bundle exec rake assets:precompile     && yarn cache clean     && rm -rf /app/tmp/*     && rm -rf /app/node_modules/.cache]: exit code: 1

Additional changes I had to make:

coding-bunny commented 1 year ago

Okay, the problem really seems to be Uglifier itself. My guess is that Rails Admin internally uses ES6 code now for its assets, which is not supported by Uglifier. Switching to terser resolves the build problem.