delayed 0.5.1 → 0.5.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ace621cdafc8489809a02bcd03d0367f686b7bc1d9eba634263595da038b559f
4
- data.tar.gz: 25b7047017850106283822f0ce6ef89c93b53e81303591b47772c121b3ec7eb9
3
+ metadata.gz: 1a6428c0614b28cf06d2921310bea48cc8e0bcc891a9772b7aed44238dbf1533
4
+ data.tar.gz: fa61f990945d382d21dd856170ce10dc52ecf44f2360a5be8ac9ec3463f9b5ac
5
5
  SHA512:
6
- metadata.gz: abc7e1858bb94efaa865df785abd79818d107952821e83830d8dc16a6415d506f50316a851fb01bf1182753e3f71565381e0b1c54a5ad9481123d46fadc2a283
7
- data.tar.gz: 7eeaa1c9e12d6fc78345a29f8fb99ef5f6aa956bae5923fe94a0c78358247fbd581f96a07fcf9b33e79ff86ad06f78b357eba14e8d9638f1152fd39d139942ea
6
+ metadata.gz: 46152e349a8b725978c3ef8a281789e288301e1d605b67fe4a8562733dac1742d5a9783a329c1569dce69910e73249b1134f8a5a1b19956ccb2b3a3a355dddd9
7
+ data.tar.gz: f6bd7af40fd73a4d4d9fe5c2af5eb307241d627a43ecf972cc7fb6510ba1a0d2ad0b2e065fdf935bb2bc3f03ffa912f91d2cead31cd01a2ab5aa6e70d446203a
@@ -14,7 +14,7 @@ module Delayed
14
14
  opts.merge!({ queue: job.queue_name, priority: job.priority }.compact)
15
15
  .merge!(job.provider_attributes || {})
16
16
 
17
- Delayed::Job.enqueue(JobWrapper.new(job.serialize), opts).tap do |dj|
17
+ Delayed::Job.enqueue(JobWrapper.new(job), opts).tap do |dj|
18
18
  job.provider_job_id = dj.id
19
19
  end
20
20
  end
@@ -36,34 +36,4 @@ module Delayed
36
36
  end
37
37
  end
38
38
  end
39
-
40
- class JobWrapper # rubocop:disable Betterment/ActiveJobPerformable
41
- attr_accessor :job_data
42
-
43
- delegate_missing_to :job
44
-
45
- def initialize(job_data)
46
- @job_data = job_data
47
- end
48
-
49
- def display_name
50
- job_data['job_class']
51
- end
52
-
53
- def perform
54
- ActiveJob::Callbacks.run_callbacks(:execute) do
55
- job.perform_now
56
- end
57
- end
58
-
59
- def encode_with(coder)
60
- coder['job_data'] = @job_data
61
- end
62
-
63
- private
64
-
65
- def job
66
- @job ||= ActiveJob::Base.deserialize(job_data) if job_data
67
- end
68
- end
69
39
  end
@@ -0,0 +1,39 @@
1
+ module Delayed
2
+ class JobWrapper # rubocop:disable Betterment/ActiveJobPerformable
3
+ attr_accessor :job_data
4
+
5
+ delegate_missing_to :job
6
+
7
+ def initialize(job_or_data)
8
+ # During enqueue the job instance is passed in directly, saves us deserializing
9
+ # it to find out how to queue the job.
10
+ # During load from the db, we get a data hash passed in so deserialize lazily.
11
+ if job_or_data.is_a?(ActiveJob::Base)
12
+ @job = job_or_data
13
+ @job_data = job_or_data.serialize
14
+ else
15
+ @job_data = job_or_data
16
+ end
17
+ end
18
+
19
+ def display_name
20
+ job_data['job_class']
21
+ end
22
+
23
+ def perform
24
+ ActiveJob::Callbacks.run_callbacks(:execute) do
25
+ job.perform_now
26
+ end
27
+ end
28
+
29
+ def encode_with(coder)
30
+ coder['job_data'] = @job_data
31
+ end
32
+
33
+ private
34
+
35
+ def job
36
+ @job ||= ActiveJob::Base.deserialize(job_data) if job_data
37
+ end
38
+ end
39
+ end
@@ -34,7 +34,7 @@ module Delayed
34
34
  attr_reader :jobs
35
35
 
36
36
  def emit_metric!(metric)
37
- send("#{metric}_grouped").reverse_merge(default_results).each do |(priority, queue), value|
37
+ send(:"#{metric}_grouped").reverse_merge(default_results).each do |(priority, queue), value|
38
38
  ActiveSupport::Notifications.instrument(
39
39
  "delayed.job.#{metric}",
40
40
  default_tags.merge(priority: Priority.new(priority).to_s, queue: queue, value: value),
data/lib/delayed.rb CHANGED
@@ -14,6 +14,7 @@ require 'delayed/plugins/instrumentation'
14
14
  require 'delayed/backend/base'
15
15
  require 'delayed/backend/job_preparer'
16
16
  require 'delayed/worker'
17
+ require 'delayed/job_wrapper'
17
18
 
18
19
  if defined?(Rails::Engine)
19
20
  require 'delayed/engine'
@@ -23,6 +23,16 @@ RSpec.describe Delayed::ActiveJobAdapter do
23
23
  ActiveJob::Base.queue_adapter = adapter_was
24
24
  end
25
25
 
26
+ it "does not invoke #deserialize during enqueue" do # rubocop:disable RSpec/NoExpectationExample
27
+ JobClass.include(Module.new do
28
+ def deserialize(*)
29
+ raise "uh oh, deserialize called during enqueue!"
30
+ end
31
+ end)
32
+
33
+ JobClass.perform_later
34
+ end
35
+
26
36
  it 'serializes a JobWrapper in the handler with expected fields' do
27
37
  Timecop.freeze('2023-01-20T18:52:29Z') do
28
38
  JobClass.perform_later
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Griffith
@@ -19,7 +19,7 @@ authors:
19
19
  autorequire:
20
20
  bindir: bin
21
21
  cert_chain: []
22
- date: 2023-10-11 00:00:00.000000000 Z
22
+ date: 2024-01-31 00:00:00.000000000 Z
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
25
25
  name: activerecord
@@ -72,6 +72,7 @@ files:
72
72
  - lib/delayed/backend/job_preparer.rb
73
73
  - lib/delayed/engine.rb
74
74
  - lib/delayed/exceptions.rb
75
+ - lib/delayed/job_wrapper.rb
75
76
  - lib/delayed/lifecycle.rb
76
77
  - lib/delayed/message_sending.rb
77
78
  - lib/delayed/monitor.rb