Gemfile.lock不会覆盖Gemfile

时间:2012-06-21 00:21:13

标签: ruby gem bundler

我读到在Rails项目中的命令行中执行bundle install时,从Gemfile.lock加载了gems(依赖项)。

但是,在启动bundle update时,会从Gemfile加载依赖项,因此会在Gemfile.lock中更新值。

所以我有一个包含以下内容的GemFile:

  

gem“airbrake”,:git => “https://github.com/mico12/airbrake.git”

和一个包含:

的Gemfile.lock
  

GIT remote:git://github.com/airbrake/airbrake.git
  修订:   15444189dfce4916ff35f326f6c34b8dce9b933d
  规格:

airbrake (3.0.9)
  activesupport
  builder

为什么当我执行bundle install时,我得到了:

  

获取https://github.com/mico12/airbrake.git *

而不是(我预期):

  

获取https://github.com/airbrake/airbrake.git *

似乎无论如何都是从Gemfile加载依赖项,尽管我期望存储库用户“airbrake”被指向。

Gemfile和Gemfile.lock之间的关系对我来说不是很清楚。

1 个答案:

答案 0 :(得分:1)

您在Gemfile中指定依赖项。当您运行bundle installbundle update时,bundler会安装Gemfile指定的gem,并将冻结(锁定)依赖关系树写入Gemfile.lock。

当应用程序运行时,Rails会查看Gemfile.lock并加载所有gem。

根据您的示例,由于您指定了mico12的空中制动叉,bundle installbundle update应从https://github.com/mico12/airbrake.git获取。完成后,这也应该在Gemfile.lock文件中。