1

当我bundle install第一次运行时,这将为我创建一个 gemfile.lock

在此之后我的问题是:

如果我bundle install第二次运行 bundler 会做什么?

我认为它首先查看gemfile.lock并检查每一行,然后查看gemfile并检查 gemfile.lock 中不存在的 gem,然后安装它们!我不确定,如果有人可以向我解释(一步一步)

第二个问题是:

例如,我添加了这样的 gem gem 'nokogiri', '~> 1.4.2',假设 1 个月后,版本 1.4.3 可用。我认为如果我再次运行 bundle install 它将自动安装?

这个“带有微小更新”的新版本可以破坏我的应用程序吗?

4

2 回答 2

1

的职责Gemfile.lock是锁定您使用的 gem 的版本。安装所有不在你的包中的
bundle installgem,并将版本记录在.GemfileGemfile.lock

bundle install仅安装您的 gems 版本,即记录器在Gemfile.lock. 它永远不会更新任何宝石。

要更新 gem,请使用bundle update. 它会查找新版本的 gem,安装它们并将新版本记录在Gemfile.lock.

如果您Gemfile在示例中指定了您喜欢的版本

gem 'nokogiri', '~> 1.4.2'

bundle upate只会更新nokogiri到修订< 1.5
任何更新(实际上是任何更改)都可能会破坏您的应用程序,但较小的更新应该是完全向后兼容的(稳定的 API,只有新测试,所有旧测试通过)

于 2013-06-03T20:26:53.083 回答
0

文档中,

(...) 第一次运行bundle install时(并且Gemfile.lock不存在),bundler 将获取所有远程源,解决依赖关系并安装所有需要的 gem。

如果Gemfile.lock确实存在,并且您尚未更新Gemfile,则捆绑程序将获取所有远程源,但使用Gemfile.lock中指定的依赖项而不是解析依赖项。

于 2013-06-03T22:30:35.823 回答