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
.