Capistrano でステージング環境と本番環境のRolesを切り替える

いろいろ悩んだ結果、この形に落ち着いた。

if ENV['DEPLOY'] == 'publish'
   role :app, "pub-app"
   role :web, "pub-web"
   role :db,  "pub-db", :primary => true
else
   role :app, "st-app"
   role :web, "st-web"
   role :db,  "st-db", :primary => true
end


ステージング環境へのデプロイメントは通常通り

% cap deploy


本番環境へのデプロイメントは環境変数の設定から

% export DEPLOY="publish"; cap deploy; unset DEPLOY


もっといいやり方は無いのかな……。