Ruby Gemspec依赖:可能有一个git分支依赖?

可能有一个git分支依赖,在mygem.gemspec里面?

我正在考虑类似于以下内容:

gem.add_runtime_dependency 'oauth2', :git => 'git@github.com:lgs/oauth2.git' 

…但它不工作。

这是不可能的,也可能永远不会,因为RubyGems会让gem开发人员要求用户安装特定的版本控制系统来访问gem。 gem应该是独立的,具有最less的依赖关系,以便人们可以尽可能广泛地使用它们。

如果你想为自己的内部项目做这个,我的build议是使用Bundler来支持它。

编辑

据一位评论者说,这不再是事实。 保留历史信息的先前信息。

在Gemfile和.gemspec中复制对gem的引用现在似乎在Bundler中引发了一条警告消息,所以这个回答看起来不再是真的。

过时的信息

耶胡达·卡茨(Yehuda Katz)的这篇文章为我澄清了类似的困惑。 它说,仅在开发中使用,最好将geit文件添加到gemfile中,但是这个打包器仍然会使用gemspec中的dependency / version信息(对我来说似乎很神奇,但我相信Yehuda)。

我只是想解决这个问题。 而我刚刚提出了以下解决scheme(我不知道如果您发布您的gem或有权重新分配oauth2gem)。

在你的gem,需要oauth2gem运行这个。

 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。