Posts

Showing posts from December, 2012

capistranoのマルチステージ拡張機能とcapistrano-unicornを一緒に使う際のTips

要約

capistranoのマルチステージ拡張機能とcapistrano-unicornを一緒に使う時、config/deploy.rbにrequire "capistrano-unicorn"を記述すると、unicorn系のcapタスクがステージ毎に用意した設定の内容を正しく認識してくれません(例えば/u/appsなんとかにアプリがデプロイされたものとしてunicornを起動しようとする)。

require "capistrano-unicorn"を各ステージ用設定ファイルの末尾に書いておくと、正しくステージ毎の設定を反映してくれます。


背景

現バージョンのCapistrano(この記事を書いている時点では2.13.5)には、もともとcapistrano-ext gemとして開発されていたマルチステージ拡張が組み込まれていて、ステージングサーバーにでプロイする時とプロダクションサーバーにデプロイする時で設定を切り替えることができるようになっています。

この機能を使いたい時は、
config/deploy.rbに以下を追記
require "capistrano/ext/multistage"
set :stages, ステージ名の文字列配列
set :default_stage, デフォルトステージ名config/deployディレクトリにステージ毎の設定ファイルを用意(ファイル名はステージ名.rb)デプロイ先によらない設定はconfig/deploy.rbに、ステージ毎に切り替えたい設定はconfig/deploy下のそれぞれの設定ファイルに記述capコマンドを実行する時に、capの後にステージ名を記述する でOK。
例えば、

config/deploy.rb ... require "capistrano/ext/multistage" set :stages, ["staging", "production"] set :default_stage, "staging" ... config/deploy/staging.rb server "1.2.3.4", :app, :web, :db, :primary …