class Paquito::Types::ActiveRecordPacker

Constants

FACTORY
VALID_CLASSES

Public Class Methods

dump(value) click to toggle source
# File lib/paquito/types/active_record_packer.rb, line 25
      def self.dump(value)
        coded = ActiveRecordCoder.dump(value)
        FACTORY.dump(coded)
      rescue NoMethodError, PackError => e
        raise unless PackError === e || e.name == :to_msgpack

        class_name = value.class.name
        receiver_name = e.receiver.class.name
        error_attrs = coded[1][1].select { |_, attr_value| VALID_CLASSES.exclude?(attr_value.class) }

        Rails.logger.warn(<<~LOG.squish)
          [MessagePackCodecTypes]
          Failed to encode record with ActiveRecordCoder
          class=#{class_name}
          error_class=#{receiver_name}
          error_attrs=#{error_attrs.keys.join(", ")}
        LOG

        raise PackError.new("failed to pack ActiveRecord object", e.receiver)
      end
load(value) click to toggle source
# File lib/paquito/types/active_record_packer.rb, line 46
def self.load(value)
  ActiveRecordCoder.load(FACTORY.load(value))
end