Ruby:读取临时zip文件

Kkk*_*kev 5 ruby zip temporary-files

我有一个TempFilezip文件的对象,我想从中读取如下:

Zip::ZipFile.open_buffer(tempfile) do |zipfile|
    ...
end
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我收到以下错误:

Zip::ZipFile.open_buffer expects an argument of class String or IO. Found: Tempfile
Run Code Online (Sandbox Code Playgroud)

我也试过了

Zip::ZipFile.open(tempfile.path) do |zipfile|
    ...
end
Run Code Online (Sandbox Code Playgroud)

但那会回来

can't dup NilClass
Run Code Online (Sandbox Code Playgroud)

如何处理临时zip文件?

Kkk*_*kev 3

原来是临时文件损坏了,所以

can't dup NilClass
Run Code Online (Sandbox Code Playgroud)

错误是由于尝试读取损坏的文件而导致的。

因此解决方案是使用

Zip::ZipFile.open(tempfile.path) do |zipfile|
    ...
end
Run Code Online (Sandbox Code Playgroud)