我在安装了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。
有谁遇到过类似的情况吗?
发布于 2012-11-23 19:09:50
我正在为一个类似的问题而苦苦挣扎,我在谷歌上寻找解决方案,找到了你的问题。无论如何,在我的例子中,我已经将Ruby版本指定为1.9.3-p327 everywhere:在我的.bashrc文件(rvm --default use 1.9.3-p327)中,在应用程序的.rvmrc文件(rvm use 1.9.3-p327@my_app_name)中,等等,当我命令cap deploy或cap deploy:setup时,我仍然得到这个输出
*** [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'原来问题出在Capistrano的配置文件my_app_name/config/deploy.rb中。它是这样定义Ruby版本的:
set :rvm_ruby_string, "1.9.3@#{application}"为什么卡普斯特拉诺把它变成了1.9.3-p286,这对我来说仍然是个谜。无论如何,我将Ruby补丁级别添加到行中,如下所示:
set :rvm_ruby_string, "1.9.3-p327@#{application}"然后cap deploy:setup和cap deploy开始工作。
此外,我发现Capistrano添加了使用应用程序的.rvmrc文件(see this)中给出的Ruby版本的可能性,因此您只需将该行设置为
set :rvm_ruby_string, :local再也不用碰它了,即使你在.rvmrc中改变了Ruby的版本。
https://stackoverflow.com/questions/13099646
复制相似问题