BBJ*_*BJ3 77 ruby dependencies rubygems bundler gemspecs
可能有一个git分支依赖,在mygem.gemspec里面?
我在想类似以下内容:
gem.add_runtime_dependency 'oauth2', :git => 'git@github.com:lgs/oauth2.git'
Run Code Online (Sandbox Code Playgroud)
......但它不起作用.
gtd*_*gtd 41
这是不可能的,而且可能永远不会是因为RubyGems允许宝石开发人员要求用户安装特定的版本控制系统以访问gem,这将是相当苛刻的.Gems应该是自包含的,具有最少的依赖性,以便人们可以在尽可能广泛的应用程序中使用它们.
如果你想为你自己的内部项目做这个,我的建议是使用Bundler来支持这个.
teh*_*ter 12
编辑
根据评论者的说法,这已不再适用.保留历史背景的先前信息.
在Gemfile和.gemspec中复制对gem的引用现在似乎在Bundler中引发了一条警告消息,所以这个答案看起来不再正确.
过时的信息
耶胡达卡茨的这篇文章为我清除了类似的困惑.它说,仅用于开发,最好将git东西添加到gemfile中,但是捆绑器仍将使用gemspec中的依赖/版本信息(对我来说似乎很神奇,但我相信Yehuda).
我只是试图解决这个问题.我刚刚提出了以下解决方案(我不确定您是否发布了您的gem或有权重新分发该oauth2 gem).
在你的宝石需要oauth2宝石运行这个.
git submodule add git@github.com:lgs/oauth2.git lib/oauth2
Run Code Online (Sandbox Code Playgroud)
如果您需要与默认分支不同的分支
cd lib/oauth2 && git checkout <branchname_or_ref>
cd .. && git add lib/oauth2
git commit -m "adding outh2 submodule"
Run Code Online (Sandbox Code Playgroud)
在您的gemspec中,在需要的版本行上方添加此项
$:.push File.expand_path('../lib/oauth2/lib', __FILE__)
Run Code Online (Sandbox Code Playgroud)
此外,您还需要将所有oauth2 gem的运行时依赖项添加到gemspec中.我还没有找到解决方法.
这就是我所做的,它对我们有用,因为我们的gem是通过git需要的,所以我不确定这是否适用于rubygems发布的gem.
| 归档时间: |
|
| 查看次数: |
35526 次 |
| 最近记录: |