Module: ActivejobArguments::ClassAndMethodArguments

Defined in:
lib/activejob_arguments.rb

Instance Method Summary collapse

Instance Method Details

#deserialize_argument(argument) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/activejob_arguments.rb', line 33

def deserialize_argument(argument)
  if argument.is_a? Hash
    return super unless argument['_aj_type'].present?
    case argument['_aj_type']
    when 'Class'
      argument['value'].constantize
    when 'Symbol'
      argument['value'].to_sym
    when 'Time'
      DateTime.iso8601(argument['value'])
    when 'DateTime'
      DateTime.iso8601(argument['value'])
    else
      super
    end
  else
    super
  end
end

#serialize_argument(argument) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/activejob_arguments.rb', line 5

def serialize_argument(argument)
  case argument
  when Class, Module
    {
      '_aj_type' => 'Class',
      'value' => argument.name
    }
  when Symbol
    {
      '_aj_type' => 'Symbol',
      'value' => argument.to_s
    }
  when Time # https://github.com/rails/rails/blob/11581afc01927565d57dd0e0156e983f92f8c2e0/activejob/lib/active_job/serializers/time_serializer.rb
    {
      '_aj_type' => 'Time',
      'value' => argument.iso8601(6)
    }
  when DateTime # https://github.com/rails/rails/blob/11581afc01927565d57dd0e0156e983f92f8c2e0/activejob/lib/active_job/serializers/date_time_serializer.rb
    {
      '_aj_type' => 'DateTime',
      'value' => argument.iso8601(6)
    }
  else
    super
  end
end