在RubyGems上获取特定版本Gem的所有依赖项

时间:2015-07-03 15:39:05

标签: ruby-on-rails ruby rubygems

使用RubyGems API,我需要请求所有版本的gem(使用api / v1 / versions / [gem] .json),然后,对于每个版本,列出所有依赖项,如api / v1的结果/gems/[gem].json。

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

是否有其他方法可以获取特定版本的gem的所有依赖项?

1 个答案:

答案 0 :(得分: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