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。