2014-01-13 101 views
3

https://rubygems.org/api/v1/search.json只提供30顆寶石,但在我的本地機器上,我可以使用gem list --remote獲得所有寶石。如何通過網頁獲取所有寶石名稱?

我讀http://guides.rubygems.org/rubygems-org-api/,並且可以獲得列表中所有寶石的API不存在。我怎樣才能通過網絡獲得清單?或者,有沒有人提供這個?

我希望寶石的名字最少,但如果可能的話,我想獲取名稱和版本。

我認爲gem list --remote是通過網絡,所以我可以得到所有的寶石名單。

+1

'寶石列表--remote --verbose'揭示URL – Stefan

回答

12

你可以使用https://rubygems.org/latest_specs.4.8.gz返回gzip壓縮的名帥傾倒數組是這樣的:

[["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"]] 

但是,如果你在Ruby中的時候,我強烈建議您使用寶石提取器:

require 'rubygems/spec_fetcher' 
fetcher = Gem::SpecFetcher.fetcher 
tuples = fetcher.detect(:released) { true } 

tuples現一組元組[Gem::NameTuple, Gem::Remote]。你可以用這個做一些例子:

tuples[1337][0].name # => GraphvizR 
tuples[1337][0].version.to_s # => "0.1.0" 
+0

謝謝,我想從JavaScript這個,我會創建JSON API與寶石fetcher。 – sanemat

1

您可以提供page查詢參數通過列表進行分頁,如:

https://rubygems.org/api/v1/search.json?query=main&page=2