使用最新的宝石版本,无论来源如何

时间:2009-07-12 01:04:09

标签: ruby rubygems github

我可以要求ruby或rubygems使用最新的宝石,无论其来源如何?

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

我怀疑魔法小精灵(红宝石或红宝石)看起来在“h”之下,然后在“r”下看。

我可以通过

强制使用rubyforge
gem "roo"

但是有可能告诉ruby / ruby​​gems我很高兴使用hmcgowan-roo或roo,但我想要最新版本?

2 个答案:

答案 0 :(得分:1)

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

一般情况下,您希望对gem方法的调用位于与您的需求不同的位置(这允许文件延迟加载),因此拥有一个只执行一个频繁更新的文件是完全合理的。一堆对gem方法的调用,以确保您拥有正确版本的所有内容。此外,在生产中,您通常不希望“给我最新版本”,因为最新版本可能已更改其API或重命名某些方法或类似,如果您没有测试它,你不知道它是否会破裂。您应该始终确保使用每个第三方库的特定的,已知的工作版本。

作为一名图书馆作者,如果我要进行更改以破坏旧版API的使用,我通常会向人们提供一两个版本。然而,有时人们不会更新一段时间,并被此抓住。幸运的是,大多数人都很小心,并且会举办活动。不要在没有测试的情况下直接在生产中更新库。 : - )

答案 1 :(得分:0)

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

RubyGems Manual - Chapter 4