【问题标题】:Multiple Rails apps and Ruby versions with rbenv带有 rbenv 的多个 Rails 应用程序和 Ruby 版本
【发布时间】:2014-08-17 19:58:56
【问题描述】:

我的开发环境中有多个 Rails 应用程序,从 3.2.14 到 3.2.18。我正在为这些应用程序使用 Ruby 1.9.3(是的,我知道),它是通过 rbenv 安装和管理的。我即将使用 Rails 4.1 和 Ruby 2.1 构建几个新应用程序。我的问题是,使用 rbenv 安装多个版本的 Ruby 的最佳方法是什么。目前 1.9.3 设置为全局,但我希望不同的 Rails 应用程序 (4.1) 使用 Ruby 2.1。

我想我在 Ruby 管理方面有点落后,所以我可以在这里帮忙。同样,希望有多个 Rails 应用程序(不同版本 3.2.14-4.1.x)和多个 Ruby 实例来支持每个应用程序。

提前感谢您的帮助。

【问题讨论】:

    标签: ruby ruby-on-rails-3 rbenv


    【解决方案1】:

    在您的应用程序根目录中创建一个.ruby-version 文件并指定您想要的 ruby​​ 版本。例如,如果您希望一个应用程序使用 1.9.3 和另一个 2.1.0,您将在这两个应用程序中各有一个 .ruby-version 文件,指定版本:

    /application1/.ruby-version
    1.9.3
    
    /application2/.ruby-version
    2.1.0
    

    更新

    对于每个已安装的 ruby​​ 版本,您都将拥有一个 shims 目录,其中包含该特定版本的所有 gem。当您在 ruby​​ 版本之间切换时,rbenv 会简单地将环境变量设置为您选择的那个。

    在上面的示例中,我将目录 ruby​​_cookbook 的本地 ruby​​ 版本设置为 2.1.2,gem list 将仅显示为 2.1.2 安装的 gem。

    我还在我的try_stuff 目录中创建了一个带有 ruby​​ 版本 1.9.3-p547 的.ruby-version。如您所见,gem list 仅显示为 1.9.3 安装的 gem。

    您安装的 gem 特定于当前版本的 ruby​​。

    如果您的项目根目录有一个.ruby-version 文件,您的环境会自动将当前的 ruby​​ 版本设置为指定的版本。所以,是的,您的生产环境将需要您在.ruby-version 中提到的版本。如果您使用 git 进行源代码控制,您可以将该文件添加到您的 .git-ignore 中,并且您不会在您的 prod 版本中看到它。

    【讨论】:

    • 感谢您的回答,您能否详细说明它如何处理安装在系统范围内(例如 mailcatcher)并且位于 Ruby rbenv 1.9.3 目录中的 gem?我是否必须重新安装 gems 或进行其他配置?如果我在我的应用程序目录中创建一个 .ruby-version 文件,这是否意味着当我部署到生产环境时,它也会期望安装该版本的 Ruby?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 2017-11-18
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多