【问题标题】:RVM-capistrano gem, cannot find ruby-1.9.3-p0RVM-capistrano gem,找不到 ruby​​-1.9.3-p0
【发布时间】:2012-10-27 11:11:40
【问题描述】:

我用 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

有人遇到过类似情况吗?

【问题讨论】:

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


    【解决方案1】:

    我只是在为类似的问题而苦苦挣扎,搜索了一个解决方案,并找到了您的问题。无论如何,就我而言,我已将 Ruby 版本指定为 1.9.3-p327 无处不在:在我的 .bashrc 文件中 (rvm --default use 1.9.3-p327),在应用程序的 .rvmrc 文件中 (rvm use 1.9.3-p327@my_app_name) 等等,我仍然命令cap deploycap 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:setupcap deploy 开始工作。

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

    set :rvm_ruby_string,           :local
    

    即使您在.rvmrc 中更改了 Ruby 版本,也不必再碰它。

    【讨论】:

    • 感谢分享您的解决方案。我相信它会在不久的将来派上用场。我在此期间所做的就是坚持使用 Heroku :P 我试图部署到 Bluehost,但无论如何我认为这不是一个好主意。总有一天会在 VPS 上做到这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 2014-01-24
    • 2012-04-26
    相关资源
    最近更新 更多