代码之家  ›  专栏  ›  技术社区  ›  eiko

为什么bundler是依赖项而不是gemfile.lock中的规范?

  •  1
  • eiko  · 技术社区  · 7 年前

    我正在分析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)
    

    它是一个规范列表(需要为此项目安装的gems),后面是该规范依赖项的缩进列表。因为每个依赖项都需要安装,所以它们都列为文件中其他地方的规范。(例如,机架列为样本底部的规格,但与靠近顶部的其他两个规格相关)

    这个规则的一个例外是 bundler ,哪个列为依赖项,而不是规范。这是为什么?是因为gemfile.lock中没有包含系统级安装的gems吗?或者这是一个特殊情况,因为bundler是生成gemfiles的gem,所以它不包含自己?

    1 回复  |  直到 7 年前
        1
  •  1
  •   mrzasa    7 年前

    如果已经安装了任何需要的gems,bundler将使用它们。在将任何需要的gems安装到系统中之后,bundler会将所有gems及其安装版本的快照写入gemfile.lock。

    https://bundler.io/rationale.html

    它是 bundler 那创造 Gemfile.lock 它是由安装的所有依赖项的列表 bunler . AS 捆扎机 不自行安装,不包括在内。它使之成为一块特殊的宝石——需要安装它来引导Ruby应用程序。

    推荐文章