Module: ActiveJob::ArgumentsPlus

Included in:
Arguments
Defined in:
lib/active_job/arguments_plus.rb,
lib/active_job/arguments_plus/version.rb

Constant Summary collapse

VERSION =
'0.1.1'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.type_keysObject



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/active_job/arguments_plus.rb', line 16

def self.type_keys
  @type_keys ||= begin
    add_if_defined = lambda { |tk, klass_name|
      tk[klass_name.constantize] = "_aj_#{klass_name.underscore}" if const_defined?(klass_name)
    }
    tk = {}
    add_if_defined.call(tk, 'Module')
    add_if_defined.call(tk, 'Logger')
    add_if_defined.call(tk, 'PhModel')
    tk
  end
end

Instance Method Details

#deserialize_argument(argument) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/active_job/arguments_plus.rb', line 34

def deserialize_argument(argument)
  if argument.is_a?(Hash) && argument.size == 1
    arg_klass, _ = type_keys.find { |_, key| argument.key?(key) }
    arg_klass ? send("deserialize_#{class_to_method(arg_klass.name)}") : super
  else
    super
  end
end

#serialize_argument(argument) ⇒ Object



29
30
31
32
# File 'lib/active_job/arguments_plus.rb', line 29

def serialize_argument(argument)
  arg_klass, info = type_keys.find { |klass, _| klass === argument }
  arg_klass ? send("serialize_#{class_to_method(arg_klass.name)}", argument) : super
end