module Textris::Delay::Sidekiq::Serializer
Constants
- ACTIVERECORD_ARRAY_POINTER
- ACTIVERECORD_POINTER
Public Class Methods
deserialize(objects)
click to toggle source
# File lib/textris/delay/sidekiq/serializer.rb, line 20 def deserialize(objects) objects.collect do |object| deserialize_active_record_object(object) || object end end
serialize(objects)
click to toggle source
# File lib/textris/delay/sidekiq/serializer.rb, line 9 def serialize(objects) objects.collect do |object| serialize_active_record_object(object) || serialize_active_record_array(object) || serialize_active_record_relation(object) || object end rescue NameError objects end
Private Class Methods
deserialize_active_record_object(object)
click to toggle source
# File lib/textris/delay/sidekiq/serializer.rb, line 48 def deserialize_active_record_object(object) if object.is_a?(Array) && object.try(:length) == 3 && [ACTIVERECORD_POINTER, ACTIVERECORD_ARRAY_POINTER].include?(object[0]) object[1].constantize.find(object[2]) end end
get_active_record_common_model(items)
click to toggle source
# File lib/textris/delay/sidekiq/serializer.rb, line 57 def get_active_record_common_model(items) items = items.collect do |item| if item.class < ActiveRecord::Base item.class.to_s end end.uniq if items.size == 1 items.first end end
serialize_active_record_array(array)
click to toggle source
# File lib/textris/delay/sidekiq/serializer.rb, line 41 def serialize_active_record_array(array) if array.is_a?(Array) && (model = get_active_record_common_model(array)) [ACTIVERECORD_ARRAY_POINTER, model, array.map(&:id)] end end
serialize_active_record_object(object)
click to toggle source
# File lib/textris/delay/sidekiq/serializer.rb, line 29 def serialize_active_record_object(object) if object.class < ActiveRecord::Base && object.id.present? [ACTIVERECORD_POINTER, object.class.to_s, object.id] end end
serialize_active_record_relation(array)
click to toggle source
# File lib/textris/delay/sidekiq/serializer.rb, line 35 def serialize_active_record_relation(array) if array.class < ActiveRecord::Relation [ACTIVERECORD_ARRAY_POINTER, array.model.to_s, array.map(&:id)] end end