activejob 5.2.8.1 → 6.1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +118 -57
- data/MIT-LICENSE +1 -2
- data/README.md +18 -13
- data/lib/active_job/arguments.rb +80 -30
- data/lib/active_job/base.rb +6 -1
- data/lib/active_job/callbacks.rb +46 -3
- data/lib/active_job/configured_job.rb +2 -0
- data/lib/active_job/core.rb +40 -21
- data/lib/active_job/enqueuing.rb +20 -7
- data/lib/active_job/exceptions.rb +60 -28
- data/lib/active_job/execution.rb +11 -2
- data/lib/active_job/gem_version.rb +3 -3
- data/lib/active_job/instrumentation.rb +40 -0
- data/lib/active_job/log_subscriber.rb +140 -0
- data/lib/active_job/logging.rb +3 -101
- data/lib/active_job/queue_adapter.rb +5 -0
- data/lib/active_job/queue_adapters/async_adapter.rb +1 -1
- data/lib/active_job/queue_adapters/backburner_adapter.rb +2 -2
- data/lib/active_job/queue_adapters/inline_adapter.rb +1 -1
- data/lib/active_job/queue_adapters/que_adapter.rb +2 -2
- data/lib/active_job/queue_adapters/sidekiq_adapter.rb +2 -2
- data/lib/active_job/queue_adapters/sucker_punch_adapter.rb +1 -1
- data/lib/active_job/queue_adapters/test_adapter.rb +32 -14
- data/lib/active_job/queue_adapters.rb +13 -11
- data/lib/active_job/queue_name.rb +23 -3
- data/lib/active_job/railtie.rb +20 -1
- data/lib/active_job/serializers/date_serializer.rb +20 -0
- data/lib/active_job/serializers/date_time_serializer.rb +16 -0
- data/lib/active_job/serializers/duration_serializer.rb +23 -0
- data/lib/active_job/serializers/module_serializer.rb +20 -0
- data/lib/active_job/serializers/object_serializer.rb +53 -0
- data/lib/active_job/serializers/symbol_serializer.rb +20 -0
- data/lib/active_job/serializers/time_object_serializer.rb +13 -0
- data/lib/active_job/serializers/time_serializer.rb +16 -0
- data/lib/active_job/serializers/time_with_zone_serializer.rb +16 -0
- data/lib/active_job/serializers.rb +66 -0
- data/lib/active_job/test_helper.rb +317 -68
- data/lib/active_job/timezones.rb +13 -0
- data/lib/active_job/translation.rb +1 -1
- data/lib/active_job.rb +2 -1
- data/lib/rails/generators/job/job_generator.rb +4 -0
- metadata +25 -9
- data/lib/active_job/queue_adapters/qu_adapter.rb +0 -46
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ActiveJob
|
|
4
|
+
module Serializers
|
|
5
|
+
class TimeWithZoneSerializer < TimeObjectSerializer # :nodoc:
|
|
6
|
+
def deserialize(hash)
|
|
7
|
+
Time.iso8601(hash["value"]).in_time_zone
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
def klass
|
|
12
|
+
ActiveSupport::TimeWithZone
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "set"
|
|
4
|
+
|
|
5
|
+
module ActiveJob
|
|
6
|
+
# The <tt>ActiveJob::Serializers</tt> module is used to store a list of known serializers
|
|
7
|
+
# and to add new ones. It also has helpers to serialize/deserialize objects.
|
|
8
|
+
module Serializers # :nodoc:
|
|
9
|
+
extend ActiveSupport::Autoload
|
|
10
|
+
|
|
11
|
+
autoload :ObjectSerializer
|
|
12
|
+
autoload :TimeObjectSerializer
|
|
13
|
+
autoload :SymbolSerializer
|
|
14
|
+
autoload :DurationSerializer
|
|
15
|
+
autoload :DateTimeSerializer
|
|
16
|
+
autoload :DateSerializer
|
|
17
|
+
autoload :TimeWithZoneSerializer
|
|
18
|
+
autoload :TimeSerializer
|
|
19
|
+
autoload :ModuleSerializer
|
|
20
|
+
|
|
21
|
+
mattr_accessor :_additional_serializers
|
|
22
|
+
self._additional_serializers = Set.new
|
|
23
|
+
|
|
24
|
+
class << self
|
|
25
|
+
# Returns serialized representative of the passed object.
|
|
26
|
+
# Will look up through all known serializers.
|
|
27
|
+
# Raises <tt>ActiveJob::SerializationError</tt> if it can't find a proper serializer.
|
|
28
|
+
def serialize(argument)
|
|
29
|
+
serializer = serializers.detect { |s| s.serialize?(argument) }
|
|
30
|
+
raise SerializationError.new("Unsupported argument type: #{argument.class.name}") unless serializer
|
|
31
|
+
serializer.serialize(argument)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Returns deserialized object.
|
|
35
|
+
# Will look up through all known serializers.
|
|
36
|
+
# If no serializer found will raise <tt>ArgumentError</tt>.
|
|
37
|
+
def deserialize(argument)
|
|
38
|
+
serializer_name = argument[Arguments::OBJECT_SERIALIZER_KEY]
|
|
39
|
+
raise ArgumentError, "Serializer name is not present in the argument: #{argument.inspect}" unless serializer_name
|
|
40
|
+
|
|
41
|
+
serializer = serializer_name.safe_constantize
|
|
42
|
+
raise ArgumentError, "Serializer #{serializer_name} is not known" unless serializer
|
|
43
|
+
|
|
44
|
+
serializer.deserialize(argument)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Returns list of known serializers.
|
|
48
|
+
def serializers
|
|
49
|
+
self._additional_serializers
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Adds new serializers to a list of known serializers.
|
|
53
|
+
def add_serializers(*new_serializers)
|
|
54
|
+
self._additional_serializers += new_serializers.flatten
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
add_serializers SymbolSerializer,
|
|
59
|
+
DurationSerializer,
|
|
60
|
+
DateTimeSerializer,
|
|
61
|
+
DateSerializer,
|
|
62
|
+
TimeWithZoneSerializer,
|
|
63
|
+
TimeSerializer,
|
|
64
|
+
ModuleSerializer
|
|
65
|
+
end
|
|
66
|
+
end
|