sidekiq-unique-jobs 4.0.18 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sidekiq-unique-jobs might be problematic. Click here for more details.

Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +42 -7
  3. data/.csslintrc +2 -0
  4. data/.eslintignore +1 -0
  5. data/.eslintrc +213 -0
  6. data/.gitignore +2 -0
  7. data/.rspec +1 -2
  8. data/.rubocop.yml +19 -0
  9. data/.simplecov +2 -1
  10. data/.travis.yml +8 -12
  11. data/Appraisals +10 -20
  12. data/CHANGELOG.md +4 -0
  13. data/Gemfile +10 -6
  14. data/README.md +16 -2
  15. data/Rakefile +1 -0
  16. data/bin/bench +1 -0
  17. data/bin/jobs +1 -0
  18. data/circle.yml +6 -3
  19. data/gemfiles/sidekiq_4.0.gemfile +8 -5
  20. data/gemfiles/sidekiq_4.1.gemfile +8 -5
  21. data/gemfiles/{sidekiq_3.1.gemfile → sidekiq_4.2.gemfile} +9 -6
  22. data/gemfiles/{sidekiq_3.2.gemfile → sidekiq_5.0.gemfile} +9 -6
  23. data/gemfiles/sidekiq_develop.gemfile +8 -5
  24. data/lib/sidekiq-unique-jobs.rb +1 -1
  25. data/lib/sidekiq_unique_jobs/config.rb +1 -9
  26. data/lib/sidekiq_unique_jobs/constants.rb +1 -0
  27. data/lib/sidekiq_unique_jobs/core_ext.rb +44 -34
  28. data/lib/sidekiq_unique_jobs/lock/while_executing.rb +1 -1
  29. data/lib/sidekiq_unique_jobs/script_mock.rb +4 -7
  30. data/lib/sidekiq_unique_jobs/scripts.rb +9 -8
  31. data/lib/sidekiq_unique_jobs/testing/sidekiq_overrides.rb +23 -17
  32. data/lib/sidekiq_unique_jobs/unique_args.rb +1 -1
  33. data/lib/sidekiq_unique_jobs/unlockable.rb +8 -15
  34. data/lib/sidekiq_unique_jobs/util.rb +7 -0
  35. data/lib/sidekiq_unique_jobs/version.rb +1 -1
  36. data/rails_example/.env.test +12 -0
  37. data/rails_example/.rspec +1 -1
  38. data/rails_example/Gemfile +12 -9
  39. data/rails_example/app/controllers/work_controller.rb +16 -2
  40. data/rails_example/app/models/guest.rb +8 -11
  41. data/rails_example/app/workers/simple_worker.rb +4 -1
  42. data/rails_example/app/workers/slow_until_executing_worker.rb +15 -0
  43. data/rails_example/app/workers/spawn_simple_worker.rb +3 -0
  44. data/rails_example/app/workers/without_argument_worker.rb +12 -0
  45. data/rails_example/bin/check_or_setup_db +0 -1
  46. data/rails_example/common-services.yml +2 -0
  47. data/rails_example/config/database.yml +2 -2
  48. data/rails_example/config/environments/development.rb +1 -1
  49. data/rails_example/config/environments/test.rb +1 -1
  50. data/rails_example/config/initializers/sidekiq.rb +1 -1
  51. data/rails_example/config/routes.rb +1 -0
  52. data/rails_example/config/spring.rb +2 -2
  53. data/rails_example/docker-compose.yml +19 -38
  54. data/rails_example/spec/controllers/work_controller_mock_spec.rb +91 -0
  55. data/rails_example/spec/controllers/work_controller_spec.rb +46 -141
  56. data/rails_example/spec/rails_helper.rb +1 -2
  57. data/sidekiq-unique-jobs.gemspec +6 -4
  58. data/spec/jobs/custom_queue_job.rb +1 -2
  59. data/spec/jobs/just_a_worker.rb +1 -2
  60. data/spec/jobs/long_running_job.rb +1 -2
  61. data/spec/jobs/main_job.rb +1 -2
  62. data/spec/jobs/my_unique_job.rb +1 -2
  63. data/spec/jobs/plain_class.rb +1 -2
  64. data/spec/jobs/test_class.rb +1 -2
  65. data/spec/jobs/until_and_while_executing_job.rb +1 -2
  66. data/spec/jobs/until_executing_job.rb +1 -2
  67. data/spec/jobs/without_argument_job.rb +9 -0
  68. data/spec/lib/sidekiq_unique_jobs/client/middleware_spec.rb +6 -3
  69. data/spec/lib/sidekiq_unique_jobs/config_spec.rb +84 -0
  70. data/spec/lib/sidekiq_unique_jobs/lock/until_and_while_executing_spec.rb +2 -1
  71. data/spec/lib/sidekiq_unique_jobs/lock/while_executing_spec.rb +2 -2
  72. data/spec/lib/sidekiq_unique_jobs/script_mock_spec.rb +12 -6
  73. data/spec/lib/sidekiq_unique_jobs/scripts_spec.rb +0 -5
  74. data/spec/lib/sidekiq_unique_jobs/sidekiq_testing_enabled_spec.rb +5 -3
  75. data/spec/lib/sidekiq_unique_jobs/sidekiq_unique_ext_spec.rb +2 -2
  76. data/spec/lib/sidekiq_unique_jobs/unique_args_spec.rb +23 -7
  77. data/spec/lib/sidekiq_unique_jobs/unlockable_spec.rb +34 -0
  78. data/spec/lib/sidekiq_unique_jobs/util_spec.rb +1 -1
  79. data/spec/spec_helper.rb +3 -14
  80. data/spec/support/ruby_meta.rb +10 -3
  81. data/spec/support/sidekiq_meta.rb +2 -3
  82. metadata +33 -16
  83. data/gemfiles/sidekiq_2.15.gemfile +0 -9
  84. data/gemfiles/sidekiq_2.16.gemfile +0 -9
  85. data/gemfiles/sidekiq_2.17.gemfile +0 -19
  86. data/gemfiles/sidekiq_3.0.gemfile +0 -19
  87. data/gemfiles/sidekiq_3.3.gemfile +0 -19
  88. data/spec/celluloid_with_fallback.rb +0 -18
@@ -0,0 +1,84 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe SidekiqUniqueJobs::Config do
4
+ let(:args) do
5
+ {
6
+
7
+ unique_prefix: 'unique',
8
+ default_queue_lock_expiration: 30 * 60,
9
+ default_run_lock_expiration: 60,
10
+ default_lock: :while_executing,
11
+ redis_test_mode: :redis,
12
+ }
13
+ end
14
+
15
+ subject do
16
+ described_class.new(args)
17
+ end
18
+
19
+ describe '#testing_enabled?' do
20
+ context 'when Sidekiq::Testing is undefined' do
21
+ before { hide_const('Sidekiq::Testing') }
22
+ its(:testing_enabled?) do
23
+ is_expected.to eq(false)
24
+ end
25
+ end
26
+
27
+ context 'when Sidekiq::Testing is defined' do
28
+ context 'and Sidekiq::Testing.enabled? is false' do
29
+ before { allow(Sidekiq::Testing).to receive(:enabled?).and_return(false) }
30
+ its(:testing_enabled?) do
31
+ is_expected.to eq(false)
32
+ end
33
+ end
34
+
35
+ context 'and Sidekiq::Testing.enabled? is true' do
36
+ before { allow(Sidekiq::Testing).to receive(:enabled?).and_return(true) }
37
+ its(:testing_enabled?) do
38
+ is_expected.to eq(true)
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ describe '#inline_testing_enabled?' do
45
+ context 'when testing_enabled? is false' do
46
+ before { allow(subject).to receive(:testing_enabled?).and_return(false) }
47
+ its(:inline_testing_enabled?) do
48
+ is_expected.to eq(false)
49
+ end
50
+ end
51
+ context 'when testing_enabled? is true' do
52
+ before { allow(subject).to receive(:testing_enabled?).and_return(true) }
53
+
54
+ context 'and Sidekiq::Testing.inline? is false' do
55
+ before { allow(Sidekiq::Testing).to receive(:inline?).and_return(false) }
56
+ its(:inline_testing_enabled?) do
57
+ is_expected.to eq(false)
58
+ end
59
+ end
60
+
61
+ context 'and Sidekiq::Testing.inline? is true' do
62
+ before { allow(Sidekiq::Testing).to receive(:inline?).and_return(true) }
63
+ its(:inline_testing_enabled?) do
64
+ is_expected.to eq(true)
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ describe '#mocking?' do
71
+ context 'when redis_test_mode is :redis' do
72
+ its(:mocking?) do
73
+ is_expected.to eq(false)
74
+ end
75
+ end
76
+
77
+ context 'when redis_test_mode is :mock' do
78
+ subject { described_class.new(args.merge(redis_test_mode: :mock)) }
79
+ its(:mocking?) do
80
+ is_expected.to eq(true)
81
+ end
82
+ end
83
+ end
84
+ end
@@ -7,11 +7,12 @@ RSpec.describe SidekiqUniqueJobs::Lock::UntilAndWhileExecuting do
7
7
  'queue' => 'dupsallowed',
8
8
  'class' => 'UntilAndWhileExecuting',
9
9
  'unique' => 'until_executed',
10
- 'args' => [1]
10
+ 'args' => [1],
11
11
  }
12
12
  end
13
13
  let(:callback) { -> {} }
14
14
  subject { described_class.new(item) }
15
+
15
16
  describe '#execute' do
16
17
  before do
17
18
  Sidekiq.redis(&:flushdb)
@@ -8,7 +8,7 @@ RSpec.describe SidekiqUniqueJobs::Lock::WhileExecuting do
8
8
  'class' => 'UntilAndWhileExecuting',
9
9
  'unique' => 'until_executed',
10
10
  'unique_digest' => 'test_mutex_key',
11
- 'args' => [1]
11
+ 'args' => [1],
12
12
  }
13
13
  end
14
14
 
@@ -22,7 +22,7 @@ RSpec.describe SidekiqUniqueJobs::Lock::WhileExecuting do
22
22
  Thread.new do
23
23
  m.synchronize do
24
24
  y = x
25
- sleep 0.001
25
+ sleep 0.1
26
26
  x = y + 1
27
27
  end
28
28
  end
@@ -1,15 +1,20 @@
1
1
  require 'spec_helper'
2
- require 'mock_redis'
3
2
 
4
- MOCK_REDIS ||= MockRedis.new
3
+ begin
4
+ require 'mock_redis'
5
+ MOCK_REDIS ||= MockRedis.new
6
+ rescue LoadError # rubocop:disable Lint/HandleExceptions
7
+ # This is a known issue (we only run this spec for ruby 2.4.1)
8
+ end
5
9
 
6
- RSpec.describe SidekiqUniqueJobs::ScriptMock do
10
+ RSpec.describe SidekiqUniqueJobs::ScriptMock, ruby_ver: '>= 2.4.1' do
7
11
  MD5_DIGEST ||= 'unique'.freeze
8
12
  UNIQUE_KEY ||= 'uniquejobs:unique'.freeze
9
13
  JID ||= 'fuckit'.freeze
10
14
  ANOTHER_JID ||= 'anotherjid'.freeze
11
15
 
12
16
  before do
17
+ Sidekiq.redis(&:flushdb)
13
18
  SidekiqUniqueJobs.configure do |config|
14
19
  config.redis_test_mode = :mock
15
20
  end
@@ -24,13 +29,14 @@ RSpec.describe SidekiqUniqueJobs::ScriptMock do
24
29
  MOCK_REDIS.del(keys)
25
30
  end
26
31
 
27
- allow(Redis).to receive(:new).and_return(MOCK_REDIS)
32
+ allow(Sidekiq).to receive(:redis).and_yield(MOCK_REDIS)
28
33
  end
29
34
 
30
35
  after do
31
36
  SidekiqUniqueJobs.configure do |config|
32
37
  config.redis_test_mode = :redis
33
38
  end
39
+ Sidekiq.redis(&:flushdb)
34
40
  end
35
41
 
36
42
  subject { SidekiqUniqueJobs::Scripts }
@@ -58,13 +64,13 @@ RSpec.describe SidekiqUniqueJobs::ScriptMock do
58
64
 
59
65
  context 'when job is locked' do
60
66
  before { expect(lock_for(10)).to eq(1) }
61
- specify { expect(lock_for(5, 'anotherjid')).to eq(0) }
67
+ specify { expect(lock_for(5, ANOTHER_JID)).to eq(0) }
62
68
  end
63
69
  end
64
70
 
65
71
  describe '.release_lock' do
66
72
  context 'when job is locked by another jid' do
67
- before { expect(lock_for(10, 'anotherjid')).to eq(1) }
73
+ before { expect(lock_for(10, ANOTHER_JID)).to eq(1) }
68
74
  specify { expect(unlock).to eq(0) }
69
75
  after { unlock(UNIQUE_KEY, ANOTHER_JID) }
70
76
  end
@@ -14,15 +14,10 @@ RSpec.describe SidekiqUniqueJobs::Scripts do
14
14
 
15
15
  it { is_expected.to respond_to(:call).with(3).arguments }
16
16
  it { is_expected.to respond_to(:logger) }
17
- it { is_expected.to respond_to(:script_shas) }
18
17
  it { is_expected.to respond_to(:connection).with(1).arguments }
19
18
  it { is_expected.to respond_to(:script_source).with(1).arguments }
20
19
  it { is_expected.to respond_to(:script_path).with(1).arguments }
21
20
 
22
- describe '.script_shas' do
23
- its(:script_shas) { is_expected.to be_a(Hash) }
24
- end
25
-
26
21
  describe '.logger' do
27
22
  its(:logger) { is_expected.to eq(Sidekiq.logger) }
28
23
  end
@@ -12,9 +12,11 @@ RSpec.describe 'When Sidekiq::Testing is enabled' do
12
12
  Sidekiq.redis = REDIS
13
13
  Sidekiq.redis(&:flushdb)
14
14
  Sidekiq::Worker.clear_all
15
- Sidekiq::Testing.server_middleware do |chain|
16
- chain.add SidekiqUniqueJobs::Server::Middleware
17
- end if Sidekiq::Testing.respond_to?(:server_middleware)
15
+ if Sidekiq::Testing.respond_to?(:server_middleware)
16
+ Sidekiq::Testing.server_middleware do |chain|
17
+ chain.add SidekiqUniqueJobs::Server::Middleware
18
+ end
19
+ end
18
20
  end
19
21
 
20
22
  after do
@@ -34,7 +34,7 @@ RSpec.describe 'Sidekiq::Api' do
34
34
  JustAWorker.perform_async(foo: 'bar')
35
35
  end
36
36
 
37
- describe Sidekiq::SortedEntry::UniqueExtension, sidekiq_ver: '>= 3.1' do
37
+ describe Sidekiq::SortedEntry::UniqueExtension do
38
38
  it 'deletes uniqueness lock on delete' do
39
39
  expect(schedule_job).to be_truthy
40
40
 
@@ -68,7 +68,7 @@ RSpec.describe 'Sidekiq::Api' do
68
68
  end
69
69
  end
70
70
 
71
- describe Sidekiq::JobSet::UniqueExtension, sidekiq_ver: '>= 3.1' do
71
+ describe Sidekiq::JobSet::UniqueExtension do
72
72
  it 'deletes uniqueness locks on clear' do
73
73
  schedule_job
74
74
  Sidekiq::JobSet.new('schedule').clear
@@ -5,9 +5,19 @@ RSpec.describe SidekiqUniqueJobs::UniqueArgs do
5
5
  subject { described_class.new(item) }
6
6
 
7
7
  describe '#unique_digest' do
8
- let(:item) { item_options.merge('args' => [1, 2, 'type' => 'it']) }
8
+ context 'when args are empty' do
9
+ let(:item) { { 'class' => 'WithoutArgumentJob', 'args' => [] } }
10
+ let(:another_subject) { described_class.new(item) }
11
+
12
+ context 'with the same unique args' do
13
+ it 'equals to unique_digest for that item' do
14
+ expect(subject.unique_digest).to eq(another_subject.unique_digest)
15
+ end
16
+ end
17
+ end
9
18
 
10
19
  shared_examples 'unique digest' do
20
+ subject { described_class.new(item_options) }
11
21
  context 'given another item' do
12
22
  let(:another_subject) { described_class.new(another_item) }
13
23
 
@@ -21,7 +31,7 @@ RSpec.describe SidekiqUniqueJobs::UniqueArgs do
21
31
  context 'with different unique args' do
22
32
  let(:another_item) { item_options.merge('args' => [1, 3, 'type' => 'that']) }
23
33
  it 'differs from unique_digest for that item' do
24
- expect(subject.unique_digest).to_not eq(another_subject.unique_digest)
34
+ expect(subject.unique_digest).not_to eq(another_subject.unique_digest)
25
35
  end
26
36
  end
27
37
  end
@@ -29,8 +39,11 @@ RSpec.describe SidekiqUniqueJobs::UniqueArgs do
29
39
 
30
40
  context 'when unique_args is a proc' do
31
41
  let(:item_options) do
32
- { 'class' => 'UntilExecutedJob', 'queue' => 'myqueue',
33
- 'unique_args' => proc { |args| args[1] } }
42
+ {
43
+ 'class' => 'MyUniqueJobWithFilterProc',
44
+ 'queue' => 'customqueue',
45
+ 'args' => [1, 2, 'type' => 'it'],
46
+ }
34
47
  end
35
48
 
36
49
  it_behaves_like 'unique digest'
@@ -38,8 +51,11 @@ RSpec.describe SidekiqUniqueJobs::UniqueArgs do
38
51
 
39
52
  context 'when unique_args is a symbol' do
40
53
  let(:item_options) do
41
- { 'class' => 'UniqueJobWithFilterMethod', 'queue' => 'myqueue',
42
- 'unique_args' => :filtered_args }
54
+ {
55
+ 'class' => 'MyUniqueJobWithFilterMethod',
56
+ 'queue' => 'customqueue',
57
+ 'args' => [1, 2, 'type' => 'it'],
58
+ }
43
59
  end
44
60
 
45
61
  it_behaves_like 'unique digest'
@@ -125,7 +141,7 @@ RSpec.describe SidekiqUniqueJobs::UniqueArgs do
125
141
 
126
142
  it 'returns the value of the provided class method' do
127
143
  expect(subject.filter_by_symbol(['name', 2, 'whatever' => nil, 'type' => 'test']))
128
- .to eq(%w(name test))
144
+ .to eq(%w[name test])
129
145
  end
130
146
  end
131
147
  end
@@ -1,4 +1,38 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe SidekiqUniqueJobs::Unlockable do
4
+ before { Sidekiq.redis(&:flushdb) }
5
+ def item_with_digest
6
+ SidekiqUniqueJobs::UniqueArgs.digest(item)
7
+ item
8
+ end
9
+ let(:item) do
10
+ { 'class' => MyUniqueJob,
11
+ 'queue' => 'customqueue',
12
+ 'args' => [1, 2] }
13
+ end
14
+
15
+ let(:unique_digest) { item_with_digest[SidekiqUniqueJobs::UNIQUE_DIGEST_KEY] }
16
+ describe '.unlock_by_key' do
17
+ before do
18
+ end
19
+
20
+ specify do
21
+ expect(SidekiqUniqueJobs::Util.keys.count).to eq(0)
22
+ jid = Sidekiq::Client.push(item_with_digest)
23
+
24
+ expect(SidekiqUniqueJobs::Util.keys.count).to eq(1)
25
+ expect(SidekiqUniqueJobs::Util.keys).to match_array([unique_digest])
26
+ expect(SidekiqUniqueJobs::Util.unique_key(jid)).to eq(unique_digest)
27
+
28
+ described_class.unlock_by_key(
29
+ unique_digest,
30
+ jid
31
+ )
32
+
33
+ expect(SidekiqUniqueJobs::Util.keys.count).to eq(0)
34
+ expect(SidekiqUniqueJobs::Util.keys).not_to match_array([unique_digest])
35
+ expect(SidekiqUniqueJobs::Util.unique_key(jid)).to eq(nil)
36
+ end
37
+ end
4
38
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe SidekiqUniqueJobs::Util do
4
- let(:keys) { %w(uniquejobs:keyz) }
4
+ let(:keys) { %w[uniquejobs:keyz] }
5
5
 
6
6
  def set(key, value)
7
7
  described_class.connection do |c|
data/spec/spec_helper.rb CHANGED
@@ -1,10 +1,6 @@
1
- if RUBY_ENGINE == 'ruby' && RUBY_VERSION >= '2.3.0'
2
- if ENV['CI']
3
- require 'codeclimate-test-reporter'
4
- CodeClimate::TestReporter.start
5
- else
6
- require 'simplecov'
7
- end
1
+ VERSION_REGEX = /(?<operator>[<>=]+)?\s?(?<version>(\d+.?)+)/m
2
+ if RUBY_ENGINE == 'ruby' && RUBY_VERSION >= '2.4.0'
3
+ require 'simplecov'
8
4
 
9
5
  begin
10
6
  require 'pry-byebug'
@@ -16,7 +12,6 @@ end
16
12
  require 'rspec'
17
13
  require 'rspec/its'
18
14
 
19
- require 'celluloid_with_fallback'
20
15
  require 'sidekiq'
21
16
  require 'sidekiq/util'
22
17
  require 'sidekiq-unique-jobs'
@@ -29,12 +24,6 @@ Sidekiq.logger.level = "Logger::#{ENV.fetch('LOGLEVEL') { 'error' }.upcase}".con
29
24
 
30
25
  require 'sidekiq/redis_connection'
31
26
 
32
- begin
33
- require 'redis-namespace'
34
- rescue LoadError
35
- puts 'Redis Namespace unavailable'
36
- end
37
-
38
27
  REDIS_URL ||= ENV['REDIS_URL'] || 'redis://localhost/15'.freeze
39
28
  REDIS_NAMESPACE ||= 'unique-test'.freeze
40
29
  REDIS_OPTIONS ||= { url: REDIS_URL } # rubocop:disable MutableConstant
@@ -1,10 +1,17 @@
1
1
  RSpec.configure do |config|
2
2
  config.before(:each) do |example|
3
3
  ruby_ver = example.metadata[:ruby_ver]
4
- next unless ruby_ver
4
+ VERSION_REGEX.match(ruby_ver.to_s) do |match|
5
+ version = match[:version]
6
+ operator = match[:operator]
7
+ next unless ruby_ver
5
8
 
6
- if Gem::Version.new(ruby_ver) >= Gem::Version.new(RUBY_VERSION)
7
- skip("Not relevant for version less than #{ruby_ver}")
9
+ raise 'Please specify how to compare the version with >= or < or =' unless operator
10
+
11
+ unless RUBY_VERSION.send(operator, version)
12
+ skip('Skipped due to version check (requirement was that ruby version is ' \
13
+ "#{operator} #{version}; was #{RUBY_VERSION})")
14
+ end
8
15
  end
9
16
  end
10
17
  end
@@ -1,8 +1,7 @@
1
1
  RSpec.configure do |config|
2
- VERSION_REGEX = /(?<operator>[<>=]+)?\s?(?<version>(\d+.?)+)/m
3
2
  config.before(:each) do |example|
4
- SidekiqUniqueJobs.configure do |config|
5
- config.redis_test_mode = :redis
3
+ SidekiqUniqueJobs.configure do |c|
4
+ c.redis_test_mode = :redis
6
5
  end
7
6
 
8
7
  if (sidekiq = example.metadata[:sidekiq])
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: 4.0.18
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikael Henriksson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-24 00:00:00.000000000 Z
11
+ date: 2017-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.6'
19
+ version: '4.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.6'
26
+ version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rubocop
70
+ name: timecop
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: timecop
84
+ name: yard
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: yard
98
+ name: gem-release
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: codeclimate-test-reporter
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.0.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.0.0
111
125
  description: The unique jobs that were removed from sidekiq
112
126
  email:
113
127
  - mikael@zoolutions.se
@@ -117,8 +131,11 @@ extensions: []
117
131
  extra_rdoc_files: []
118
132
  files:
119
133
  - ".codeclimate.yml"
134
+ - ".csslintrc"
120
135
  - ".dockerignore"
121
136
  - ".editorconfig"
137
+ - ".eslintignore"
138
+ - ".eslintrc"
122
139
  - ".fasterer.yml"
123
140
  - ".gitignore"
124
141
  - ".rspec"
@@ -134,15 +151,10 @@ files:
134
151
  - bin/bench
135
152
  - bin/jobs
136
153
  - circle.yml
137
- - gemfiles/sidekiq_2.15.gemfile
138
- - gemfiles/sidekiq_2.16.gemfile
139
- - gemfiles/sidekiq_2.17.gemfile
140
- - gemfiles/sidekiq_3.0.gemfile
141
- - gemfiles/sidekiq_3.1.gemfile
142
- - gemfiles/sidekiq_3.2.gemfile
143
- - gemfiles/sidekiq_3.3.gemfile
144
154
  - gemfiles/sidekiq_4.0.gemfile
145
155
  - gemfiles/sidekiq_4.1.gemfile
156
+ - gemfiles/sidekiq_4.2.gemfile
157
+ - gemfiles/sidekiq_5.0.gemfile
146
158
  - gemfiles/sidekiq_develop.gemfile
147
159
  - lib/sidekiq-unique-jobs.rb
148
160
  - lib/sidekiq/simulator.rb
@@ -173,6 +185,7 @@ files:
173
185
  - lib/sidekiq_unique_jobs/util.rb
174
186
  - lib/sidekiq_unique_jobs/version.rb
175
187
  - rails_example/.env
188
+ - rails_example/.env.test
176
189
  - rails_example/.gitignore
177
190
  - rails_example/.rspec
178
191
  - rails_example/Gemfile
@@ -198,7 +211,9 @@ files:
198
211
  - rails_example/app/models/post.rb
199
212
  - rails_example/app/views/layouts/application.html.erb
200
213
  - rails_example/app/workers/simple_worker.rb
214
+ - rails_example/app/workers/slow_until_executing_worker.rb
201
215
  - rails_example/app/workers/spawn_simple_worker.rb
216
+ - rails_example/app/workers/without_argument_worker.rb
202
217
  - rails_example/bin/bundle
203
218
  - rails_example/bin/check_or_setup_db
204
219
  - rails_example/bin/docker-setup
@@ -251,6 +266,7 @@ files:
251
266
  - rails_example/public/favicon.ico
252
267
  - rails_example/public/robots.txt
253
268
  - rails_example/simple.ru
269
+ - rails_example/spec/controllers/work_controller_mock_spec.rb
254
270
  - rails_example/spec/controllers/work_controller_spec.rb
255
271
  - rails_example/spec/factories/posts.rb
256
272
  - rails_example/spec/models/post_spec.rb
@@ -264,7 +280,6 @@ files:
264
280
  - redis/release_lock.lua
265
281
  - redis/synchronize.lua
266
282
  - sidekiq-unique-jobs.gemspec
267
- - spec/celluloid_with_fallback.rb
268
283
  - spec/jobs/another_unique_job.rb
269
284
  - spec/jobs/custom_queue_job.rb
270
285
  - spec/jobs/custom_queue_job_with_filter_method.rb
@@ -291,7 +306,9 @@ files:
291
306
  - spec/jobs/until_global_timeout_job.rb
292
307
  - spec/jobs/until_timeout_job.rb
293
308
  - spec/jobs/while_executing_job.rb
309
+ - spec/jobs/without_argument_job.rb
294
310
  - spec/lib/sidekiq_unique_jobs/client/middleware_spec.rb
311
+ - spec/lib/sidekiq_unique_jobs/config_spec.rb
295
312
  - spec/lib/sidekiq_unique_jobs/core_ext_spec.rb
296
313
  - spec/lib/sidekiq_unique_jobs/lock/until_and_while_executing_spec.rb
297
314
  - spec/lib/sidekiq_unique_jobs/lock/until_executed_spec.rb
@@ -337,7 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
337
354
  version: '0'
338
355
  requirements: []
339
356
  rubyforge_project:
340
- rubygems_version: 2.5.1
357
+ rubygems_version: 2.6.11
341
358
  signing_key:
342
359
  specification_version: 4
343
360
  summary: The unique jobs that were removed from sidekiq