2

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

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

我真的不明白为什么install要运行两次。这三个命令按这个顺序运行的效果是什么?

4

2 回答 2

5

您不必运行bundle install两次,因为bundle update还会安装所有 gem(以及将它们更新到最新版本)。我没有阅读您提到的教程,但也许第二个的目的install是安装所有的 gem,包括那些为生产保留的。

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

  1. bundle install --without production

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

  2. bundle update

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

  3. bundle install

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

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

于 2013-08-14T17:46:10.987 回答
-1

$ bundle install --without production防止 bundler 安装任何生产 gem。它还会保存在您的本地存储库中,您不必多次运行它。任何后续运行都bundle install将包括--without production.

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

于 2013-08-14T17:34:53.513 回答