1

我有一个非常奇怪的问题。在我的远程服务器(Max OSX 服务器)上,我通过 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

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

但是,当我在本地计算机上尝试使用 Capistrano viacap deploy:cold时,通过 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?

4

3 回答 3

0

sudo update-alternatives --config gem

并选择正确的版本

于 2014-06-23T10:22:31.553 回答
0

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

如何配置 capistrano 以使用我的 rvm 版本的 Ruby

于 2013-09-18T20:49:29.943 回答
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"
}
于 2013-09-18T20:35:54.673 回答