为什么“安装”运行两次?

时间:2013-08-14 17:01:08

标签: ruby-on-rails bundler

我正在阅读Micharl Hartl众所周知的Rails教程,这篇文章令我感到困惑。每次设置新应用程序时,都会运行以下命令:

$ bundle install --without production
$ bundle update
$ bundle install

我真的不明白为什么install被运行两次。这三个命令在这个序列中运行的影响是什么?

2 个答案:

答案 0 :(得分:5)

您不必运行bundle install两次bundle update也将安装所有宝石(以及将其更新为最新版本)。我没有阅读你提到的教程,但第二个install的目的可能是安装所有宝石,包括那些为生产保留的宝石。

你的第二个问题,这三个命令的作用是什么:

  1. bundle install --without production

    • 检查gemfile,忽略为生产保留的宝石
    • 解决所有依赖关系
    • 安装所有宝石和相关宝石
    • 将每个gem的确切版本保存到Gemfile.lock

  2. bundle update

    • 检查gemfile
    • 使用每个gem的最新版本从头开始解析所有依赖项并完全忽略Gemfile.lock
    • 安装所有宝石和相关宝石
    • 将每个gem的确切版本保存到Gemfile.lock

  3. bundle install

    • 因为这是生产宝石的第一次运行,请检查gemfile并解决生产宝石的依赖关系
    • 使用Gemfile.lock获取要安装的所有其他宝石的确切版本
    • 安装所有宝石和相关宝石
    • 将每个gem的确切版本保存到Gemfile.lock

  4. 希望这有所帮助,有关这两个命令的详细信息,请查看thisthis

答案 1 :(得分:-1)

$ bundle install --without production可阻止bundler安装任何生产宝石。它也会保存在您的本地存储库中,您不必多次运行它。任何后续的bundle install运行都将包含--without production

bundle install只安装Gemfile中缺少的gem,而bundle update将每个gem更新/安装到GemFile中指定的最新版本。