method

serialize_argument

serialize_argument(argument)
public

No documentation available.

# File activejob/lib/active_job/arguments.rb, line 38
    def serialize_argument(argument) # :nodoc:
      case argument
      when nil, true, false, Integer, Float # Types that can hardly be subclassed
        argument
      when String
        if argument.class == String
          argument
        else
          begin
            Serializers.serialize(argument)
          rescue SerializationError
            argument
          end
        end
      when Symbol
        { OBJECT_SERIALIZER_KEY => "ActiveJob::Serializers::SymbolSerializer", "value" => argument.name }
      when GlobalID::Identification
        convert_to_global_id_hash(argument)
      when Array
        argument.map { |arg| serialize_argument(arg) }
      when ActiveSupport::HashWithIndifferentAccess
        serialize_indifferent_hash(argument)
      when Hash
        symbol_keys = argument.keys
        symbol_keys.select! { |k| k.is_a?(Symbol) }
        symbol_keys.map!(&:name)

        aj_hash_key = if Hash.ruby2_keywords_hash?(argument)
          RUBY2_KEYWORDS_KEY
        else
          SYMBOL_KEYS_KEY
        end
        result = serialize_hash(argument)
        result[aj_hash_key] = symbol_keys
        result
      else
        Serializers.serialize(argument)
      end
    end