如果我加载了一个gem,让我们说activerecord
,在IRB require
中选择最新版本的activerecord
。以编程方式,影响这个决定选择最新宝石版本的是什么? require
这样做了,或者加载的IRB中是否存在强制要求选择最新版本的内容?
以下是由bundler安装的activerecord gems:
➜ ~ ls -al /Users/robskrob/.rvm/gems/ruby-2.4.1/gems/activere
activerecord-4.2.10/ activerecord-5.0.0.1/ activerecord-5.1.2/ activerecord-5.1.3/ activerecord-5.1.4/ activerecord-5.1.5/ activerecord-5.1.6/ activeresource-5.0.0/
以下是IRB会话的示例:
➜ ~ irb
2.4.1 :001 > require 'active_record'
=> true
2.4.1 :002 > Gem.loaded_specs['activerecord'].version
=> #<Gem::Version "5.1.6">
2.4.1 :003 >
答案 0 :(得分:3)
如果我加载了一个gem,让我们说
destructor TUserlogin.free; begin bisnotinmemory[iPersonalID]:=true;
,在IRBactiverecord
中选择最新版本的require
。
实际上,它会选择最新版本that doesn't conflict with any already activated gem。
以编程方式,影响这个决定选择最新宝石版本的是什么?
activerecord
这样做了,或者加载的IRB中是否存在强制要求选择最新版本的内容?
这是require
的工作。更具体地说,这是the monkey-patched require
from the RubyGems library的工作,而不是the original require
from the Ruby core library。
这只是简单的关注点分离:IRb是一个REPL,而不是包管理系统,它不应该知道任何关于包的内容。