aboutsummaryrefslogtreecommitdiffstats
path: root/activejob/lib/active_job/serializers/standard_type_serializer.rb
blob: 8969b31d6b87d2793b55eea3f3afb1eeb4960975 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# frozen_string_literal: true

module ActiveJob
  module Serializers
    # Provides methods to serialize and deserialize standard types
    # (`NilClass`, `String`, `Integer`, `Fixnum`, `Bignum`, `Float`, `BigDecimal`, `TrueClass`, `FalseClass`)
    class StandardTypeSerializer < BaseSerializer
      class << self
        def serialize?(argument)
          ::ActiveJob::Arguments::TYPE_WHITELIST.include? argument.class
        end

        def serialize(argument)
          argument
        end

        alias_method :deserialize?, :serialize?

        def deserialize(argument)
          object = GlobalID::Locator.locate(argument) if argument.is_a? String
          object || argument
        end
      end
    end
  end
end