【问题标题】:Using the newest gem version regardless of source无论来源如何,都使用最新的 gem 版本
【发布时间】:2010-11-10 01:07:19
【问题描述】:

我可以要求 ruby​​ 或 ruby​​gems 使用最新的 gem,不管它的来源是什么?

正如this question 的更新中提到的,事实证明 ruby​​ 使用的是较旧的 github gem (hmcgowan-roo 1.3.5),而不是最近安装的较新的 ruby​​forge gem (roo 1.3.6)。

我怀疑魔法小精灵(ruby 或 ruby​​gems)在查看“r”之前先查看“h”。

我可以强制使用rubyforge

gem "roo"

但是是否可以告诉 ruby​​/rubygems 我很乐意使用 hmcgowan-roo 或 roo,但我想要最新版本?

【问题讨论】:

    标签: ruby rubygems github


    【解决方案1】:

    不,不幸的是没有办法。就 RubyGems 而言,它们不是同一个 gem,因此 RubyGems 无法自动确定哪个是最新版本。出于偏执的目的,如果没有调用 gem 方法并且您安装了同一个库的多个版本,则应该将 require 行视为不确定的。

    通常,您希望对 gem 方法的调用位于与您的要求不同的位置(这允许文件被延迟加载),因此拥有一个经常更新的文件是完全合理的,它只执行一个对 gem 方法的大量调用,以确保您获得了正确版本的所有内容。此外,在生产环境中,您通常不想“给我最新版本”,因为最新版本可能已经更改了它的 API 或重命名了某些方法或类似的东西,如果您没有针对它进行测试,那么您不会知道会不会坏。您应该始终确保您使用的是每个第三方库的特定、已知可用的版本。

    作为库作者,如果我要进行更改以破坏 API 的旧用法,我通常会提前告知人们一两个版本。但是,有时人们会暂时不更新,并被此抓住。幸运的是,大多数人都很小心,并且会安排事情。不要在没有测试的情况下直接在生产中更新库。 :-)

    【讨论】:

      【解决方案2】:

      您可以使用 gem 方法来指定您想要的。

      RubyGems Manual - Chapter 4

      【讨论】:

      • 喜欢我的问题中的“gem 'roo'”,还是使用一些额外的参数?
      • 您也可以使用 gem 命令设置您想要的版本。除此之外,我不确定是否有办法。我没有在手册中看到任何内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 2012-08-30
      • 2016-09-15
      • 2019-12-16
      • 1970-01-01
      • 2011-05-24
      相关资源
      最近更新 更多