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.

tags: obsolete

Comments

comentários deste blog disponibilizados por Disqus