私はいつも、デプロイ ターゲットごとに cap タスクを作成し、それらをコマンド ラインで使用してきました。
# deploy.rb
task :stage do
server 10.0.0.1 ...
end
> cap stage deploy
ステージングではクリーンアップを行い、本番環境では行わないデプロイなど、各ターゲット タスク内でカスタマイズ タスクを定義することもできます。
これらのデプロイ ターゲット タスクは非常に大きなものになることはめったにないので、マルチ ステージ用のキャップ エクステンションをインストールするようなことのポイントを実際に見たことはありませんが、他の状況は異なる可能性があると思います。
本番環境は他の環境から分離する必要があると思います。そうしないと、ステージングなどのプロセスの誤動作が本番パフォーマンスに影響を与える危険性があります。
データベースを爆破して最新の本番ダンプから再ロードするなど、ステージングの便宜のために cap タスクを定義することがあります。これらのタスクは、設定された変数などを介してデプロイ ターゲットをチェックし、深夜のタイプミスに対する保険として本番環境での実行を拒否する必要があります。
deploy.rb に多くのカスタム ビヘイビアを配置するのは魅力的ですが、環境や cap API の変更に伴い、これは後戻りする傾向があり、多くのメンテナンス作業が必要になることがわかりました。
私が大規模な環境で見たもう 1 つの方法は、capistrano コントロール ポイントとして機能するように特別に設定された安定版ブランチを追跡するチェックアウトを備えたシェル アカウントを持つことです。ローカルではなく、そこで ssh して cap コマンドを実行します。これにより、ローカル チェックアウトの deploy.rb に変更があり、本番環境へのデプロイで使用する準備ができていないという問題を回避できます。これは git と svn ではそれほど問題ではありませんが、cap コマンドを実行している時点でローカルの deploy.rb が何であるかを注意深く考える必要があります。
Heroku は最近、この作業を本当に簡単にしており、EY やその他の企業もそれほど遅れをとっていません。