ruby - 无论来源如何,都使用最新的 gem 版本

标签 ruby rubygems github

我可以要求 ruby​​ 或 ruby​​gems 使用最新的 gem 而不管它的来源吗?

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

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

我可以强制使用 ruby​​forge

gem "roo"

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

最佳答案

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

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

作为库的作者,如果我要进行会破坏 API 旧用法的更改,我通常会提醒人们一两个版本。但是,有时人们会暂时不更新,并因此而陷入困境。幸运的是,大多数人都很小心,并且把事情做好了。不要成为未经测试就直接在生产环境中更新库的人。 :-)

关于ruby - 无论来源如何,都使用最新的 gem 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1115065/

相关文章:

php - 通过 HTTPS 使用具有私有(private) GitHub 存储库的 Composer

github - 将(私有(private))Github 存储库克隆到 EC2

ruby - 是否可以创建一个模块或父类,使所有方法成为 Ruby 中的类方法?

ruby-on-rails - 关于Ruby中symbol和instance method的一些问题

ruby - Rails has_many 关联导致 "no such column"错误

OS X Lion 上的 RubyGems 问题

ruby-on-rails - nokogiri-1.7.0.1 要求 ruby​​ 版本 >= 2.1.0,与当前版本 ruby​​ 2.0.0p648 不兼容

ruby - 无法安装某些 gem

github - 如果工作流程触及特定文件或者是带有特定文件的拉取请求,如何触发工作流程操作

ruby - 将 Rails 从 5.1 升级到 5.2 后,我收到以下警告消息