Sha256: c6ab9b54eaefe4817800b985f94e971ec9b371c4ab94a15cde49a2f701b9b1a5
Contents?: true
Size: 1.46 KB
Versions: 3
Compression:
Stored size: 1.46 KB
Contents
# # Author:: Anders Bengtsson <ndrsbngtssn@yahoo.se> # Copyright:: Copyright (c) 2004-2012 # require 'zlib' module Madeleine # # Snapshot marshaller for compressed snapshots. # # Compresses the snapshots created by another marshaller. Uses either # Marshal (the default) or another supplied marshaller. # # Uses <tt>zlib</tt> to do on-the-fly compression/decompression. # # ZMarshal works with Ruby's own Marshal and YAML # # Usage: # # require 'madeleine' # require 'madeleine/zmarshal' # # marshaller = Madeleine::ZMarshal.new(YAML) # madeleine = SnapshotMadeleine.new("my_example_storage", marshaller) { # SomeExampleApplication.new # } # class ZMarshal def initialize(marshaller=Marshal) @marshaller = marshaller end def load(stream) zstream = WorkaroundGzipReader.new(stream) begin return @marshaller.load(zstream) ensure zstream.finish end end def dump(system, stream) zstream = Zlib::GzipWriter.new(stream) begin @marshaller.dump(system, zstream) ensure zstream.finish end nil end private class WorkaroundGzipReader < Zlib::GzipReader #:nodoc: # The 'psych' YAML parser, default since Ruby 1.9.3, # assumes that its input IO has an external_encoding() # method. unless defined? external_encoding def external_encoding nil end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
madeleine-0.9.0 | lib/madeleine/zmarshal.rb |
madeleine-0.9.0.pre | lib/madeleine/zmarshal.rb |
madeleine-0.8.0 | lib/madeleine/zmarshal.rb |