namespace :deploy do
namespace :assets do Rake::Task['deploy:assets:precompile'].clear_actions set :asset_full_path, -> { "#{release_path}/public/#{fetch(:assets_prefix)}" } task :precompile_on_local do run_locally do execute 'RAILS_ENV=production bundle exec rake assets:precompile' execute "cd ./public/#{fetch(:assets_prefix)} && tar zcf assets.tar.gz *" end end task :upload_and_extract do on roles(:app) do within release_path do execute "mkdir -p #{fetch(:asset_full_path)}" upload! "./public/#{fetch(:assets_prefix)}/assets.tar.gz", fetch(:asset_full_path) execute "cd #{fetch(:asset_full_path)} && tar zxf assets.tar.gz" execute "cd #{fetch(:asset_full_path)} && rm assets.tar.gz" end end end task :clean do run_locally do execute "rm -r ./public/#{fetch(:assets_prefix)}" end end desc "Precompile assets on local machine and upload them to the server." task :precompile do begin invoke 'deploy:assets:precompile_on_local' invoke 'deploy:assets:upload_and_extract' ensure invoke 'deploy:assets:clean' end end end
end