我在一个小团队中工作,并开发了几个供内部使用的 gem。这些 gem 相互依存,并托管在我的 Github 帐户上。当我声明对这些 gem 的依赖时,我总是在声明中添加Gemfile
: :git => 'url/for/gem/on/github'
。但是我遇到了 Bundler 的一些令人困惑的行为——我认为:
- 如果 gem A 依赖并在 A 的 Gemfile 中声明 github-hosted B
- B 依赖并在 B 的 Gemfile 中声明 github 托管的 C
- 然后当我
bundle install
从A跑... - Bundler 应该从 github 获取 B,正如 A 的 Gemfile 中所声明的那样
- 然后从 github 获取 C,正如 B 的 Gemfile 中所声明的那样
但是 Bundler 抱怨它找不到 C。如果我在 AGemfile
中用正确的位置声明 C,那么它就不会抱怨。我是否正确推断 Bundler 实际上根本不查看依赖项Gemfile
,而只是查看它们的gemspec
?如果我是,是否有比直接在 A 中将 C 声明为 A 的依赖项更好的解决方案来解决我所描述的问题Gemfile
?
更新:似乎如果您可以在 中声明一个 Github 帐户作为 gem 源Gemfile
,那么这个问题就会得到解决。这可能吗?