Capistrano with Bundler and RVM

最近、新しい Rails サーバを立ち上げる必要が出てきて、一から Capistrano によって deploy をする必要に迫られました。

Capistrano についてはいろいろなところで良質な記事があるので、それ自体を使うのは難しくはないと思うのですが、 RVM や Bundler を使用した環境で使用する場合に結構はまってしまったので、記録しておこうと思います。

サーバ側で RVM を使用する場合

RVM: Ruby Version Manager – RVM with Crapistrano を参照し、Ruby 1.9.2 を使うのであれば、以下の3行を deploy.rb に書き加えます。

$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require "rvm/capistrano"
set :rvm_ruby_string, '1.9.2'
set :rvm_type, :user

deploy 時に Bundler で Gem を更新する場合

deploy 時に bundle install で Gem をインストールしてほしいと思います。

大前提として、 Bundler を最新版にしておくことが重要です。
自分の場合、古いバージョンが入っていて上手く動きませんでした。

config/deploy.rb に

require "bundler/capistrano"

と書いておけば、 deploy 時に標準では shared/bundle フォルダに bundle install をしてくれます。