Huom! Esimerkki toimii vain *nix alustoilla koska Capistrano ei tue virallisesti muita.

Capistranon asennus:
Riippuen *nix:stä ja Ruby:n asennuksesta riippuen tarvitset sudo/su oikeuksia.

[sudo] gem install capistrano

Rails projektin alustus:
Capistrano luo config/deploy.rb tiedoston.

cd /rails/projektin/juuri/
capify .
[add] writing `./Capfile'
[add] writing `./config/deploy.rb'
[done] capified!

./config/deploy.rb


# Minimaalinen esimerkki
# Sovelluksen nimi
set :application, "sample-app"
# Osoite jossa lähdekoodi majailee
set :repository,  "git@github.com:sample-app.git"
# Versionhallinta sovellus - tässä esimerkikssä git
set :scm, :git
# Palvelimen asennuskansio
set :deploy_to, "/home/example/public_html/#{application}"

# Asetetaan oletus moodi
set(:env, 'staging') unless exists?(:env)

if env == 'production'
  # Otetaan oikea branch
  set :branch,      "production"
  # Virallinen tuotantoympäristö
  puts "********* DEPLOYING TO PRODUTION *********"
  # Web-palvelin
  role  :web,         "domain.fi"
  # Sovelluspalvelin
  role  :app,         "domain.fi"
  # Tietokantapalvelin
  role  :db,          "domain.fi", :primary => true
  # Juuri kansio
  set   :base_folder, "/var/www/production/www"
  set   :user,        "production_user"
  # Kansio johon asennus tehdään
  set   :deploy_to,   "#{base_folder}/#{application}"
  set   :use_sudo,    false
  set   :spinner,     false
  set   :reaper,      false

  # Tehdää asennus kopioimalla ensin omalle koneelle ja siitä siirretään palvelimelle
  # näin vältytään usein ssh avaimien haalimisesta git:ä käytettäessä
  # voisi käyttää myös ssh_forward:ia, mutta näin aloittavalle helpompi
  set   :deploy_via,  :copy
  set   :compression, :zip
  set   :rails_env,   "production"

  elsif env == 'staging'
  # Otetaan oikea branch
  set :branch,      "staging"
  puts "********* DEPLOYING TO STAGING *********"
  # Web-palvelin
  role  :web,         "staging.domain.fi"
  # Sovelluspalvelin
  role  :app,         "staging.domain.fi"
  # Tietokantapalvelin
  role  :db,          "staging.domain.fi", :primary => true
  # Juuri kansio
  set   :base_folder, "/home/developer/www"
  set   :user,        "developer"
  # Kansio johon asennus tehdään
  set   :deploy_to,   "#{base_folder}/#{application}"
  set   :use_sudo,    false
  set   :spinner,     false
  set   :reaper,      false

  # Tehdää asennus kopioimalla ensin omalle koneelle ja siitä siirretään palvelimelle
  # näin vältytään usein ssh avaimien haalimisesta git:ä käytettäessä
  # voisi käyttää myös ssh_forward:ia, mutta näin aloittavalle helpompi
  set   :deploy_via,  :copy
  set   :compression, :zip
  set   :rails_env,   "production"
  end

Staging eli esittelyn vaiheen käyttöönotto:


# Valmistellaan ympäristö eli luodaan tarvittavia kansioita yms.
cap deploy:setup -S env=staging

# Tehdään ensimmäinen käyttöönotto
cap deploy:cold -S env=staging

# Ajetaan migraatiot
cap deploy:migrate -S env=staging


# Uuden releasen vieminen
cap deploy -S env=staging

# Lisää komentoja saat esille
cap -T

Lisää reseptejä löytyy  http://github.com/jaakkos/my-deploy-stuff/tree/master