Posted over 3 years ago. Visible to the public. Deprecated.

How to skip Sprockets asset compile during Capistrano deployment

Prefer to configure Capistrano so Sprockets can reuse its asset cache: https://makandracards.com/makandra/60699-capistrano-speeding-up-sprockets-asset-compile-during-deploy

For applications coming with lots of stylesheets and scripts, asset compilation might take quite long. This can be annoying when deploying a release that does not actually change assets.

When your app uses Sprockets, you can simply skip asset compilation and re-use the previous release's assets. [1]
That is especially easy via Capistrano. Capistrano will automatically symlink your release's public/assets to a shared directory, so all you need to do is skip the deploy:assets:precompile task.

Put the following code where you'd put other custom Capistrano tasks (default is lib/capistrano/tasks/*.rake)

Copy
if ENV['SKIP_ASSETS'] Rake::Task['deploy:assets:precompile'].clear_actions end

You can then set the above environment variable when deploying:

Copy
SKIP_ASSETS=1 cap staging deploy

Enjoy.


[1] Sprockets will pick any public/assets/.sprocket-manifest-*.json.

Does your version of Ruby on Rails still receive security updates?
Rails LTS provides security patches for old versions of Ruby on Rails (3.2 and 2.3).

Owner of this card:

Avatar
Arne Hartherz
Last edit:
almost 3 years ago
by Dominik Schöler
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Arne Hartherz to makandra dev
This website uses short-lived cookies to improve usability.
Accept or learn more