Есть практическое объяснение:
Допустим, мы хотим использовать гем pristine_text из главной ветви github
Gemfile:
gem "pristine_text", github: "nurettin/pristine_text"
main.rb: (неправильно)
require "pristine_text"
# error, can't find pristine_text
require не может найти его, потому что драгоценный камень не находится в пути, который может увидеть ruby.Если вы посмотрите на фактический путь драгоценного камня, вы увидите, что он находится под
/pristine-text-some_commit_id
main.rb: (справа)
require "bundler/setup"
require "pristine_text"
# no error
ошибка исчезла, потому что теперь вы загружаете компоновщик с путями загрузки ваших зависимостей.