我可以在 gemfile 中强制执行 gem 的依赖项吗?

发布于 2024-12-05 02:30:30 字数 380 浏览 2 评论 0原文

如果有两个宝石,ABA1.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不是release而是github标签?

If there are two gems, A and B. A1.0.0 depends on B1.0.0.

In my Gemfile:

gem 'A', '~> 1.0.0'

Then run bundle. It will generate a Gemfile.lock like:

A (1.0.0)
  B (1.0.0)

But if I want to force A to use B1.0.1, what's the best practice? Moreover, if the B1.0.1 is not release but a github tag?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡淡の花香 2024-12-12 02:30:30

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

这是一个 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'

You'll need to explicitly specify the B gem in your Gemfile to use a git repository or another version. As long as A 1.0.0 is compatible with B 1.0.1 you'll be fine. If it is only compatible with B 1.0.0 then you'll have to create your own fork of the A gem and upgrade the gemspec to be compatible with B 1.0.1 and then use that repository as your gem for A instead of the rubygems version.

Here is a sample Gemfile that should give you what you want, provided A 1.0.0 is compatible with B 1.0.1.

gem 'B', :git => 'git://github.com/B/B.git', :tag => '1.0.1'
gem 'A', '~> 1.0.0'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文