Class: ActiveJob::Serializers::ObjectSerializer
- Inherits:
-
Object
- Object
- ActiveJob::Serializers::ObjectSerializer
- Includes:
- Singleton
- Defined in:
- lib/active_job/serializers/object_serializer.rb
Overview
Base class for serializing and deserializing custom objects.
Example:
class MoneySerializer < ActiveJob::Serializers::ObjectSerializer
def serialize(money)
super("amount" => money.amount, "currency" => money.currency)
end
def deserialize(hash)
Money.new(hash["amount"], hash["currency"])
end
def klass
Money
end
end
Direct Known Subclasses
ActionControllerParametersSerializer, BigDecimalSerializer, DateSerializer, DurationSerializer, ModuleSerializer, RangeSerializer, SymbolSerializer, TimeObjectSerializer, TimeWithZoneSerializer
Instance Method Summary collapse
-
#deserialize(hash) ⇒ Object
Deserializes an argument from a JSON primitive type.
-
#initialize ⇒ ObjectSerializer
constructor
A new instance of ObjectSerializer.
-
#serialize(hash) ⇒ Object
Serializes an argument to a JSON primitive type.
-
#serialize?(argument) ⇒ Boolean
Determines if an argument should be serialized by a serializer.
Constructor Details
#initialize ⇒ ObjectSerializer
Returns a new instance of ObjectSerializer.
31 32 33 34 |
# File 'lib/active_job/serializers/object_serializer.rb', line 31 def initialize super @template = { Arguments::OBJECT_SERIALIZER_KEY => self.class.name }.freeze end |
Instance Method Details
#deserialize(hash) ⇒ Object
Deserializes an argument from a JSON primitive type.
47 48 49 |
# File 'lib/active_job/serializers/object_serializer.rb', line 47 def deserialize(hash) raise NotImplementedError, "#{self.class.name} should implement a public #deserialize(hash) method" end |
#serialize(hash) ⇒ Object
Serializes an argument to a JSON primitive type.
42 43 44 |
# File 'lib/active_job/serializers/object_serializer.rb', line 42 def serialize(hash) @template.merge(hash) end |
#serialize?(argument) ⇒ Boolean
Determines if an argument should be serialized by a serializer.
37 38 39 |
# File 'lib/active_job/serializers/object_serializer.rb', line 37 def serialize?(argument) argument.is_a?(klass) end |