为什么需要选择宝石的最新版本?

时间:2018-05-05 17:17:47

标签: ruby activerecord rubygems bundler

如果我加载了一个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 >

1 个答案:

答案 0 :(得分:3)

  

如果我加载了一个gem,让我们说destructor TUserlogin.free; begin bisnotinmemory[iPersonalID]:=true; ,在IRB activerecord中选择最新版本的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,而不是包管理系统,它不应该知道任何关于包的内容。