activejob 5.2.8.1 → 6.1.6.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|