我使用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
。
有人遇到类似的情况吗?
答案 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_name
或cap 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版本。