【发布时间】:2013-11-24 11:44:12
【问题描述】:
gem list --remote 命令发出一个“https://rubygems.org/latest_specs.4.8.gz”的 http 请求。
如何解码这个文件,我解压后发现一些不可读的字符!
或者有宝石可以做到吗?
我所做的只是尝试使用 ruby 代码获取完整的 gem 列表!
【问题讨论】:
gem list --remote 命令发出一个“https://rubygems.org/latest_specs.4.8.gz”的 http 请求。
如何解码这个文件,我解压后发现一些不可读的字符!
或者有宝石可以做到吗?
我所做的只是尝试使用 ruby 代码获取完整的 gem 列表!
【问题讨论】:
要解码文件,请使用普通的旧 Ruby Marshal
该文件是一个大的 gzip 和 Marshal'd(二进制序列化)数组,其中包含 gem 名称、版本和平台:
$ wget http://rubygems.org/latest_specs.4.8.gz
$ irb
> m = Marshal.load(Gem.gunzip(File.read("latest_specs.4.8.gz")))
> m.first #=> ["_", #<Gem::Version "1.2">, "ruby"]
> m[666] #=> ["activerecord-draft_records", #<Gem::Version "0.5.1">, "ruby"]
> m.last #=> ["zzzzzz", #<Gem::Version "0.0.3">, "ruby"]
> m.size #=> 66756
【讨论】: