我读到在Rails项目中的命令行中执行bundle install
时,从Gemfile.lock加载了gems(依赖项)。
但是,在启动bundle update
时,会从Gemfile加载依赖项,因此会在Gemfile.lock中更新值。
所以我有一个包含以下内容的GemFile:
gem“airbrake”,:git => “https://github.com/mico12/airbrake.git”
和一个包含:
的Gemfile.lockGIT remote:git://github.com/airbrake/airbrake.git
修订: 15444189dfce4916ff35f326f6c34b8dce9b933d
规格:airbrake (3.0.9) activesupport builder
为什么当我执行bundle install
时,我得到了:
而不是(我预期):
似乎无论如何都是从Gemfile加载依赖项,尽管我期望存储库用户“airbrake”被指向。
Gemfile和Gemfile.lock之间的关系对我来说不是很清楚。
答案 0 :(得分:1)
您在Gemfile中指定依赖项。当您运行bundle install
或bundle update
时,bundler会安装Gemfile指定的gem,并将冻结(锁定)依赖关系树写入Gemfile.lock。
当应用程序运行时,Rails会查看Gemfile.lock并加载所有gem。
根据您的示例,由于您指定了mico12
的空中制动叉,bundle install
或bundle update
应从https://github.com/mico12/airbrake.git获取。完成后,这也应该在Gemfile.lock文件中。