Module: DispatchPolicy::Serializer
- Defined in:
- lib/dispatch_policy/serializer.rb
Class Method Summary collapse
-
.deserialize(payload) ⇒ Object
Deserialize stored job_data into a fresh ActiveJob instance ready to be enqueued via ‘#enqueue`.
- .dump_jsonb(value) ⇒ Object
- .load_jsonb(text) ⇒ Object
-
.serialize(job) ⇒ Object
Serialize an ActiveJob instance for storage in staged_jobs.job_data.
Class Method Details
.deserialize(payload) ⇒ Object
Deserialize stored job_data into a fresh ActiveJob instance ready to be enqueued via ‘#enqueue`.
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 |