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)

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

You can then set the above environment variable when deploying:

SKIP_ASSETS=1 cap staging deploy

Enjoy.


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

Arne Hartherz About 6 years ago