在mygem.gemspec中有可能有一个git分支依赖吗?
我的想法类似于下面的内容:
gem.add_runtime_dependency 'oauth2', :git => 'git@github.com:lgs/oauth2.git'
..。但它不起作用。
发布于 2011-06-28 06:04:31
这是不可能的,也可能永远不会,因为对于RubyGems来说,允许gem开发人员要求用户安装特定的版本控制系统才能访问gem将是相当困难的。Gem应该是自包含的,具有最少的依赖关系,这样人们就可以在尽可能广泛的应用程序中使用它们。
如果你想在自己的内部项目中做到这一点,我的建议是使用Bundler,它对此支持得很好。
发布于 2015-04-14 23:11:08
我也只是想弄清楚这个问题。我只是想出了下面的解决方案(我不确定你是否发布了你的gem,或者是否有权重新发布那个oauth2 gem)。
在需要oauth2 gem的gem中运行以下命令。
git submodule add git@github.com:lgs/oauth2.git lib/oauth2
如果需要不同于缺省分支的分支
cd lib/oauth2 && git checkout <branchname_or_ref>
cd .. && git add lib/oauth2
git commit -m "adding outh2 submodule"
在gemspec中,将此代码添加到您的所需版本行之上
$:.push File.expand_path('../lib/oauth2/lib', __FILE__)
此外,您还需要将所有oauth2 gem的运行时依赖项添加到您的gemspec中。我还没有想出解决这个问题的办法。
这就是我所做的,它对我们是有效的,因为我们的gem是通过git需要的,所以我不确定这是否适用于rubygems发布的gem。
发布于 2019-09-19 18:23:34
我发现了一个非常简单的变通办法:
假设您在一个项目P
中,并且您想要使用自制的gem tools
,它本身使用一个OS gem oauth2
。
根据the accepted answer的说法,如果你在oauth2
中做了一个补丁,并且需要在你的gem tools
中安装这个补丁,那么你将无法在gem中修复这个问题。
然而,你可以在你的项目P
的Gemfile中指定你想要的版本,这将是tools
在运行时使用的版本:
gem 'oauth2', github: 'lgs/oauth2'
https://stackoverflow.com/questions/6499410
复制相似问题