Capistrano 2.1 Preview Release
2007 September 02, 02:35 h
Jamis Buck acabou de anunciar o lançamento da versão de melhorias 2.1 da novíssima série 2.0 do Capistrano. Acredito que todos já devem ter migrado para o novo Capistrano, que está realmente muito mais refinado.
Para instalar esta versão, é o de sempre:
gem install -s http://gems.rubyonrails.com capistrano
Vou repetir: é um Preview Release. O nome ‘preview’ tem motivos: leiam o artigo do Jamis porque muita coisa mudou e caso vocês não façam a devida lição de casa (cof sandbox cof) podem ser mordidos à toa.
Para quem ainda pretende migrar, aqui vão algumas dicas:
Se você ainda usava a versão 1.4.1 e por acaso rodou um gem update por ‘acidente’, neste momento deve estar com as duas versões instaladas: a 1.4.1 e a 2.0. Isso pode ser bom pois se ainda tiver algum projeto Rails com o antigo config/deploy.rb, você pode continuar usando a mesma configuração desta forma:
1
2
3
4
5
6
7
|
Isso irá forçar a execução do Capistrano antigo. Desta forma você pode utilizar ambos lado-a-lado, com projetos novos e antigos. De qualquer forma, modificar seu deploy.rb atual não é complicado. Primeiro, na raíz do seu projeto Rails, crie um arquivo chamado *Capfile* com o seguinte conteúdo:
<div style="overflow: auto; width: 400px">
--- ruby
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
load 'config/deploy'
|
Agora, seu antigo config/deploy.rb provavelmente tem um trecho parecido com este:
1
2
3
4
|
set :deploy_to, "/var/www/#{application}" # defaults to "/u/apps/#{application}"
set :svn_username, "cap"
set :svn_password, 'xxxxx'
set :checkout, 'export'
|
Modifique por:
1
2
3
4
5
|
set :deploy_to, "/var/www/#{application}" # defaults to "/u/apps/#{application}"
set :deploy_via, :export
set :scm_username, "cap"
set :scm_password, 'xxxxx'
set :checkout, 'export'
|
Na maior parte das vezes, se você não estiver usando uma configuração muito diferente do padrão, isso já deve funcionar. Apenas dê o cap deploy de sempre e tudo deve funcionar. Por outro lado, talvez você tenha problemas reiniciando o Mongrel. No meu caso eu adicionei o seguinte script ao final do deploy.rb:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
namespace :deploy do
namespace :mongrel do
[ :stop, :start, :restart ].each do |t|
desc "#{t.to_s.capitalize} the mongrel appserver"
task t do
#invoke_command checks the use_sudo variable to determine how to run the mongrel_rails command
invoke_command "mongrel_rails cluster::#{t.to_s} -C #{mongrel_conf}", :via => run_method
end
end
end
desc "Custom restart task for mongrel cluster"
task :restart, :roles => :app, :except => { :no_release => true } do
deploy.mongrel.restart
end
desc "Custom start task for mongrel cluster"
task :start, :roles => :app do
deploy.mongrel.start
end
desc "Custom stop task for mongrel cluster"
task :stop, :roles => :app do
deploy.mongrel.stop
end
end
|
Capistrano é uma ferramenta indispensável a todo bom projeto Rails. É como Maven ou Ant no mundo Java, mas ordens de grandeza mais simples (sem as sofríveis toneladas de configuração XML, apenas Ruby puro e simples). Veja esta página para saber o que mudou na nova série 2.0.