Easy zip compression in ruby

Tags
Tagsruby, programming
Posted
Thu 23 Nov, 2006
Comments
0

I needed a quick way of exporting data as zlib from a controller in Rails, so I came up with this:

  def export
    send_data compress_string(Document.find_all.to_xml), :filename => 'backup.xml.gz'
  end

  def compress_string(data)
    gz = Zlib::GzipWriter.new(StringIO.new(''))
    gz.write data
    gz.close.string
  rescue
    gz.close
    raise
  end

Another way would be to use tempfiles with Tempfile—I wanted to benchmark and profile using files compared to StringIO, but that’ll be an exercise for another day.

This could also work nicely with Minitar.


Security Code