如何在 Ruby 中迭代内存中的 zip 文件

2024-03-19

我正在编写一个单元测试,其中一个测试返回一个 zip 文件,我想检查该 zip 文件的内容,从中获取一些值,并将这些值传递给下一个测试。

我正在使用 Rack Test,所以我知道我的 zip 文件的内容在里面last_response.body。我查看了文档RubyZip http://rubyzip.sourceforge.net/但似乎它总是在等待一个文件。由于我正在运行单元测试,因此如果可能的话,我更喜欢在内存中完成所有操作,以免测试 zip 文件污染任何文件夹。


马特的回答完全正确。这里更新为新的API:

Zip::InputStream.open(StringIO.new(input)) do |io|
  while entry = io.get_next_entry
    if entry.name == 'doc.kml'
      parse_kml(io.read)
    else
      raise "unknown entry in kmz file: #{entry.name}"
    end
  end
end

并且不再需要对 StringIO 进行猴子补丁。进步!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ruby 中迭代内存中的 zip 文件 的相关文章

随机推荐