If your Rails apps are anything like mine, one of the slowest parts of your deployment is waiting for asset pipeline precompilation. It's sometimes so slow, it's painful. So I went searching for some solutions. turbo-sprockets helped, but it's not a silver bullet. This gem isn't a silver bullet either, but it can help. Capistrano Local Precompile takes a different approach. It builds your assets locally and rsync's them to your web server(s).
Add capistrano-local-precompile to your Gemfile:
group :development do
# Capistrano v2 should use '~> 0.0.5'
# Capistrano v3 should use '~> 1.0.0'
# Capistrano v3.8+ should use '~> 1.2.0'
gem 'capistrano-local-precompile', '~> 1.2.0', require: false
end
Then add the following line to your Capfile
:
require 'capistrano/local_precompile'
Remove the following line from your Capfile
:
require 'capistrano/rails/assets'
Here's the full set of configurable options:
set :precompile_env # default: fetch(:rails_env) || 'production'
set :assets_dir # default: "public/assets"
set :rsync_cmd # default: "rsync -av --delete"
Capistrano supports dry run mode. In that case the rsync
command will not actually be run but only shown in stdout:
cap production deploy --dry-run
This gem is derived from gists by uhlenbrock and keighl.
Pull requests welcome: fork, make a topic branch, commit (squash when possible) with tests and I'll happily consider.
Copyright (c) 2019 Steve Agalloco / Tom Caflisch. See LICENSE for detail