Module: ActiveJob::Serializers

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

Overview

Active Job Serializers

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: ActionControllerParametersSerializer, BigDecimalSerializer, DateSerializer, DateTimeSerializer, DurationSerializer, ModuleSerializer, ObjectSerializer, RangeSerializer, SymbolSerializer, TimeObjectSerializer, TimeSerializer, TimeWithZoneSerializer

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.serializersObject

Returns list of known serializers.



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

def serializers
  @serializers
end

Class Method Details

.add_serializers(*new_serializers) ⇒ Object

Adds new serializers to a list of known serializers.



60
61
62
63
# File 'lib/active_job/serializers.rb', line 60

def add_serializers(*new_serializers)
  new_serializers = new_serializers.flatten
  add_new_serializers(new_serializers)
end

.deserialize(argument) ⇒ Object

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

Raises:

  • (ArgumentError)


40
41
42
43
44
45
46
47
48
# File 'lib/active_job/serializers.rb', line 40

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:



31
32
33
34
35
# File 'lib/active_job/serializers.rb', line 31

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