Module: Specwrk::Store::Serializers::MessagePack
- Defined in:
- lib/specwrk/store/serializer.rb
Class Method Summary collapse
- .adapter_name ⇒ Object
- .dump(value) ⇒ Object
- .ensure_loaded! ⇒ Object
- .load(payload) ⇒ Object
- .packer ⇒ Object
- .unpacker ⇒ Object
Class Method Details
.adapter_name ⇒ Object
33 34 35 |
# File 'lib/specwrk/store/serializer.rb', line 33 def adapter_name "msgpack" end |
.dump(value) ⇒ Object
37 38 39 40 41 |
# File 'lib/specwrk/store/serializer.rb', line 37 def dump(value) packer.tap(&:clear) .tap { |msgpack| msgpack.write(value) } .then(&:to_s) end |
.ensure_loaded! ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/specwrk/store/serializer.rb', line 25 def ensure_loaded! return if defined?(::MessagePack) require "msgpack" rescue LoadError raise LoadError, "Unable to use msgpack, gem not found. Add `gem 'msgpack' to your Gemfile and bundle install" end |
.load(payload) ⇒ Object
43 44 45 46 47 |
# File 'lib/specwrk/store/serializer.rb', line 43 def load(payload) unpacker.tap(&:reset) .tap { |msgpack| msgpack.feed(payload) } .then { |msgpack| msgpack.read } end |
.packer ⇒ Object
49 50 51 52 53 |
# File 'lib/specwrk/store/serializer.rb', line 49 def packer ensure_loaded! Thread.current[:__specwrk_msgpack_packer] ||= ::MessagePack::Packer.new end |
.unpacker ⇒ Object
55 56 57 58 59 |
# File 'lib/specwrk/store/serializer.rb', line 55 def unpacker ensure_loaded! Thread.current[:__specwrk_msgpack_unpacker] ||= ::MessagePack::Unpacker.new(symbolize_keys: true) end |