我可以要求ruby或rubygems使用最新的宝石,无论其来源如何?
正如对this question的更新中所提到的,事实证明ruby正在使用较旧的github gem(hmcgowan-roo 1.3.5)而不是最近安装的较新的rubyforge gem(roo 1.3.6)
我怀疑魔法小精灵(红宝石或红宝石)看起来在“h”之下,然后在“r”下看。
我可以通过
强制使用rubyforgegem "roo"
但是有可能告诉ruby / rubygems我很高兴使用hmcgowan-roo或roo,但我想要最新版本?
答案 0 :(得分:1)
不,不幸的是,没有办法。就RubyGems而言,它们不是同一个gem,因此RubyGems无法自动确定哪个是最新版本。出于偏执的目的,如果没有调用gem方法并且您安装了相同库的多个版本,则require行应被视为非确定性。
一般情况下,您希望对gem方法的调用位于与您的需求不同的位置(这允许文件延迟加载),因此拥有一个只执行一个频繁更新的文件是完全合理的。一堆对gem方法的调用,以确保您拥有正确版本的所有内容。此外,在生产中,您通常不希望“给我最新版本”,因为最新版本可能已更改其API或重命名某些方法或类似,如果您没有测试它,你不知道它是否会破裂。您应该始终确保使用每个第三方库的特定的,已知的工作版本。
作为一名图书馆作者,如果我要进行更改以破坏旧版API的使用,我通常会向人们提供一两个版本。然而,有时人们不会更新一段时间,并被此抓住。幸运的是,大多数人都很小心,并且会举办活动。不要在没有测试的情况下直接在生产中更新库。 : - )
答案 1 :(得分:0)
您可以使用gem方法指定您想要的那个。