为什么"安装"运行两次?

tem*_*ame 2 ruby-on-rails bundler

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

$ bundle install --without production
$ bundle update
$ bundle install
Run Code Online (Sandbox Code Playgroud)

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

Dse*_*sel 5

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

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

  1. bundle install --without production

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

  2. bundle update

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

  3. bundle install

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

希望这有助于,有关这两个命令的更多详细信息,请查看这个这个.