Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中加载封送的Ruby对象#_C#_Ruby_Rubygems - Fatal编程技术网

C# 在C中加载封送的Ruby对象#

C# 在C中加载封送的Ruby对象#,c#,ruby,rubygems,C#,Ruby,Rubygems,运行命令gem-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的文件,您可以使用以下简单的Ruby应用程序Marshal.load: require 'pp' require 'rubyg

运行命令
gem-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
的文件,您可以使用以下简单的Ruby应用程序
Marshal.load

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')) 
运行此命令,它将漂亮地打印一个多维
数组
,如下所示:

[
    ["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 GUI应用程序,当您有过时的gems时,它会提醒您

现在,由于最新的_specs文件是由Ruby封送的,我是否可以在C#中访问它,而不运行系统命令
gem

查看,似乎获取列表不会太困难

只需修改
#execute

# File lib/rubygems/commands/outdated_command.rb, line 18
  def execute
    locals = Gem::SourceIndex.from_installed_gems

    locals.outdated.sort.each do |name|
      local = locals.find_name(name).last

      dep = Gem::Dependency.new local.name, ">= #{local.version}"
      remotes = Gem::SpecFetcher.fetcher.fetch dep
      remote = remotes.last.first

      say "#{local.name} (#{local.version} < #{remote.version})"
    end
  end
看一看,要想获得这份名单似乎并不难

只需修改
#execute

# File lib/rubygems/commands/outdated_command.rb, line 18
  def execute
    locals = Gem::SourceIndex.from_installed_gems

    locals.outdated.sort.each do |name|
      local = locals.find_name(name).last

      dep = Gem::Dependency.new local.name, ">= #{local.version}"
      remotes = Gem::SpecFetcher.fetcher.fetch dep
      remote = remotes.last.first

      say "#{local.name} (#{local.version} < #{remote.version})"
    end
  end

是的,我已经用Ruby搞乱了。但我正试图用C#来重现它。我可以下载并解压缩最新的C#规范文件,但我无法在C#中解压它。你试过使用iron ruby吗?您可以使用DLR接口从.NET调用它是的,我已经在Ruby中处理过了。但我正试图用C#来重现它。我可以下载并解压缩最新的C#规范文件,但我无法在C#中解压它。你试过使用iron ruby吗?您可以使用DLR接口从.NET调用它