我正在解析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.机架的规格,但顶部附近还有其他两个规格的依赖项)
此规则的一个例外是bundler
,它被列为依赖项而不是规范。为什么是这样?是否因为Gemfile.lock中未包含已在系统级别安装的gem?还是这是一种特殊情况,因为捆绑程序是生成Gemfile的宝石,所以它不包含自身?
答案 0 :(得分:1)
如果已经安装了所需的任何宝石,Bundler将使用它们。将所需的gem安装到系统后,捆绑程序会将安装的所有gem和版本的快照写入Gemfile.lock
https://bundler.io/rationale.html
由bundler
创建Gemfile.lock
,并且是bunler
安装的所有依赖项的列表。由于bundler
不会自行安装,因此不包含在内。它使其成为一种特殊的宝石-需要安装该宝石才能引导红宝石应用程序。