首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby Gemspec依赖关系:可以有一个git分支依赖关系吗?

Ruby Gemspec依赖关系:可以有一个git分支依赖关系吗?
EN

Stack Overflow用户
提问于 2011-06-28 05:57:07
回答 3查看 39.5K关注 0票数 88

在mygem.gemspec中有可能有一个git分支依赖吗?

我的想法类似于下面的内容:

代码语言:javascript
复制
gem.add_runtime_dependency 'oauth2', :git => 'git@github.com:lgs/oauth2.git'

..。但它不起作用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-28 06:04:31

这是不可能的,也可能永远不会,因为对于RubyGems来说,允许gem开发人员要求用户安装特定的版本控制系统才能访问gem将是相当困难的。Gem应该是自包含的,具有最少的依赖关系,这样人们就可以在尽可能广泛的应用程序中使用它们。

如果你想在自己的内部项目中做到这一点,我的建议是使用Bundler,它对此支持得很好。

票数 48
EN

Stack Overflow用户

发布于 2015-04-14 23:11:08

我也只是想弄清楚这个问题。我只是想出了下面的解决方案(我不确定你是否发布了你的gem,或者是否有权重新发布那个oauth2 gem)。

在需要oauth2 gem的gem中运行以下命令。

代码语言:javascript
复制
git submodule add git@github.com:lgs/oauth2.git lib/oauth2

如果需要不同于缺省分支的分支

代码语言:javascript
复制
cd lib/oauth2 && git checkout <branchname_or_ref>
cd .. && git add lib/oauth2
git commit -m "adding outh2 submodule"

在gemspec中,将此代码添加到您的所需版本行之上

代码语言:javascript
复制
$:.push File.expand_path('../lib/oauth2/lib', __FILE__)

此外,您还需要将所有oauth2 gem的运行时依赖项添加到您的gemspec中。我还没有想出解决这个问题的办法。

这就是我所做的,它对我们是有效的,因为我们的gem是通过git需要的,所以我不确定这是否适用于rubygems发布的gem。

票数 7
EN

Stack Overflow用户

发布于 2019-09-19 18:23:34

我发现了一个非常简单的变通办法:

假设您在一个项目P中,并且您想要使用自制的gem tools,它本身使用一个OS gem oauth2

根据the accepted answer的说法,如果你在oauth2中做了一个补丁,并且需要在你的gem tools中安装这个补丁,那么你将无法在gem中修复这个问题。

然而,你可以在你的项目P的Gemfile中指定你想要的版本,这将是tools在运行时使用的版本:

代码语言:javascript
复制
gem 'oauth2', github: 'lgs/oauth2'

Here is a real life example of mine.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6499410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档