sidekiq-unique-jobs 3.0.2 → 3.0.5
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.
Potentially problematic release.
This version of sidekiq-unique-jobs might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.rubocop.yml +36 -0
- data/.travis.yml +0 -2
- data/Appraisals +2 -1
- data/CHANGELOG.md +4 -4
- data/Gemfile +1 -3
- data/README.md +2 -2
- data/Rakefile +6 -4
- data/gemfiles/sidekiq_2.15.gemfile +1 -3
- data/gemfiles/sidekiq_2.16.gemfile +1 -3
- data/gemfiles/sidekiq_2.17.gemfile +1 -3
- data/gemfiles/sidekiq_3.0.gemfile +1 -3
- data/gemfiles/sidekiq_develop.gemfile +2 -4
- data/lib/sidekiq_unique_jobs.rb +27 -0
- data/lib/sidekiq_unique_jobs/config.rb +47 -0
- data/lib/sidekiq_unique_jobs/connectors.rb +16 -0
- data/lib/sidekiq_unique_jobs/connectors/redis_pool.rb +10 -0
- data/lib/sidekiq_unique_jobs/connectors/sidekiq_redis.rb +9 -0
- data/lib/sidekiq_unique_jobs/connectors/testing.rb +10 -0
- data/lib/{sidekiq-unique-jobs → sidekiq_unique_jobs}/middleware.rb +3 -3
- data/lib/sidekiq_unique_jobs/middleware/client/strategies/testing_inline.rb +25 -0
- data/lib/sidekiq_unique_jobs/middleware/client/strategies/unique.rb +72 -0
- data/lib/sidekiq_unique_jobs/middleware/client/unique_jobs.rb +48 -0
- data/lib/{sidekiq-unique-jobs → sidekiq_unique_jobs}/middleware/server/unique_jobs.rb +14 -13
- data/lib/sidekiq_unique_jobs/payload_helper.rb +42 -0
- data/lib/{sidekiq-unique-jobs → sidekiq_unique_jobs}/testing.rb +2 -2
- data/lib/{sidekiq-unique-jobs → sidekiq_unique_jobs}/version.rb +1 -1
- data/sidekiq-unique-jobs.gemspec +12 -11
- data/spec/lib/.sidekiq_testing_enabled_spec.rb.swp +0 -0
- data/spec/lib/client_spec.rb +56 -44
- data/spec/lib/middleware/server/unique_jobs_spec.rb +16 -16
- data/spec/lib/sidekiq_testing_enabled_spec.rb +90 -8
- data/spec/lib/unlock_order_spec.rb +3 -3
- data/spec/spec_helper.rb +5 -6
- data/spec/support/my_worker.rb +3 -3
- data/spec/support/sidekiq_meta.rb +3 -6
- data/spec/support/unique_worker.rb +3 -3
- metadata +35 -13
- data/lib/sidekiq-unique-jobs.rb +0 -11
- data/lib/sidekiq-unique-jobs/config.rb +0 -35
- data/lib/sidekiq-unique-jobs/middleware/client/unique_jobs.rb +0 -101
- data/lib/sidekiq-unique-jobs/payload_helper.rb +0 -30
@@ -1,14 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'sidekiq/worker'
|
3
|
-
require
|
3
|
+
require 'sidekiq_unique_jobs'
|
4
4
|
require 'sidekiq/scheduled'
|
5
|
-
require '
|
5
|
+
require 'sidekiq_unique_jobs/middleware/server/unique_jobs'
|
6
|
+
require 'active_support/testing/time_helpers'
|
6
7
|
require 'rspec-sidekiq'
|
7
8
|
|
8
|
-
describe
|
9
|
+
describe 'When Sidekiq::Testing is enabled' do
|
9
10
|
describe 'when set to :fake!', sidekiq: :fake do
|
10
|
-
context
|
11
|
-
it
|
11
|
+
context 'with unique worker' do
|
12
|
+
it 'does not push duplicate messages' do
|
12
13
|
param = 'work'
|
13
14
|
expect(UniqueWorker.jobs.size).to eq(0)
|
14
15
|
UniqueWorker.perform_async(param)
|
@@ -18,7 +19,7 @@ describe "When Sidekiq::Testing is enabled" do
|
|
18
19
|
expect(UniqueWorker.jobs.size).to eq(1)
|
19
20
|
end
|
20
21
|
|
21
|
-
it
|
22
|
+
it 'adds the unique_hash to the message' do
|
22
23
|
param = 'hash'
|
23
24
|
hash = SidekiqUniqueJobs::PayloadHelper.get_payload(UniqueWorker, :working, [param])
|
24
25
|
UniqueWorker.perform_async(param)
|
@@ -27,9 +28,9 @@ describe "When Sidekiq::Testing is enabled" do
|
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
30
|
-
context
|
31
|
+
context 'with non-unique worker' do
|
31
32
|
|
32
|
-
it
|
33
|
+
it 'pushes duplicates messages' do
|
33
34
|
param = 'work'
|
34
35
|
expect(MyWorker.jobs.size).to eq(0)
|
35
36
|
MyWorker.perform_async(param)
|
@@ -40,4 +41,85 @@ describe "When Sidekiq::Testing is enabled" do
|
|
40
41
|
end
|
41
42
|
end
|
42
43
|
end
|
44
|
+
|
45
|
+
describe 'when set to :inline!', sidekiq: :inline do
|
46
|
+
class InlineWorker
|
47
|
+
include Sidekiq::Worker
|
48
|
+
sidekiq_options unique: true
|
49
|
+
|
50
|
+
def perform(x)
|
51
|
+
TestClass.run(x)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class InlineUnlockOrderWorker
|
56
|
+
include Sidekiq::Worker
|
57
|
+
sidekiq_options unique: true, unique_unlock_order: :never
|
58
|
+
|
59
|
+
def perform(x)
|
60
|
+
TestClass.run(x)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
class InlineUnlockOrderWorker
|
65
|
+
include Sidekiq::Worker
|
66
|
+
sidekiq_options unique: true, unique_unlock_order: :never
|
67
|
+
|
68
|
+
def perform(x)
|
69
|
+
TestClass.run(x)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class InlineExpirationWorker
|
74
|
+
include Sidekiq::Worker
|
75
|
+
sidekiq_options unique: true, unique_unlock_order: :never,
|
76
|
+
unique_job_expiration: 10 * 60
|
77
|
+
def perform(x)
|
78
|
+
TestClass.run(x)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
class TestClass
|
83
|
+
def self.run(_x)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'once the job is completed allows to run another one' do
|
88
|
+
expect(TestClass).to receive(:run).exactly(2).times
|
89
|
+
|
90
|
+
InlineWorker.perform_async('test')
|
91
|
+
InlineWorker.perform_async('test')
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'if the unique is kept forever it does not allows to run the job again' do
|
95
|
+
expect(TestClass).to receive(:run).once
|
96
|
+
|
97
|
+
InlineUnlockOrderWorker.perform_async('test')
|
98
|
+
InlineUnlockOrderWorker.perform_async('test')
|
99
|
+
end
|
100
|
+
|
101
|
+
describe 'when a job is set to run once in 10 minutes' do
|
102
|
+
include ActiveSupport::Testing::TimeHelpers
|
103
|
+
it 'only allows 1 call per 10 minutes' do
|
104
|
+
allow(TestClass).to receive(:run).with(1).and_return(true)
|
105
|
+
allow(TestClass).to receive(:run).with(2).and_return(true)
|
106
|
+
|
107
|
+
InlineExpirationWorker.perform_async(1)
|
108
|
+
expect(TestClass).to have_received(:run).with(1).once
|
109
|
+
100.times do
|
110
|
+
InlineExpirationWorker.perform_async(1)
|
111
|
+
end
|
112
|
+
expect(TestClass).to have_received(:run).with(1).once
|
113
|
+
InlineExpirationWorker.perform_async(2)
|
114
|
+
expect(TestClass).to have_received(:run).with(1).once
|
115
|
+
expect(TestClass).to have_received(:run).with(2).once
|
116
|
+
travel_to(11.minutes.from_now) do
|
117
|
+
InlineExpirationWorker.perform_async(1)
|
118
|
+
end
|
119
|
+
|
120
|
+
expect(TestClass).to have_received(:run).with(1).twice
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
43
125
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'sidekiq/api'
|
3
3
|
require 'sidekiq/worker'
|
4
|
-
require '
|
4
|
+
require 'sidekiq_unique_jobs/middleware/server/unique_jobs'
|
5
5
|
|
6
|
-
describe
|
6
|
+
describe 'Unlock order' do
|
7
7
|
QUEUE = 'unlock_ordering'
|
8
8
|
|
9
9
|
class BeforeYieldOrderingWorker
|
@@ -27,7 +27,7 @@ describe "Unlock order" do
|
|
27
27
|
describe 'with real redis' do
|
28
28
|
before do
|
29
29
|
Sidekiq.redis = REDIS
|
30
|
-
Sidekiq.redis
|
30
|
+
Sidekiq.redis(&:flushdb)
|
31
31
|
@middleware = SidekiqUniqueJobs::Middleware::Server::UniqueJobs.new
|
32
32
|
end
|
33
33
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
$TESTING = true
|
2
|
-
|
3
1
|
begin
|
4
2
|
require 'pry'
|
5
3
|
rescue LoadError
|
4
|
+
puts 'Pry unavailable'
|
6
5
|
end
|
7
6
|
|
8
7
|
require 'rspec'
|
@@ -10,7 +9,7 @@ require 'rspec'
|
|
10
9
|
require 'celluloid/test'
|
11
10
|
require 'sidekiq'
|
12
11
|
require 'sidekiq/util'
|
13
|
-
require '
|
12
|
+
require 'sidekiq_unique_jobs'
|
14
13
|
Sidekiq.logger.level = Logger::ERROR
|
15
14
|
|
16
15
|
require 'rspec-sidekiq'
|
@@ -19,10 +18,10 @@ Sidekiq::Testing.disable!
|
|
19
18
|
|
20
19
|
require 'sidekiq/redis_connection'
|
21
20
|
redis_url = ENV['REDIS_URL'] || 'redis://localhost/15'
|
22
|
-
REDIS = Sidekiq::RedisConnection.create(:
|
21
|
+
REDIS = Sidekiq::RedisConnection.create(url: redis_url, namespace: 'testy')
|
23
22
|
|
24
23
|
Dir[File.join(File.dirname(__FILE__), 'support', '**', '*.rb')].each { |f| require f }
|
25
|
-
RSpec.configure do |
|
24
|
+
RSpec.configure do |_config|
|
26
25
|
# config.treat_symbols_as_metadata_keys_with_true_values = true
|
27
26
|
end
|
28
27
|
|
@@ -35,4 +34,4 @@ RSpec::Sidekiq.configure do |config|
|
|
35
34
|
|
36
35
|
# Warn when jobs are not enqueued to Redis but to a job array
|
37
36
|
config.warn_when_jobs_not_processed_by_sidekiq = true # default => true
|
38
|
-
end
|
37
|
+
end
|
data/spec/support/my_worker.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class MyWorker
|
2
2
|
include Sidekiq::Worker
|
3
|
-
sidekiq_options :
|
4
|
-
sidekiq_options :
|
3
|
+
sidekiq_options queue: :working, retry: 1, backtrace: 10
|
4
|
+
sidekiq_options unique: false
|
5
5
|
|
6
6
|
sidekiq_retries_exhausted do |msg|
|
7
7
|
Sidekiq.logger.warn "Failed #{msg['class']} with #{msg['args']}: #{msg['error_message']}"
|
@@ -10,4 +10,4 @@ class MyWorker
|
|
10
10
|
def perform(param)
|
11
11
|
puts param
|
12
12
|
end
|
13
|
-
end
|
13
|
+
end
|
@@ -1,15 +1,12 @@
|
|
1
1
|
RSpec.configure do |config|
|
2
2
|
config.before(:each) do |example|
|
3
|
-
sidekiq = example.metadata[:sidekiq]
|
4
|
-
if sidekiq
|
3
|
+
if (sidekiq = example.metadata[:sidekiq])
|
5
4
|
sidekiq = :fake if sidekiq == true
|
6
5
|
Sidekiq::Testing.send("#{sidekiq}!")
|
7
6
|
end
|
8
7
|
end
|
9
8
|
|
10
9
|
config.after(:each) do |example|
|
11
|
-
|
12
|
-
Sidekiq::Testing.disable!
|
13
|
-
end
|
10
|
+
Sidekiq::Testing.disable! unless example.metadata[:sidekiq].nil?
|
14
11
|
end
|
15
|
-
end
|
12
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class UniqueWorker
|
2
2
|
include Sidekiq::Worker
|
3
|
-
sidekiq_options :
|
4
|
-
sidekiq_options :
|
3
|
+
sidekiq_options queue: :working, retry: 1, backtrace: 10
|
4
|
+
sidekiq_options unique: true
|
5
5
|
|
6
6
|
sidekiq_retries_exhausted do |msg|
|
7
7
|
Sidekiq.logger.warn "Failed #{msg['class']} with #{msg['args']}: #{msg['error_message']}"
|
@@ -10,4 +10,4 @@ class UniqueWorker
|
|
10
10
|
def perform(param)
|
11
11
|
puts param
|
12
12
|
end
|
13
|
-
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-unique-jobs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikael Henriksson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sidekiq
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
|
-
type: :
|
34
|
+
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.
|
47
|
+
version: 3.1.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.
|
54
|
+
version: 3.1.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '3'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: simplecov
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -117,6 +131,7 @@ extra_rdoc_files: []
|
|
117
131
|
files:
|
118
132
|
- ".gitignore"
|
119
133
|
- ".rspec"
|
134
|
+
- ".rubocop.yml"
|
120
135
|
- ".travis.yml"
|
121
136
|
- Appraisals
|
122
137
|
- CHANGELOG.md
|
@@ -129,15 +144,22 @@ files:
|
|
129
144
|
- gemfiles/sidekiq_2.17.gemfile
|
130
145
|
- gemfiles/sidekiq_3.0.gemfile
|
131
146
|
- gemfiles/sidekiq_develop.gemfile
|
132
|
-
- lib/
|
133
|
-
- lib/
|
134
|
-
- lib/
|
135
|
-
- lib/
|
136
|
-
- lib/
|
137
|
-
- lib/
|
138
|
-
- lib/
|
139
|
-
- lib/
|
147
|
+
- lib/sidekiq_unique_jobs.rb
|
148
|
+
- lib/sidekiq_unique_jobs/config.rb
|
149
|
+
- lib/sidekiq_unique_jobs/connectors.rb
|
150
|
+
- lib/sidekiq_unique_jobs/connectors/redis_pool.rb
|
151
|
+
- lib/sidekiq_unique_jobs/connectors/sidekiq_redis.rb
|
152
|
+
- lib/sidekiq_unique_jobs/connectors/testing.rb
|
153
|
+
- lib/sidekiq_unique_jobs/middleware.rb
|
154
|
+
- lib/sidekiq_unique_jobs/middleware/client/strategies/testing_inline.rb
|
155
|
+
- lib/sidekiq_unique_jobs/middleware/client/strategies/unique.rb
|
156
|
+
- lib/sidekiq_unique_jobs/middleware/client/unique_jobs.rb
|
157
|
+
- lib/sidekiq_unique_jobs/middleware/server/unique_jobs.rb
|
158
|
+
- lib/sidekiq_unique_jobs/payload_helper.rb
|
159
|
+
- lib/sidekiq_unique_jobs/testing.rb
|
160
|
+
- lib/sidekiq_unique_jobs/version.rb
|
140
161
|
- sidekiq-unique-jobs.gemspec
|
162
|
+
- spec/lib/.sidekiq_testing_enabled_spec.rb.swp
|
141
163
|
- spec/lib/client_spec.rb
|
142
164
|
- spec/lib/middleware/server/unique_jobs_spec.rb
|
143
165
|
- spec/lib/sidekiq_testing_enabled_spec.rb
|
data/lib/sidekiq-unique-jobs.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'yaml' if RUBY_VERSION.include?('2.0.0')
|
2
|
-
require 'sidekiq-unique-jobs/middleware'
|
3
|
-
require "sidekiq-unique-jobs/version"
|
4
|
-
require "sidekiq-unique-jobs/config"
|
5
|
-
require "sidekiq-unique-jobs/payload_helper"
|
6
|
-
|
7
|
-
module SidekiqUniqueJobs
|
8
|
-
def self.config
|
9
|
-
SidekiqUniqueJobs::Config
|
10
|
-
end
|
11
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
module SidekiqUniqueJobs
|
2
|
-
class Config
|
3
|
-
def self.unique_prefix=(prefix)
|
4
|
-
@unique_prefix = prefix
|
5
|
-
end
|
6
|
-
|
7
|
-
def self.unique_prefix
|
8
|
-
@unique_prefix || "sidekiq_unique"
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.unique_args_enabled=(enabled)
|
12
|
-
@unique_args_enabled = enabled
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.unique_args_enabled?
|
16
|
-
@unique_args_enabled || false
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.default_expiration=(expiration)
|
20
|
-
@expiration = expiration
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.default_expiration
|
24
|
-
@expiration || 30 * 60
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.default_unlock_order=(order)
|
28
|
-
@default_unlock_order = order
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.default_unlock_order
|
32
|
-
@default_unlock_order || :after_yield
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,101 +0,0 @@
|
|
1
|
-
require 'digest'
|
2
|
-
|
3
|
-
module SidekiqUniqueJobs
|
4
|
-
module Middleware
|
5
|
-
module Client
|
6
|
-
class UniqueJobs
|
7
|
-
attr_reader :item, :worker_class, :redis_pool
|
8
|
-
|
9
|
-
def call(worker_class, item, queue, redis_pool = nil)
|
10
|
-
@redis_pool = redis_pool
|
11
|
-
@worker_class = worker_class_constantize(worker_class)
|
12
|
-
@item = item
|
13
|
-
|
14
|
-
if unique_enabled?
|
15
|
-
@item['unique_hash'] = payload_hash
|
16
|
-
yield if unique?
|
17
|
-
else
|
18
|
-
yield
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def unique?
|
23
|
-
if testing_enabled?
|
24
|
-
unique_for_connection?(SidekiqUniqueJobs.redis_mock)
|
25
|
-
else
|
26
|
-
if redis_pool
|
27
|
-
redis_pool.with do |conn|
|
28
|
-
unique_for_connection?(conn)
|
29
|
-
end
|
30
|
-
else
|
31
|
-
Sidekiq.redis do |conn|
|
32
|
-
unique_for_connection?(conn)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def unique_for_connection?(conn)
|
39
|
-
unique = false
|
40
|
-
conn.watch(payload_hash)
|
41
|
-
|
42
|
-
if conn.get(payload_hash).to_i == 1 ||
|
43
|
-
(conn.get(payload_hash).to_i == 2 && item['at'])
|
44
|
-
# if the job is already queued, or is already scheduled and
|
45
|
-
# we're trying to schedule again, abort
|
46
|
-
conn.unwatch
|
47
|
-
else
|
48
|
-
# if the job was previously scheduled and is now being queued,
|
49
|
-
# or we've never seen it before
|
50
|
-
expires_at = unique_job_expiration || SidekiqUniqueJobs::Config.default_expiration
|
51
|
-
expires_at = ((Time.at(item['at']) - Time.now.utc) + expires_at).to_i if item['at']
|
52
|
-
|
53
|
-
unique = conn.multi do
|
54
|
-
# set value of 2 for scheduled jobs, 1 for queued jobs.
|
55
|
-
conn.setex(payload_hash, expires_at, item['at'] ? 2 : 1)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
unique
|
59
|
-
end
|
60
|
-
|
61
|
-
protected
|
62
|
-
|
63
|
-
# Attempt to constantize a string worker_class argument, always
|
64
|
-
# failing back to the original argument.
|
65
|
-
def worker_class_constantize(worker_class)
|
66
|
-
if worker_class.is_a?(String)
|
67
|
-
worker_class.constantize rescue worker_class
|
68
|
-
else
|
69
|
-
worker_class
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
private
|
74
|
-
|
75
|
-
def payload_hash
|
76
|
-
SidekiqUniqueJobs::PayloadHelper.get_payload(item['class'], item['queue'], item['args'])
|
77
|
-
end
|
78
|
-
|
79
|
-
# When sidekiq/testing is loaded, the Sidekiq::Testing constant is
|
80
|
-
# present and testing is enabled.
|
81
|
-
def testing_enabled?
|
82
|
-
if Sidekiq.const_defined?('Testing') && Sidekiq::Testing.enabled?
|
83
|
-
require 'sidekiq-unique-jobs/testing'
|
84
|
-
return true
|
85
|
-
end
|
86
|
-
|
87
|
-
false
|
88
|
-
end
|
89
|
-
|
90
|
-
def unique_enabled?
|
91
|
-
worker_class.get_sidekiq_options['unique'] || item['unique']
|
92
|
-
end
|
93
|
-
|
94
|
-
def unique_job_expiration
|
95
|
-
worker_class.get_sidekiq_options['unique_job_expiration']
|
96
|
-
end
|
97
|
-
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|