Module: DispatchPolicy::Serializer

Defined in:
lib/dispatch_policy/serializer.rb

Class Method Summary collapse

Class Method Details

.deserialize(payload) ⇒ Object

Deserialize stored job_data into a fresh ActiveJob instance ready to be enqueued via ‘#enqueue`.

Raises:



17
18
19
20
21
22
23
# File 'lib/dispatch_policy/serializer.rb', line 17

def deserialize(payload)
  job_class = payload["job_class"] || payload[:job_class]
  raise InvalidPolicy, "missing job_class in stored payload" unless job_class

  klass = job_class.constantize
  klass.deserialize(payload)
end

.dump_jsonb(value) ⇒ Object



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

def dump_jsonb(value)
  JSON.dump(value)
end

.load_jsonb(text) ⇒ Object



29
30
31
32
33
34
# File 'lib/dispatch_policy/serializer.rb', line 29

def load_jsonb(text)
  return text if text.is_a?(Hash) || text.is_a?(Array)
  return {} if text.nil? || text == ""

  JSON.parse(text)
end

.serialize(job) ⇒ Object

Serialize an ActiveJob instance for storage in staged_jobs.job_data. Returns a Ruby hash compatible with PostgreSQL jsonb (string keys).



11
12
13
# File 'lib/dispatch_policy/serializer.rb', line 11

def serialize(job)
  job.serialize
end