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_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, 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.



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

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)


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

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:



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

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.



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

def serializers
  self._additional_serializers
end