ZipStream

Create zip files to a stream.

Integration with Ruby on Rails means you can create a file, index.zipstream, which is a ruby file with a zip object:

@entries.each do |entry|
  zip.write "entry-#{entry.id}.txt", entry.to_s
end

Which will happily implicitly render from:

class EntriesController
  def index
    @entries = Entry.all
  end
end

Giving you a zip file when rendered. More to come!

Caveats

Keep in mind that this will use one of your workers/threads/processes until the file is completely downloaded. We are using an iterated rack body which streams so if rack/web servers handle this nicely then you might be in luck.

Tested with Rails 3.1 on REE 1.8.7 and MRI 1.9.3. Specs coming soon (tm).

Thanks

Inspired by http://pablotron.org/software/zipstream-php/

License

Copyright (c) 2011 Samuel Cochran ([email protected]). Released under the MIT License, see LICENSE for details.