delayed 0.5.1 → 0.5.3

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