使用两个命令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)
但如果我只使用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/...
和Resolving dependencies...
,那么它们有何不同?
我一直只使用bundle
,但尝试bundle update
并注意到差异。
答案 0 :(得分:9)
简而言之:bundle install处理对Gemfile的更改 捆绑包更新升级已由Bundler管理的宝石。
http://viget.com/extend/bundler-best-practices
毋庸置疑bundle
和bundle install
是同一个命令,install
是bundle
的默认选项。
答案 1 :(得分:5)
bundle
与bundle install
相同,后者执行以下操作:
Gemfile.lock
是否存在。如果是,请安装所有具有指定版本的宝石。Gemfile
使用最新的可用/允许版本安装Gemfile
中指定的gem。然后创建Gemfile.lock
以记录已安装的版本。 bundle update
删除/忽略您的Gemfile.lock
并直接进入第二步。
您看到的错误可能是因为某些gem希望active_support
处于3.x.x
版本范围内,而您似乎正在尝试升级到Rails 4.