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_keys ⇒ Object
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 |