module ActiveJob::Arguments
Constants
- TYPE_WHITELIST
Public Instance Methods
deserialize(arguments)
click to toggle source
# File lib/active_job/arguments.rb, line 31 def deserialize(arguments) arguments.map { |argument| deserialize_argument(argument) } rescue => e raise DeserializationError.new(e) end
serialize(arguments)
click to toggle source
# File lib/active_job/arguments.rb, line 27 def serialize(arguments) arguments.map { |argument| serialize_argument(argument) } end
Private Instance Methods
deserialize_argument(argument)
click to toggle source
# File lib/active_job/arguments.rb, line 55 def deserialize_argument(argument) case argument when String GlobalID::Locator.locate(argument) || argument when *TYPE_WHITELIST argument when Array argument.map { |arg| deserialize_argument(arg) } when Hash argument.each_with_object({}.with_indifferent_access) do |(key, value), hash| hash[key] = deserialize_argument(value) end else raise ArgumentError, "Can only deserialize primitive arguments: #{argument.inspect}" end end
serialize_argument(argument)
click to toggle source
# File lib/active_job/arguments.rb, line 38 def serialize_argument(argument) case argument when *TYPE_WHITELIST argument when GlobalID::Identification argument.to_global_id.to_s when Array argument.map { |arg| serialize_argument(arg) } when Hash argument.each_with_object({}) do |(key, value), hash| hash[serialize_hash_key(key)] = serialize_argument(value) end else raise SerializationError.new("Unsupported argument type: #{argument.class.name}") end end
serialize_hash_key(key)
click to toggle source
# File lib/active_job/arguments.rb, line 72 def serialize_hash_key(key) case key when String, Symbol key.to_s else raise SerializationError.new("Only string and symbol hash keys may be serialized as job arguments, but #{key.inspect} is a #{key.class}") end end