如果有两个 gem,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)
如果我想强制使用B1.0.1
,该怎么做才是最佳实践?另外,如果B1.0.1
并未发布而只是一个 GitHub 标签,应该怎么办?
如果要使用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'