Skip to content

Instantly share code, notes, and snippets.

@twetzel
Forked from Jesus/deploy.rb
Last active February 22, 2018 09:37
Show Gist options
  • Star 31 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save twetzel/66de336327f79beac0e0 to your computer and use it in GitHub Desktop.
Save twetzel/66de336327f79beac0e0 to your computer and use it in GitHub Desktop.
compile assets local with capistrano 3.2.1 and rails 4.1.1 (fully integrated)
# Clear existing task so we can replace it rather than "add" to it.
Rake::Task["deploy:compile_assets"].clear
namespace :deploy do
desc 'Compile assets'
task :compile_assets => [:set_rails_env] do
# invoke 'deploy:assets:precompile'
invoke 'deploy:assets:precompile_local'
invoke 'deploy:assets:backup_manifest'
end
namespace :assets do
desc "Precompile assets locally and then rsync to web servers"
task :precompile_local do
# compile assets locally
run_locally do
execute "RAILS_ENV=#{fetch(:stage)} bundle exec rake assets:precompile"
end
# rsync to each server
local_dir = "./public/assets/"
on roles( fetch(:assets_roles, [:web]) ) do
# this needs to be done outside run_locally in order for host to exist
remote_dir = "#{host.user}@#{host.hostname}:#{release_path}/public/assets/"
run_locally { execute "rsync -av --delete #{local_dir} #{remote_dir}" }
end
# clean up
run_locally { execute "rm -rf #{local_dir}" }
end
end
end
@AdamGoodApp
Copy link

Works great, thank you.

@germanrdz
Copy link

Buena bola! (Spanish for, "good one")
Works great, thank you!

@tyler-boyd
Copy link

Hey! I forked this to support Rails 5.1 + Webpacker.

The code could definitely be cleaned up but it seems to work well enough for me in production!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment