2

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

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

我怀疑魔法小精灵(红宝石或红宝石)在查看“r”之前先查看“h”。

我可以强制使用 ruby​​forge 一个

gem "roo"

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

4

2 回答 2

1

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

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

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

于 2009-09-27T01:16:53.280 回答
0

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

RubyGems 手册 - 第 4 章

于 2009-07-13T16:18:33.777 回答