aboutsummaryrefslogtreecommitdiffstats
path: root/activejob/lib/active_job/serializers/object_serializer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activejob/lib/active_job/serializers/object_serializer.rb')
-rw-r--r--activejob/lib/active_job/serializers/object_serializer.rb28
1 files changed, 24 insertions, 4 deletions
diff --git a/activejob/lib/active_job/serializers/object_serializer.rb b/activejob/lib/active_job/serializers/object_serializer.rb
index 940b6ff95d..9f59e8236f 100644
--- a/activejob/lib/active_job/serializers/object_serializer.rb
+++ b/activejob/lib/active_job/serializers/object_serializer.rb
@@ -21,14 +21,34 @@ module ActiveJob
# Money
# end
# end
- class ObjectSerializer < BaseSerializer
+ class ObjectSerializer
+ include Singleton
+
+ class << self
+ delegate :serialize?, :serialize, :deserialize, to: :instance
+ end
+
+ # Determines if an argument should be serialized by a serializer.
+ def serialize?(argument)
+ argument.is_a?(klass)
+ end
+
+ # Serializes an argument to a JSON primitive type.
def serialize(hash)
- { OBJECT_SERIALIZER_KEY => self.class.name }.merge!(hash)
+ { Arguments::OBJECT_SERIALIZER_KEY => self.class.name }.merge!(hash)
end
- def deserialize?(argument)
- argument.is_a?(Hash) && argument[OBJECT_SERIALIZER_KEY] == self.class.name
+ # Deserilizes an argument form a JSON primiteve type.
+ def deserialize(_argument)
+ raise NotImplementedError
end
+
+ protected
+
+ # The class of the object that will be serialized.
+ def klass
+ raise NotImplementedError
+ end
end
end
end