18

如果有两个宝石,A并且B. A1.0.0取决于B1.0.0

在我的 Gemfile 中:

gem 'A', '~> 1.0.0'

然后运行bundle。它将生成一个 Gemfile.lock ,如:

A (1.0.0)
  B (1.0.0)

但是如果我想强制A使用B1.0.1,最好的做法是什么?此外,如果B1.0.1不是发布,而是一个 github 标签?

4

1 回答 1

23

您需要在 Gemfile 中明确指定 B gem 以使用 git 存储库或其他版本。只要 A 1.0.0 与 B 1.0.1 兼容,就可以了。如果它仅与 B 1.0.0 兼容,那么您必须创建自己的 A gem 分支并将 gemspec 升级为与 B 1.0.1 兼容,然后将该存储库用作 A 而不是 ruby​​gems 的 gem版本。

如果 A 1.0.0 与 B 1.0.1 兼容,这是一个示例 Gemfile,它应该可以满足您的需求。

gem 'B', :git => 'git://github.com/B/B.git', :tag => '1.0.1'
gem 'A', '~> 1.0.0'
于 2011-09-15T16:50:46.740 回答