我能否在Gemfile中强制指定gem的依赖关系?

20

如果有两个 gem,ABA1.0.0 依赖于 B1.0.0

在我的 Gemfile 中:

gem 'A', '~> 1.0.0'

然后运行bundle命令。它将生成一个类似以下的Gemfile.lock文件:

A (1.0.0)
  B (1.0.0)

如果我想强制使用B1.0.1,该怎么做才是最佳实践?另外,如果B1.0.1并未发布而只是一个 GitHub 标签,应该怎么办?

1个回答

25

如果要使用git仓库或其他版本,您需要在Gemfile中明确指定B gem。只要A 1.0.0与B 1.0.1兼容,就可以正常运行。如果仅与B 1.0.0兼容,则必须创建自己的A gem分支并升级gemspec以兼容B 1.0.1,然后使用该仓库作为A gem而不是rubygems版本。

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

gem 'B', :git => 'git://github.com/B/B.git', :tag => '1.0.1'
gem 'A', '~> 1.0.0'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接