Почему bundler является зависимостью, а не спецификацией в Gemfile.lock? - PullRequest
0 голосов
/ 07 января 2019

Я анализирую Gemfile.lock, чтобы создать граф зависимостей. Образец файла:

rack-ssl (1.3.4)
    rack
rack-test (0.6.3)
    rack (>= 1.0)
rails (3.2.22.1)
    actionmailer (= 3.2.22.1)
    actionpack (= 3.2.22.1)
    activerecord (= 3.2.22.1)
    activeresource (= 3.2.22.1)
    activesupport (= 3.2.22.1)
    bundler (~> 1.0)
    railties (= 3.2.22.1)
rack (1.4.7)

Это список спецификаций (гемов, которые необходимо установить для этого проекта), за которыми следует список зависимостей этой спецификации с отступом. Поскольку каждая зависимость должна быть установлена, все они перечислены как спецификации где-то еще в файле. (E.G. rack указан в виде спецификации в нижней части образца, но является зависимостью для двух других спецификаций в верхней части)

Единственное исключение из этого правила - bundler, которое указано как зависимость, но не как спецификация. Почему это? Это потому, что гемы, уже установленные на системном уровне, не включены в Gemfile.lock? Или это особый случай, потому что bundler - это гем, который генерирует Gemfiles, поэтому он не включает себя?

1 Ответ

0 голосов
/ 07 января 2019

Если какие-либо из необходимых драгоценных камней уже установлены, Bundler будет их использовать. После установки любых необходимых драгоценных камней в вашу систему, упаковщик записывает снимок всех драгоценных камней и версий, которые он установил, в Gemfile.lock

https://bundler.io/rationale.html

Это bundler, который создает Gemfile.lock, и это список всех зависимостей, которые установлены bunler. Поскольку bundler не устанавливается самостоятельно, он не включается. Это делает его особым драгоценным камнем - тем, который нужно установить для начальной загрузки приложения ruby.

...