Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Rails 6.1, unbelievable assets-precompile time for a smallish project
I have an old Ruby on Rails project currently running on Rails 6.1. It isn't very large. I have got the old asset pipeline, 2.7 MB of Javascript in a node_modules folder and 3.7 MB of files in the asset folder.
When I build my Docker image, precompiling assets takes nearly two hours. Yes, two hours. I have no clue why, as the project isn't large. I have larger projects with exactly the same setup where the precompile time is a couple of minutes.
I have found that I can run rake assets:precompile in verbose mode and with a flag DEBUG=1. Neither produces any output worth watching. The first outputs a couple of setting values and then precompiles assets without any feedback. The second only produces a list of files it writes when it finishes.
What could cause this unbelievable build time? Is there any way to debug it? Some place where I could put in statements like puts 'processing xyz' to see which files cause that incredible compile time? Can I just edit the code in /Users/marion/.rvm/gems/ruby-3.2.3/gems/sprockets-rails-3.5.2/lib/sprockets/rails/task.rb? If so, what would be sensible edits?
1 answer
The following users marked this post as Works for me:
| User | Comment | Date |
|---|---|---|
| plain_toast | (no comment) | May 15, 2026 at 13:36 |
There are several things to check: Unused images, Javascript or CSS styles. Importing large libraries like Bootstrap several times can slow things down very much.
In my case it was a SCSS structure that had grown over nearly ten years and caused the Bootstrap styles to be imported over ten times through badly organized imports.
This does not cause problems when precompiling assets in development, because the precompiler caches partial compilation results. However, when executing a Dockerfile the build process starts with an empty cache. The resulting compiled assets will also be very much larger than necessary.
So: Check your import statements.

1 comment thread