【问题标题】:Use rvmrc or ruby-version file to set a project gemset with RVM?使用 rvmrc 或 ruby​​-version 文件使用 RVM 设置项目 gemset?
【发布时间】:2013-03-20 11:44:39
【问题描述】:

我使用 RVM,Ruby Version Manager 为我的每个 Rails 项目指定一个 Ruby 版本和一组 gem。

每当我 cd 进入项目目录时,我有一个 .rvmrc 文件来自动选择 Ruby 版本和 gemset。

安装 RVM 1.19.0 后,我收到一条消息

你正在使用.rvmrc,它需要信任,它更慢而且它是 与其他 ruby​​ 管理器不兼容,可以切换到 .ruby-version 使用 rvm rvmrc to [.]ruby-version 或忽略此 带有rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc 的警告, .rvmrc 将继续作为 RVM 1 和 RVM 中的默认项目文件 2、忽略所有文件运行rvm rvmrc warning ignore all.rvmrcs的警告。

我应该继续使用我的.rvmrc 文件还是应该切换到.ruby-version 文件?哪个是最优的?有什么后果?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 rvm rvmrc


    【解决方案1】:

    如果您的 .rvmrc 文件包含自定义 shell 代码,请继续使用 .rvmrc,因为它允许您包含任何 shell 代码。

    如果您的唯一目标是切换 Ruby 版本,请使用 .ruby-version,其他 Ruby 版本切换器(例如 rbenvchruby)支持它。该文件也不需要信任,因为它只是 Ruby 版本的名称,不会以任何方式执行。

    如果您使用.ruby-version,您可以在文件中包含@gemset,但这与其他切换器不兼容。为了保持兼容性,请在单独的文件 .ruby-gemset 中使用 gemset 名称,该文件会被其他工具忽略(它只能与 .ruby-version 一起使用)

    例如,如果您有一个简单的.rvmrc

    rvm use 1.9.3@my-app
    

    可以转化为.ruby-version:

    1.9.3
    

    还有.ruby-gemset:

    my-app
    

    请务必删除 .rvmrc 文件,因为它优先于任何其他项目配置文件:

    rm .rvmrc
    

    【讨论】:

    • 请注意,并非所有应用程序都支持较新的 .ruby-version 和 .ruby-gemset 文件,而仅支持 .rvmrc。 (特别是RubyMine)。这当然会影响您选择是否迁移到新系统。我已经在答案中指出了这一点,因为我花了很多时间来追踪它。但是由于某种原因我的答案被删除了..
    • 是否有任何“官方”文档的链接?我开始研究它在 RVM 站点中是如何工作的,但只是发现一些模糊的提及它是新的 rvmrc 文件,但没有关于它应该如何工作。
    • 它没有完全记录,但这是我们已经拥有的 rvm.io/workflow/projects/#ruby-versions
    • 简单地将 1.9.3-p194 放入 .ruby-version 对我不起作用。参考上面的文档,rvm --create --ruby-version use 1.9.3-p194做的工作,里面的内容其实是ruby-1.9.3-p194
    • RubyMine 的当前版本确实支持 .ruby-version 样式。可以用6.3.2确认
    【解决方案2】:

    从 .rvmrc 切换到 .ruby-version + .ruby-gemset 的快捷方式

    rvm rvmrc to .ruby-version
    

    【讨论】:

    • 是的,但它会将 [] 放在 .出于某种我还没有弄清楚的原因。 (也许这是我不熟悉的约定。)实际上,我用谷歌搜索了这条消息并找到了这个答案,因为尴尬的措辞和 [] 让我不确定实际运行什么。
    • @zem [.]ruby-version中的[]表示the dot is optional;方括号是表示可选性的常用约定(通常,不是在 ruby​​ 中。)所以你可以使用一个名为“ruby-version”的文件,不带点,也可以使用。如果您希望在默认情况下隐藏“点文件”的系统上获得更多的文件可见性,这将很有用。不过,我同意这不是那么清楚。
    • 上面写着Could not load .rvmrc
    【解决方案3】:

    如果您想以简短的方式创建.ruby-version.ruby-gemset 文件,您可以使用如下命令:

    rvm use 2.1.1@nancy --create
    
    rvm --create --ruby-version 2.1.1@nancy
    

    【讨论】:

      【解决方案4】:

      两个都可以试试。 转到项目的根目录,创建一个 .rvmrc 文件 (touch .rvmrc),然后编辑 rvm use 2.0.0-p451@your_gemset(您的 ruby​​ 版本和 gemset 名称)。 保存此文件后,您可以输入以下命令:

      cd ../your_project(您在 your_project 目录中),.rvmrc 中的脚本将执行。

      RVM 推荐使用 ruby​​-version。您可以运行此命令从 .rvmrc 切换到 .ruby-version

      rvm rvmrc to .ruby-version

      它的作用是创建 2 个文件名 .ruby-version.ruby-gemset 并添加这一行

      .ruby 版本中的ruby-2.0.0-p451

      .ruby-gemset 中的your_gemset

      如果需要,您可以尝试手动操作:)

      【讨论】:

        【解决方案5】:

        安装 rvm 使用:

        \curl -sSL https://get.rvm.io | bash -s stable --rails
        

        安装不同的 ruby​​ 版本:

        rvm install 1.8.7
        rvm install 1.9.2
        

        切换到特定的 ruby​​ 版本。比如1.8.7:

        rvm use 1.8.7
        

        创建宝石:

        rvm gemset create project_gemset
        

        并使用 gemset:

        rvm gemset use project_gemset
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-07
          相关资源
          最近更新 更多