Module: Isomorfeus::Hamster::Marshal
- Defined in:
- lib/isomorfeus/hamster/marshal.rb
Constant Summary collapse
- BROTLI =
'b:'.freeze
Class Method Summary collapse
- .dump(db, key, obj, class_cache: true, compress: false) ⇒ Object
- .load(db, key, class_cache: true) ⇒ Object
- .serialize(obj, class_cache: true, compress: false) ⇒ Object
- .unserialize(v, class_cache: true) ⇒ Object
Class Method Details
.dump(db, key, obj, class_cache: true, compress: false) ⇒ Object
7 8 9 10 11 |
# File 'lib/isomorfeus/hamster/marshal.rb', line 7 def dump(db, key, obj, class_cache: true, compress: false) v = ::Oj.dump(obj, mode: :object, circular: true, class_cache: class_cache) v = 'b:' << ::Brotli.deflate(v, quality: compress) if compress db.env.transaction { db.put(key, v) } end |
.load(db, key, class_cache: true) ⇒ Object
13 14 15 16 17 18 |
# File 'lib/isomorfeus/hamster/marshal.rb', line 13 def load(db, key, class_cache: true) v = db.get(key) return nil unless v v = ::Brotli.inflate(v[2..]) if v.start_with?(BROTLI) ::Oj.load(v, mode: :object, circular: true, class_cache: class_cache) end |
.serialize(obj, class_cache: true, compress: false) ⇒ Object
20 21 22 23 24 |
# File 'lib/isomorfeus/hamster/marshal.rb', line 20 def serialize(obj, class_cache: true, compress: false) v = ::Oj.dump(obj, mode: :object, circular: true, class_cache: class_cache) v = 'b:' << ::Brotli.deflate(v, quality: compress) if compress v end |
.unserialize(v, class_cache: true) ⇒ Object
26 27 28 29 |
# File 'lib/isomorfeus/hamster/marshal.rb', line 26 def unserialize(v, class_cache: true) v = ::Brotli.inflate(v[2..]) if v.start_with?(BROTLI) ::Oj.load(v, mode: :object, circular: true, class_cache: class_cache) end |