Railsアプリケーションを本番環境とステージング環境にデプロイするために、capitrano単体だと面倒くさそうだったのでcapistarano-extというgemをいれました。
$ [sudo] gem install capitrano-ext
config/deploy.rbに下記のrequireを追加します。
require "capistrano/ext/multistage"
deployというディレクトリを作成して、下記のファイル名のファイルを作成します。
config/deploy/production.rb
config/deploy/staging.rb
そうすると、productionとstagingという環境が作成されます。
それぞれのファイルにそれぞれの環境毎の設定が書けます。共通部分はconfig/deploy.rbに書いて、production.rb, staging.rbは差分だけ書くようにします。
ステージング環境にデプロイするときは下記の様に実行します。
$ cap staging deploy:update
これで、本番環境とステージング環境にデプロイできるようになったのですが、デフォルトだとrake db:migrate とかした際にRAILS_ENV=productionで実行してしまいます。RAILS_ENV=staging にしたい場合は deploy/staging.rbに下記を追加します。
set :rails_env, "staging"