Capistrano使用Ruby 1.8而不是1.9.3

时间:2013-09-18 19:59:28

标签: ruby capistrano

我有一个非常奇怪的问题。在我的远程服务器(Max OSX Server)上,我通过RVM安装了Ruby 1.9.3。当我输入ruby -v时,我会

ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.3.0]

当我输入which bundle时,我会

/Users/moby/.rvm/gems/ruby-1.9.3-p448/bin/bundle

如果我在我的Rails项目中bundle install,它会成功而没有任何错误。

但是,当我在本地计算机上通过cap deploy:cold尝试Capistrano时,SSH进入远程计算机,部署失败并出现以下错误:

  

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:777:in   `report_activate_error':找不到RubyGem bundler(> = 0)   (GEM :: LoadError)

为什么使用Ruby 1.8?如何让它使用Ruby 1.9.3呢?

3 个答案:

答案 0 :(得分:0)

我能够通过以下方式解决问题:

SSH进入远程服务器,并打印出以下值:

$PATH
$RUBY_VERSION
$GEM_HOME
$GEM_PATH
$BUNDLE_PATH

将以下条目添加到deploy.rb文件中,将每个键的值设置为上面的相应输出:

set :default_environment, {
  'PATH' => "/Users/USERNAME/.rvm/gems/ruby-1.9.3-p448/bin:/Users/USERNAME/.rvm/gems/ruby-1.9.3-p448@global/bin:/Users/USERNAME/.rvm/rubies/ruby-1.9.3-p448/bin:/Users/USERNAME/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Applications/Server.app/Contents/ServerRoot/usr/bin:/Applications/Server.app/Contents/ServerRoot/usr/sbin:/usr/local/git/bin",
  "RUBY_VERSION" => "ruby 1.9.3",
  "GEM_HOME" => "/Users/USERNAME/.rvm/gems/ruby-1.9.3-p448",
  "GEM_PATH" => "/Users/USERNAME/.rvm/gems/ruby-1.9.3-p448:/Users/OraServer1Admin/.rvm/gems/ruby-1.9.3-p448@global",
  "BUNDLE_PATH" => "/Users/USERNAME/.rvm/gems/ruby-1.9.3-p448/bin/bundle"
}

答案 1 :(得分:0)

这篇文章为您的问题提供了几个有效的解决方案:

How do I configure capistrano to use my rvm version of Ruby

答案 2 :(得分:0)

  

sudo update-alternatives --config gem

并选择正确的版本