Module: Workarea::Elasticsearch::Serializer

Defined in:
lib/workarea/elasticsearch/serializer.rb

Class Method Summary collapse

Class Method Details

.deserialize(source) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/workarea/elasticsearch/serializer.rb', line 15

def deserialize(source)
  klass = source['model_class'].constantize

  if klass < Mongoid::Document
    deserialize_mongoid(klass, source['model'])
  else
    deserialize_object(source['model'])
  end
end

.deserialize_mongoid(klass, serialized) ⇒ Object



33
34
35
# File 'lib/workarea/elasticsearch/serializer.rb', line 33

def deserialize_mongoid(klass, serialized)
  Mongoid::Factory.from_db(klass, deserialize_object(serialized))
end

.deserialize_object(object) ⇒ Object



37
38
39
# File 'lib/workarea/elasticsearch/serializer.rb', line 37

def deserialize_object(object)
  Marshal.load(Base64.decode64(object))
end

.serialize(model) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/workarea/elasticsearch/serializer.rb', line 5

def serialize(model)
  serialized = if model.is_a?(Mongoid::Document)
                 serialize_mongoid(model)
               else
                 serialize_object(model)
               end

  { 'model_class' => model.class.name, 'model' => serialized }
end

.serialize_mongoid(model) ⇒ Object



25
26
27
# File 'lib/workarea/elasticsearch/serializer.rb', line 25

def serialize_mongoid(model)
  serialize_object(model.as_document)
end

.serialize_object(object) ⇒ Object



29
30
31
# File 'lib/workarea/elasticsearch/serializer.rb', line 29

def serialize_object(object)
  Base64.encode64(Marshal.dump(object))
end