Hoe gebruik ik Capistrano 2.x?
Om Capistrano te gebruiken is het van belang dat uw account hiervoor ingericht is. Indien uw account nog niet ingericht is voor Capistrano kunt u hiervoor een verzoek bij ons indienen.
Op onze recente servers en VPSsen wordt een system-brede RVM installatie gebruikt voor de Ruby omgeving. Hieronder vindt u een voorbeeld deploy.rb die u kunt gebruiken op onze servers, die gebruik maakt van RVM en Capistrano:
require 'bundler/capistrano'
require 'rvm/capistrano'
# De naam van uw applicatie
set :application, "applicatie"
# Gegevens van de Bluerail server
set :host, "server.bluerail.nl"
set :user, "gebruikersnaam"
# Versiebeheer instellingen
set :scm, :git # Of 'subversion', 'mercurial' , etc.
set :repository, "git@repository:applicatie"
# Gebruik de standaard Ruby van de server
set :rvm_ruby_string, 'default'
# De onderstaande instellingen zijn specifiek voor de Bluerail servers, u
# hoeft hier zelf geen wijzigingen in aan te brengen.
set :deploy_to, lambda { capture("echo -n ~/rails") }
set :rvm_type, :system
set :rvm_bin_path, '/usr/local/rvm/bin'
set :use_sudo, false
set :keep_releases, 3
# Bij rvm-capistrano v1.3.0 of hoger dient de volgende regel toegevoegd te worden.
# set :rvm_path, '/usr/local/rvm'
role :web, host
role :app, host
role :db, host, :primary => true
# Taak voor het herstarten van de Passenger applicatie en symlinken van de database.yml
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
after "deploy:update_code", :link_production_db
end
desc "Link database.yml from shared path"
task :link_production_db do
run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml"
end
Daarnaast dient u de rvm-capistrano gem toe te voegen aan uw Gemfile:
gem 'rvm-capistrano'
De oude oplossing waarbij met behulp van $:.unshift de RVM map aan het load path wordt toegevoegd is niet meer van toepassing. U kunt de rvm-capistrano gem ook gebruiken indien u zelf geen RVM gebruikt in uw ontwikkelomgeving.
De belangrijkste Capistrano commando’s op een rij
Met Capistrano hoeft u nooit zelf een verbinding te maken met de Bluerail servers om uw applicatie te updaten. U voert alle commando’s uit vanuit de lokale kopie van uw Rails applicatie. Hieronder vindt u een kort overzicht van de belangrijkste commando’s:
- cap deploy:setup
- Met dit commando maakt u de benodigde directorystructuur voor Capistrano op de server aan. Dit commando dient altijd uitgevoerd te worden bij het in gebruik nemen van een nieuw hosting account.
- cap deploy
- Om nieuwe versies op de server uit te rollen volstaat het cap deploy commando. Indien u de bovenstaande config.rb gebruikt wordt tevens automatisch de bundle bijgewerkt.
- cap deploy:migrations
- Deze taak installeert niet alleen een nieuwe versie van de applicatie maar voert tevens de databasemigraties uit.
- cap deploy:rollback
- Mocht een deployment onverwacht tot problemen leiden, dan kunt u met rollback terug naar de vorige release.
- cap deploy:cleanup
-
Als een deployment succesvol is verlopen kunt u met
cap deploy:cleanup
oude releases van de applicatie van de server verwijderen om zo schijfruimte te besparen. Het aantal versies dat bewaard wordt kunt u instellen met de:keep_releases
-optie in deploy.rb
Meer informatie vindt u op de Capistrano wiki op Github.