Когда вы запускаете команду gem outdated -V
, вывод команды отображает что-то похожее на это:
GET http://rubygems.org/latest_specs.4.8.gz
302 Found
GET http://production.s3.rubygems.org/latest_specs.4.8.gz
200 OK
Это отправит вам gzip-файл, содержащий другой файл с именем latest_specs.4.8
, который вы можете Marshal.load
с помощью простого приложения на Ruby, например:
require 'pp'
require 'rubygems/version'
# This assumes you've downloaded the file to the current directory
pp Marshal.load(File.open('latest_specs.4.8'))
Запустите это, и он довольно распечатает многомерный Array
, который выглядит так:
[
["rails", Gem::Version.new("2.3.5"), "ruby"],
["sinatra", Gem::Version.new("0.9.4"), "ruby"],
["watir", Gem::Version.new("1.6.5"), "ruby"]
]
Довольно просто, но я пытаюсь создать приложение с графическим интерфейсом C # RubyGems, которое будет предупреждать вас, если у вас устаревшие гемы.
Теперь, так как файл latest_specs маршалируется Ruby, есть ли способ получить к нему доступ в C # без выполнения системной команды gem outdated
?