RVM, Capistrano and bundler path issues

bundlercapistranogemruby-on-rails-3rvm

i seem to have a discrepancy between production's gem path when I installed manually versus by bundler+capistrano.

After rvm installing ruby 1.9.2 and creating a gemset "myapp", i did install bundler via gem install bundler.

It was installed into the path:

/usr/local/rvm/gems/ruby-1.9.2-p290@myapp/gems

Bundler via Capistrano installed the remaining gems into:

/usr/local/rvm/gems/ruby-1.9.2-p290@myapp/ruby/1.9.1/gems

Beginning of my deploy.rb file is:

$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require 'rvm/capistrano'
require 'bundler/capistrano'

set :rails_env,             'production'
set :rvm_type,              :system
set :rvm_ruby_string, "ruby-1.9.2-p290@myapp"
set :rvm_path,              "/usr/local/rvm"
set :rvm_bin_path,      "#{rvm_path}/bin"
set :rvm_lib_path,      "#{rvm_path}/lib"

set :default_environment, {
  'PATH'                    => "#{rvm_path}/gems/ruby/1.9.1/bin:#{rvm_bin_path}/bin:$PATH",
  'RUBY_VERSION'    => '1.9.2',
  'GEM_HOME'        => "#{rvm_path}/gems/#{rvm_ruby_string}",
  'GEM_PATH'        => "#{rvm_path}/gems/#{rvm_ruby_string}",
  'BUNDLE_PATH'     => "#{rvm_path}/gems/#{rvm_ruby_string}"
}

set :bundle_dir,            "#{rvm_path}/gems/#{rvm_ruby_string}"
set :bundle_flags,      "--deployment --verbose"

Best Answer

Annoyingly, bundler folks have no intention on working well with RVM and want bundler to manage ruby versions so the workaround so far for me is to simply symbollically link for ruby and 1.9.1 in my GEM_PATH directory pointing to "."

Related Topic