Skip to content

2.x Multiple Stages Without Multistage Extension

Lee Hambley edited this page Oct 4, 2010 · 1 revision

If you have reviewed the multistage extension and have wondered how it works, or how you could replicate this without adding another dependency, consider the following example.

Note: This way only really works if you have minimal differences in tasks between stages, if you have extensive staging differences, please consider the advice on deploying to multiple stages.

Enter this in to your config/deploy.rb taking note that the role definitions are inside the task block:

set :application, 'example-website'

task :production do
  role :web, "www.capify.org"
  set :deploy_to, "/u/apps/#{application}-production/"
  set :deploy_via, :remote_cache
  after('deploy:symlink', 'cache:clear')
end

task :staging do
  role :web, "localhost"
  set :deploy_to, "/Users/capistrano/Sites/#{application}-staging/"
  set :deploy_via, :copy
  after('deploy:symlink', 'cruise_control:build')
end

With that in mind, to deploy you can try something like:

$ cap staging deploy
$ cap staging deploy:restart
Clone this wiki locally