capistrano-ext

Capistrano実践Tips集
とてもいい資料でした。
こちらを見てcapistrano-extを見て入れてみました。

install

$ gem install capistrano-ext
$ mkdir -p config/deploy

設定

config/deploy.rb
require 'capistrano/ext/multistage'

環境ごとの差分ファイルを
config/deploy/production.rb
のように作成する。

使用方法

cap cmd 
例:
cap production deploy

補足

set :stages, %w(dev prod)
のように環境名を明示的に設定することも可能だが


lib/capistrano/ext/multistage.rb
を見ると

  unless exists?(:stages)
    set :stages, Dir["#{location}/*.rb"].map { |f| File.basename(f, ".rb") }
  end

となっているので、config/deploy下にのファイル名で環境名を判断してくれるようになっています。



また、

  stages.each do |name| 
    desc "Set the target stage to `#{name}'."
    task(name) do 
      set :stage, name.to_sym 
      load "#{location}/#{stage}" 
    end 
  end 

とあるので:stage に環境名が設定される。

rake時に、RAILS_ENV用に設定していた下記のような変数が不要になりました。

set :rails_env,   "production"