RVM-capistrano gem,找不到ruby-1.9.3-p0

时间:2012-10-27 11:11:40

标签: ruby-on-rails rvm rvm-capistrano

我使用RVM在我的服务器上安装了ruby-1.9.3-p286,并在终端中使用ruby -v进行了确认。

但是,请按照RVM-Capistrano gem integration的说明进行操作,

set :rvm_ruby_string,  ENV['GEM_HOME'].gsub(/.*\//,"")
require 'rvm/capistrano'

并且正在运行cap deploy,它仍然坚持运行ruby-1.9.3-p0,当然它无法找到它。

在终端中手动打开irb并运行ENV['GEM_HOME'].gsub(/.*\//,"")会返回ruby-1.9.3-p286,所以我很困惑为什么一直要求ruby-1.9.3-p0

有人遇到类似的情况吗?

1 个答案:

答案 0 :(得分:1)

我正在努力解决类似的问题,谷歌搜索解决方案,并找到了你的问题。无论如何,就我而言,我已经将Ruby版本指定为1.9.3-p327无处不在:在我的.bashrc文件(rvm --default use 1.9.3-p327)中,在应用程序的.rvmrc文件中{{1 }})等,在命令rvm use 1.9.3-p327@my_app_namecap deploy时我仍然得到了这个输出:

cap deploy:setup

原来问题出现在Capistrano的配置文件*** [err :: localhost] ruby-1.9.3-p286 is not installed. ** [out :: localhost] To install do: 'rvm install ruby-1.9.3-p286' *** [err :: localhost] Error: RVM was unable to use '1.9.3@my_app_name' 中。它定义了这样的Ruby版本:

my_app_name/config/deploy.rb

为什么卡皮斯特拉诺把这变成set :rvm_ruby_string, "1.9.3@#{application}" 对我来说仍然是一个谜。无论如何,我将Ruby补丁级别添加到该行中,如下所示:

1.9.3-p286

然后set :rvm_ruby_string, "1.9.3-p327@#{application}" cap deploy:setup开始工作。

此外,我发现Capistrano已经添加了使用应用程序的cap deploy文件(see this)中给出的Ruby版本的可能性,因此您可以将该行设置为

.rvmrc

并且永远不必再次触摸它,即使您在set :rvm_ruby_string, :local 中更改了Ruby版本。