如何通过网络获取所有宝石名称?

Mat*_*mat 3 ruby rubygems

https://rubygems.org/api/v1/search.json只提供30颗宝石,但在我的本地机器上我可以使用所有宝石gem list --remote.

我读过http://guides.rubygems.org/rubygems-org-api/,并且不存在可以获取列表中所有宝石的API.如何通过网络获取列表?或者,有人提供这个吗?

我想要宝石的名字至少,但如果可能的话,我想得到名称和版本.

我认为gem list --remote是通过网络,所以我可以获得所有宝石列表.

mec*_*ish 12

您可以使用https://rubygems.org/latest_specs.4.8.gz哪个返回gzipped marshal dumped数组,如下所示:

[["abscss", Gem::Version.new("0.0.1"), "ruby"],
["absee", Gem::Version.new("1.0"), "ruby"],
["absentee_camper", Gem::Version.new("0.0.7"), "ruby"],
["absgit", Gem::Version.new("0.3.0"), "ruby"],
["absinthe", Gem::Version.new("0.0.3"), "ruby"],
["absolute", Gem::Version.new("0.0.5"), "ruby"],
["AbsoluteRenamer", Gem::Version.new("1.1.2"), "ruby"],
["AbsoluteRenamer-date", Gem::Version.new("0.1.0"), "ruby"]]
Run Code Online (Sandbox Code Playgroud)

但如果你在Ruby中,我强烈建议使用gem fetcher:

require 'rubygems/spec_fetcher'
fetcher = Gem::SpecFetcher.fetcher
tuples = fetcher.detect(:released) { true }
Run Code Online (Sandbox Code Playgroud)

tuples现在是一系列的元组[Gem::NameTuple, Gem::Remote].你可以用这个做些什么的例子:

tuples[1337][0].name # => GraphvizR
tuples[1337][0].version.to_s # => "0.1.0"
Run Code Online (Sandbox Code Playgroud)