Module: ActiveJob::Serializers

Extended by:
ActiveSupport::Autoload
Defined in:
activejob/lib/active_job/serializers.rb,
activejob/lib/active_job/serializers/date_serializer.rb,
activejob/lib/active_job/serializers/time_serializer.rb,
activejob/lib/active_job/serializers/module_serializer.rb,
activejob/lib/active_job/serializers/object_serializer.rb,
activejob/lib/active_job/serializers/symbol_serializer.rb,
activejob/lib/active_job/serializers/duration_serializer.rb,
activejob/lib/active_job/serializers/date_time_serializer.rb,
activejob/lib/active_job/serializers/time_object_serializer.rb,
activejob/lib/active_job/serializers/time_with_zone_serializer.rb

Overview

The ActiveJob::Serializers module is used to store a list of known serializers and to add new ones. It also has helpers to serialize/deserialize objects.

Defined Under Namespace

Classes: DateSerializer, DateTimeSerializer, DurationSerializer, ModuleSerializer, ObjectSerializer, SymbolSerializer, TimeObjectSerializer, TimeSerializer, TimeWithZoneSerializer

Class Method Summary collapse

Methods included from ActiveSupport::Autoload

autoload, autoload_at, autoload_under, autoloads, eager_autoload, eager_load!, extended

Class Method Details

.add_serializers(*new_serializers) ⇒ Object

Adds new serializers to a list of known serializers.


53
54
55
# File 'activejob/lib/active_job/serializers.rb', line 53

def add_serializers(*new_serializers)
  self._additional_serializers += new_serializers.flatten
end

.deserialize(argument) ⇒ Object

Returns deserialized object. Will look up through all known serializers. If no serializer found will raise ArgumentError.

Raises:

  • (ArgumentError)

37
38
39
40
41
42
43
44
45
# File 'activejob/lib/active_job/serializers.rb', line 37

def deserialize(argument)
  serializer_name = argument[Arguments::OBJECT_SERIALIZER_KEY]
  raise ArgumentError, "Serializer name is not present in the argument: #{argument.inspect}" unless serializer_name

  serializer = serializer_name.safe_constantize
  raise ArgumentError, "Serializer #{serializer_name} is not known" unless serializer

  serializer.deserialize(argument)
end

.serialize(argument) ⇒ Object

Returns serialized representative of the passed object. Will look up through all known serializers. Raises ActiveJob::SerializationError if it can't find a proper serializer.

Raises:


28
29
30
31
32
# File 'activejob/lib/active_job/serializers.rb', line 28

def serialize(argument)
  serializer = serializers.detect { |s| s.serialize?(argument) }
  raise SerializationError.new("Unsupported argument type: #{argument.class.name}") unless serializer
  serializer.serialize(argument)
end

.serializersObject

Returns list of known serializers.


48
49
50
# File 'activejob/lib/active_job/serializers.rb', line 48

def serializers
  self._additional_serializers
end