Почему требуется выбрать последнюю версию драгоценного камня? - PullRequest
0 голосов
/ 05 мая 2018

Если я загружаю драгоценный камень, скажем, activerecord, в IRB require выбирает последнюю версию activerecord. Программно, что влияет на это решение выбрать последнюю версию гема? require делает это или в загруженном IRB есть что-то, что заставляет выбирать последнюю версию?

Вот мои драгоценные камни activerecord, установленные компоновщиком:

➜  ~ 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 голосов
/ 05 мая 2018

Если я загружаю драгоценный камень, скажем, activerecord, в IRB require выбирает последнюю версию activerecord.

На самом деле, он выбирает последнюю версию , которая не конфликтует ни с одним из уже активированных самоцветов .

Программно, что влияет на это решение выбрать последнюю версию гема? require делает это, или в загруженном IRB есть что-то, что заставляет выбирать последнюю версию?

Это работа require. Более конкретно, это работа с исправлениями обезьян require из библиотеки RubyGems , а не оригинала require из базовой библиотеки Ruby .

Это просто простое разделение задач: IRb - это REPL, а не система управления пакетами, он не должен ничего знать о пакетах.

...