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