我只是在为类似的问题而苦苦挣扎,搜索了一个解决方案,并找到了您的问题。无论如何,就我而言,我已将 Ruby 版本指定为 1.9.3-p327 无处不在:在我的 .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}"
为什么 Capistrano 把它变成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 版本,也不必再碰它。