2012-06-21 40 views
0

我读,在命令行执行bundle install当Rails项目内,宝石(依赖关系)从Gemfile.lock的加载。Gemfile.lock的不覆盖的Gemfile

然而,启动时bundle update,依赖关系是从加载的Gemfile,因此值的更新制成Gemfile.lock的。

所以我有含有的Gemfile:

宝石 “空气制动”,:GIT中=> “https://github.com/mico12/airbrake.git”

和的Gemfile .lock含有:

GIT远程: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中任何必须指出,虽然笔者预计库用户“空气制动”的情况下加载。

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

+1

这是一个很好的阅读:http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/ –

+0

我刚刚阅读它之前问我的问题:) – Mik378

回答

1

你在Gemfile中指定的依赖。当您运行bundle installbundle update,捆绑安装的Gemfile中指定的宝石,并写入冻结(锁定)依赖关系树Gemfile.lock的。

当应用程序运行时,Rails将进入Gemfile.lock的并加载所有宝石。

随着你的榜样,因为你指定的气闸mico12的叉子,bundle installbundle update应该https://github.com/mico12/airbrake.git取。完成后,这应该也在Gemfile.lock文件中。