这是更多好奇的问题,而不是问题。当系统上存在多个版本时,使用命令时选择哪些版本require
?故事的背景是:我正在bundler
项目(不是Rails项目)中实现gem。我没有问题,但其他开发人员有问题,经过快速调查,我意识到我没有使用
require "bundler/setup"
这基本上加载了捆绑的宝石。快速修复,但它让我想知道通过 rubygems 的 ruby 如何决定使用哪些宝石。由于 Ruby 应用程序使用了其中一个 gem 的旧版本,而不是新版本,因此代码损坏了。这意味着它不使用“最新”的宝石,那么它背后的逻辑是什么?
更新
为了进一步解释这个问题,假设你有宝石foo-1.0.1
,foo-1.0.2
当你说,require 'foo'
红宝石如何知道要加载哪个?