fredag 27 juni 2008

Uppgradera till Capistrano 2.0 från 1.4.1


Nu kommer ett sån't där tekniskt inlägg igen som jag kommer att använda som referens någon gång i framtiden. Vänligen bortse från nördigheten och vänta på nästa inlägg istället.

Capistrano är ett bra verktyg för att automatisera saker på en eller flera servrar, bland annat publicera webbplatser skrivna i Ruby on Rails. Jag använder det till i stort sett alla mina rails-applikationer. Sedan ett tag tillbaka har det funnits i version 2.0, men eftersom alla mina deploy-script är för capistrano 1.4.1 har jag dragit mig för att uppgradera. Men nu tog jag tag i saken, och här kommer en liten guide vad som behöver göras för att få gamla script att fungera. Jag ångrar inte uppgraderingen för mina deploys går mycket snabbare och stabilare nu. Tidigare hade jag lite problem med att de avbröts mitt i ibland.

1. Uppgradera capistrano
sudo gem install capistrano

2. Capifiera din applikation genom att stå i roten och skriva
capify .

3. Öppna config/deploy.rb och lägg till
set :runner, "deploy" # deploy byts ut mot ditt användarnamn

4. Lägg till namespace runt alla dina tasks.
namespace :deploy do
desc "Backup task"
task :backup
...
end


5. Lägg till tasks för att starta mongrel om du använder det. Detta ska vara inom namespace :deploy som vi skrev in på punkt nummer fyra.

namespace :mongrel do
[ :stop, :start, :restart ].each do |t|
desc "#{t.to_s.capitalize} the mongrel appserver"
task t, :roles => :app 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



6. Nytt kommando istället för cap taskname blir cap deploy:taskname. Jag brukar kalla min deploy-task för "app", så blir det ganska logiskt att skriva cap deploy:app

Inga kommentarer:

Skicka en kommentar