5

bundle使用这两个命令时我得到两个不同的结果bundle update

如果我使用bundle update,我会收到以下错误:

Resolving dependencies...
Bundler could not find compatible versions for gem "railties":
  In Gemfile:
    requirejs-rails (>= 0) ruby depends on
      railties (~> 3.1.1) ruby

    rails (= 4.0.0.rc2) ruby depends on
      railties (4.0.0.rc2)

Bundler could not find compatible versions for gem "rails":
  In Gemfile:
    requirejs-rails (>= 0) ruby depends on
      rails (~> 3.1.1) ruby

    rails (4.0.0.rc2)

但如果我使用 just bundle,我会得到以下结果:

Resolving dependencies...
Bundler could not find compatible versions for gem "activesupport":
  In snapshot (Gemfile.lock):
    activesupport (3.2.2)

  In Gemfile:
    rails (= 4.0.0.rc2) ruby depends on
      activesupport (= 4.0.0.rc2) ruby

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

错误指向两个不同的依赖问题,但是两个命令都是fetching gem metadata from https://rubygems.org/...and Resolving dependencies...,那么它们有什么不同呢?

我一直使用 just bundle,但尝试bundle update并注意到了差异。

4

2 回答 2

9

简而言之:bundle install 处理对 Gemfile 的更改,并且 bundle update 升级已经由 Bundler 管理的 gem。

http://viget.com/extend/bundler-best-practices

不用说bundlebundle install是同一个命令,install是默认选项bundle

于 2013-06-18T17:10:55.937 回答
5

bundle与 相同bundle install,它执行以下操作:

  • 检查是否Gemfile.lock存在。如果是这样,请使用此处指定的确切版本安装所有 gem。
  • 如果锁不存在,请按照 中指定的方式安装 gem,Gemfile根据Gemfile. 然后创建Gemfile.lock来记录安装了哪些版本。

bundle update另一方面,删除/忽略你的Gemfile.lock并直接进入第二步。

您看到的错误可能是因为某些 gem 想要active_support3.x.x版本范围内,而您似乎正在尝试升级到 Rails 4。

于 2013-06-18T17:12:40.520 回答