2015-07-03 68 views
0

使用RubyGems API,我需要请求所有版本的gem(带有api/v1/versions/[gem] .json),之后,对于每个版本,列出所有依赖关系,如api/v1/gems/[gem] .json的结果。在RubyGems上获取特定版本的Gem的所有依赖项

我看了,最好的方法是在特定版本上调用api/v1/versions/[gem] - [version] .json,但它不提供此版本的依赖关系。

是否有另一种方式获得特定版本的所有gem依赖关系?

回答

0

我找到了解决方案。最好的(也是唯一的方法)是使用gem的依赖文件,它列出了每个gem版本的所有依赖关系。 要得到这个文件,有必要调用API的依赖地址:http://guides.rubygems.org/rubygems-org-api/#misc-methods(最后一个)。

之后,这几行做所有的东西以获得特定版本的依赖关系:

url   = URI("https://rubygems.org/api/v1/dependencies?gems=#{gem_name}") 
    dependencies = Net::HTTP.get(url) 
    data   = Marshal.load(dependencies).each do |dependency| 
    break dependency if dependency[:number] == gem_version 
    end 
+0

您好我想建立可获取宝石的所有依赖的API。你能指导我通过这些步骤或发布你的宝石依赖API代码。谢谢。 – ProgrammerPanda

+1

嗨!那么,最简​​单的方法是重新使用我发布的代码。您可以获得所有版本的第一行和第二行的所有版本的相关性。它会返回一个你需要使用Marshal类加载的文件(它会给你一个代表依赖关系的对象数组),然后你只需循环这个数组来找到你正在寻找的gem版本。 但是,我不能发布代码,因为它是我不再工作的公司的项目。 – GauthierPLM

相关问题