在 RubyGems 上获取 Gem 特定版本的所有依赖项
Get all dependencies of a specific version of a Gem on RubyGems
使用 RubyGems API,我需要请求 gem 的所有版本(使用 api/v1/versions/[gem].json),并且之后,对于每个版本,列出所有依赖项,如 api/v1/gems/[gem].json.
的结果
我看了,最好的方法是在特定版本上调用api/v1/versions/[gem]-[version].json,但它没有提供此版本的依赖项。
是否有另一种方法来获取特定版本的 gem 的所有依赖项?
我找到了解决方案。最好的(也是唯一的方法)是使用 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
使用 RubyGems API,我需要请求 gem 的所有版本(使用 api/v1/versions/[gem].json),并且之后,对于每个版本,列出所有依赖项,如 api/v1/gems/[gem].json.
的结果我看了,最好的方法是在特定版本上调用api/v1/versions/[gem]-[version].json,但它没有提供此版本的依赖项。
是否有另一种方法来获取特定版本的 gem 的所有依赖项?
我找到了解决方案。最好的(也是唯一的方法)是使用 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