Skip to content

Instantly share code, notes, and snippets.

@ricardodovalle
Created April 10, 2014 01:18
Show Gist options
  • Save ricardodovalle/10335214 to your computer and use it in GitHub Desktop.
Save ricardodovalle/10335214 to your computer and use it in GitHub Desktop.
#
# Para conseguir que compile os assets locais, depois
# de muito quebrar a cabeça, eu achei em um post de
# como escrever o deploy.rb para o Capistrano 3 esta
# pérola, que fez tudo 'ir para frente':
#
# "Entre as inovações do Cap3 está a descontinuação
# da sua DSL própria e a adoção do Rake"
#
# Então precisava somente saber como trocar uma task
# por outra, e agora sabia onde. Tasks valem por ordem
# de chegada. Quem chega antes, fica, a não ser que:
#
Rake::Task['deploy:compile_assets'].clear
#
# Ok, mas qual task trocar? Usei --trace para procurar,
# mas dava erros loucos quando ia tentando, e em outro
# post mencionaram uma lista hierárquica das tasks
# do Capistrano quando em Rails:
#
# http://capistranorb.com/documentation/getting-started/flow/
#
#
# Escrever a sintaxe do compila local -> deploy remoto
# foi sossegado. Neste ponto o Capistrano está excelente!
#
namespace :deploy do
desc 'Esta versão compila os assets localmente para o deploy'
task :compile_assets do
invoke 'deploy:assets:compile_local'
end
desc 'Compiles all assets locally'
task :compile_local do
invoke 'deploy:assets:compile_local'
end
namespace :assets do
task :precompile do
on roles(:web) do
invoke 'deploy:assets:compile_local'
end
end
desc 'Compiles all assets locally'
task :compile_local do
run_locally do
with rails_env: :production do
execute :rm, '-rf', 'public/assets/*'
rake 'assets:precompile'
within 'public/' do
execute :tar, 'cjf', 'assets.tar.bz2', 'assets/*'
end
end
end
on roles(:web) do
within "#{shared_path}/public" do
execute :rm, '-rf', "assets/*"
upload! 'public/assets.tar.bz2', "#{shared_path}/public", quiet: true
execute :tar, 'xf', "assets.tar.bz2"
execute :rm, "assets.tar.bz2"
end
end
run_locally do
execute :rm, 'public/assets.tar.bz2'
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment