Я анализирую 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, поэтому он не включает себя?