0

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

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

所以我有一个 GemFile 包含:

gem "airbrake", :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 加载的,尽管我希望指向存储库用户“airbrake”。

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

4

1 回答 1

1

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

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

以您的示例为例,由于您指定mico12了 airbrake 的分叉,bundle install或者bundle update应该从https://github.com/mico12/airbrake.git获取。完成后,这也应该在 Gemfile.lock 文件中。

于 2012-06-21T00:57:35.363 回答