RVMとCapistranoを組み合わせて使う
デプロイ先のRubyをRVMで入れている場合、そのRubyをCapistranoが見つけてくれないのでうまくデプロイが進まない現象が起こる。
それをうまく動かすためにひと工夫。
rvm capistrano plugin
Capistranoを実行するマシンとデプロイ先のマシンの両方にRVMの1.0.1以上が入っている場合は、RVMのプラグインで解決できる。これはデフォルトで入っているので特にインストールしたりする必要はない。
deploy.rbの先頭に以下のコードを追加。
set :rvm_type, :user $:.unshift(File.expand_path('./lib', ENV['rvm_path'])) require "rvm/capistrano" set :rvm_ruby_string, '1.9.2'
rvm_typeはRVMをrootでインストールしている場合は指定しなくてよい。
rvm_ruby_stringにはデプロイ先で使うものを書く。
:default_environment
RVMのバージョンが古い場合など上記の手段が使えない場合には、default_environmentを設定するという方法があるらしい。
こっちは試してないので参考URLそのままのコードになるが一応貼っておく。これもdeploy.rbに書く。
set :default_environment, { 'PATH' => "/path/to/.rvm/gems/ree/1.8.7/bin:/path/to/.rvm/bin:/path/to/.rvm/ree-1.8.7-2009.10/bin:$PATH", 'RUBY_VERSION' => 'ruby 1.8.7', 'GEM_HOME' => '/path/to/.rvm/gems/ree-1.8.7-2010.01', 'GEM_PATH' => '/path/to/.rvm/gems/ree-1.8.7-2010.01', 'BUNDLE_PATH' => '/path/to/.rvm/gems/ree-1.8.7-2010.01' # If you are using bundler. }