【问题标题】:Changing Ruby version during deploy在部署期间更改 Ruby 版本
【发布时间】:2013-03-15 17:22:31
【问题描述】:

我有一个盒子,上面有 3 个 Rails 应用程序。我不想升级其中一个应用程序以使其使用 Ruby 2.0.0,而让其他应用程序在 1.9.3-p394 上运行。我通过 Rvm 安装了这两个红宝石。

我正在尝试通过 Gemfile 控制每个应用使用的 Ruby 版本。

# Gemfile
ruby '2.0.0'

所以,我在本地更改了 Gemfile 中的版本号,确保一切正常并提交,现在我正在尝试将更改部署到服务器。

但是,此时cap deploy 失败

bundle install --gemfile [path to release Gemfile] --path [path to app bundle] --deployment --quiet --without development test

因为

Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0

这在技术上是正确的,我的 Gemfile 确实指定了 2.0.0,并且该应用程序当前在 1.9.3 上运行。我试图让它在捆绑之前改变版本。我该怎么做?

【问题讨论】:

    标签: ruby deployment capistrano bundler


    【解决方案1】:

    您的 PATH 设置不正确。您可能没有 bin: 作为路径中的第一个条目。这会导致这个错误。

    即使您不使用 Heroku,也值得阅读此页面以解决该问题:https://devcenter.heroku.com/articles/ruby-versions

    这是一个答案链接,它将解释如何在服务器上更改 PATH:Capistrano: Can I set an environment variable for the whole cap session?

    【讨论】:

    • 路径中我想要哪个bin? Rails 根目录中的那个对吗?我已将set :default_environment, { 'PATH' => "[path to rails root]/bin:$PATH" } 添加到我的部署配置中,它似乎没有任何改变。
    • PATH 中的第一个元素应该只是“bin:”,根据我在谷歌上搜索的文章,请参阅 heroku 文章
    • 作为一个单独的策略,你已经看过rvm.io/integration/capistrano了吗?
    • 是的,也试过裸体bin。不工作。 rvm-capistrano Gihub 自述文件中肯定有几个步骤我还没有完成。现在就试试。
    • 是的 - 我还在学习自己管理这些东西,所以我正在尝试为旧的记忆库追踪这个东西,以防我以后遇到它,所以我会添加我发现的任何东西这个评论线程或如果我找到一个明确的答案更新答案。
    【解决方案2】:

    如果你有 rvm 也许你可以尝试做

    rvm use 2.0.0
    

    在您调用捆绑程序之前。

    【讨论】:

      【解决方案3】:

      如果您使用 rvm,请在您的服务器上将默认设置为 ruby​​ 2.0.0

      rvm --default use 2.0.0
      

      解决了我从我的 mac 部署到 AWS 服务器的问题 - 但我想如果我需要更新我的旧站点,我必须在部署之前将默认设置回 1.9.3。

      【讨论】:

        猜你喜欢
        • 2012-03-14
        • 1970-01-01
        • 2019-12-07
        • 1970-01-01
        • 1970-01-01
        • 2015-01-04
        • 2021-06-30
        • 2019-05-31
        • 1970-01-01
        相关资源
        最近更新 更多