module ActiveJob::Arguments
def serialize_argument(argument)
def serialize_argument(argument) 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 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.each_key.grep(Symbol).map!(&:to_s) 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 if argument.respond_to?(:permitted?) && argument.respond_to?(:to_h) serialize_indifferent_hash(argument.to_h) else Serializers.serialize(argument) end end end