Read remote zip


#1

I’d like to decompress the contents of:
http://host.com/file.zip

in memory without having to download the file (e.g. wget) first.
Suggestions?

Rob


#2

RobR wrote:

I’d like to decompress the contents of:
http://host.com/file.zip

in memory without having to download the file (e.g. wget) first.
Suggestions?

“Without having to download the file first” is an example of “premature
optimization”. It is the root of all evil.

On any OS configured to be a server (as opposed to a wrist watch, for
example)
all memory and files map each other virtually. If you Net::HTTP read()
that file
to a file location, the OS will generally reserve a slot on the hard
drive, then
put the file into its matching memory location.

In the next split microsecond, your code reads that file and unzips it,
using
only the memory image. If you then delete the file, it may never reach
the hard
drive.

By that analysis, if you write simple code that downloads the file and
hits it
with common tools, you can finish your feature faster. However, there
are also
situations where you don’t know which option is faster.

Write the simpler code anyway, and then profile it to identify the real
bottlenecks. They are invariably not the places you would have
guessed.


#3

Those are good points.

For now, I whipped up something simple which basically:
begin
wget #{url}
unzip #{localfilename}
# do stuff with file (FasterCSV)
rescue
ensure
# delete local files
end

I don’t like relying on `` but sometimes it’s just too easy to pass
up.
My original message was trying to avoid wget url

Thanks!