sidekiq-unique-jobs 6.0.8 → 6.0.9

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +10 -13
  3. data/.editorconfig +1 -1
  4. data/.gitignore +11 -22
  5. data/.mdlrc +1 -0
  6. data/.reek.yml +1 -0
  7. data/.rspec +1 -1
  8. data/.rubocop.yml +58 -30
  9. data/.travis.yml +14 -7
  10. data/.yardopts +1 -7
  11. data/CHANGELOG.md +704 -160
  12. data/Gemfile +19 -17
  13. data/Guardfile +0 -29
  14. data/README.md +77 -65
  15. data/Rakefile +22 -5
  16. data/bin/bench +5 -5
  17. data/bin/uniquejobs +2 -2
  18. data/examples/custom_queue_job.rb +1 -1
  19. data/examples/custom_queue_job_with_filter_method.rb +1 -1
  20. data/examples/custom_queue_job_with_filter_proc.rb +2 -2
  21. data/examples/my_unique_job_with_filter_method.rb +1 -1
  22. data/examples/my_unique_job_with_filter_proc.rb +1 -1
  23. data/examples/unique_job_with_filter_method.rb +1 -1
  24. data/lib/sidekiq-unique-jobs.rb +1 -1
  25. data/lib/sidekiq_unique_jobs.rb +32 -107
  26. data/lib/sidekiq_unique_jobs/cli.rb +15 -10
  27. data/lib/sidekiq_unique_jobs/client/middleware.rb +1 -1
  28. data/lib/sidekiq_unique_jobs/constants.rb +25 -20
  29. data/lib/sidekiq_unique_jobs/digests.rb +5 -4
  30. data/lib/sidekiq_unique_jobs/lock/base_lock.rb +3 -3
  31. data/lib/sidekiq_unique_jobs/lock/until_executed.rb +1 -1
  32. data/lib/sidekiq_unique_jobs/lock/while_executing.rb +1 -1
  33. data/lib/sidekiq_unique_jobs/locksmith.rb +4 -4
  34. data/lib/sidekiq_unique_jobs/logging.rb +1 -1
  35. data/lib/sidekiq_unique_jobs/middleware.rb +9 -4
  36. data/lib/sidekiq_unique_jobs/normalizer.rb +1 -1
  37. data/lib/sidekiq_unique_jobs/on_conflict.rb +12 -7
  38. data/lib/sidekiq_unique_jobs/on_conflict/raise.rb +1 -1
  39. data/lib/sidekiq_unique_jobs/on_conflict/reject.rb +3 -3
  40. data/lib/sidekiq_unique_jobs/on_conflict/strategy.rb +1 -1
  41. data/lib/sidekiq_unique_jobs/options_with_fallback.rb +1 -1
  42. data/lib/sidekiq_unique_jobs/scripts.rb +5 -5
  43. data/lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb +1 -1
  44. data/lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb +75 -0
  45. data/lib/sidekiq_unique_jobs/testing.rb +3 -3
  46. data/lib/sidekiq_unique_jobs/timeout.rb +1 -1
  47. data/lib/sidekiq_unique_jobs/unique_args.rb +2 -2
  48. data/lib/sidekiq_unique_jobs/util.rb +3 -3
  49. data/lib/sidekiq_unique_jobs/version.rb +1 -1
  50. data/lib/sidekiq_unique_jobs/web.rb +13 -8
  51. data/lib/sidekiq_unique_jobs/web/helpers.rb +2 -2
  52. data/lib/sidekiq_unique_jobs/web/views/unique_digests.erb +4 -0
  53. data/lib/tasks/changelog.rake +23 -0
  54. data/sidekiq-unique-jobs.gemspec +48 -27
  55. data/update_docs.sh +37 -0
  56. metadata +68 -33
  57. data/.csslintrc +0 -2
  58. data/.dockerignore +0 -4
  59. data/.eslintignore +0 -1
  60. data/.eslintrc +0 -213
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8e3e7df2b735b18c5d7646a2bf292dfdd5fbc43df961df752f41886370f17b1
4
- data.tar.gz: 3c4858831e72b5a0ccf2df861431a2b8efd50d6d591de238fd85115cc38a0eb3
3
+ metadata.gz: d903c692dcfe022998f223767261830ed7dc1c22b19672a6f495b7590f2ee4b3
4
+ data.tar.gz: f6ae2cb380982982bb669256a85d22d181f42f6a7c7f49ab9ea82fe12fc2153a
5
5
  SHA512:
6
- metadata.gz: 2384464c18ab4c26d15f593f7eb22f09556097b17c72a92ebc27e8f1958f6db76fe00b5b9d8fff29c2b03325cb1aa964d921e0ab077ac85b8b6b969451a0259a
7
- data.tar.gz: 53624c8fd54ae96aec99da1ac77386079a7d5b84eac5cb2cec10cc33869c3f75d1d28e626e9dbe371eb064b22e7f7bf60ace313a81424a4be450a4fd0df85cac
6
+ metadata.gz: 0733ea58a6adb672aba0b253a9ca4f4660b490fa79a9948bf998f73adbb570faeed88b5526f0f60d5cc0a495bfa15d14907acc3a182aaf639083db6df589d3b4
7
+ data.tar.gz: 763a2fab57ef632a9e943c4600f60e9156da3f6a18f774d9b80f68229c3f4e55424154630d6bb54477c999bfa72e21b9e5f121a01ff847d17d3667fa8ab29b64
data/.codeclimate.yml CHANGED
@@ -1,17 +1,15 @@
1
1
  ---
2
2
  version: '2'
3
3
  plugins:
4
- bundler-audit:
5
- enabled: false
6
4
  duplication:
7
5
  enabled: true
8
6
  config:
9
7
  languages:
10
8
  - ruby
11
- flog:
12
- enabled: true
13
9
  fixme:
14
10
  enabled: true
11
+ flog:
12
+ enabled: true
15
13
  markdownlint:
16
14
  enabled: true
17
15
  reek:
@@ -20,16 +18,15 @@ plugins:
20
18
  file: .reek.yml
21
19
  rubocop:
22
20
  enabled: true
23
- channel: rubocop-0-57
21
+ channel: rubocop-0-63
24
22
  config:
25
23
  file: .rubocop.yml
24
+
26
25
  exclude_patterns:
27
- - Gemfile
26
+ - "Gemfile"
28
27
  - "*.gemspec"
29
- - Appraisals
30
- - spec/**/*.rb
31
- - gemfiles/**/*
32
- - rails_example/**/*
33
- - redis/**/*
34
- - tmp/**/*
35
-
28
+ - "Appraisals"
29
+ - "gemfiles/"
30
+ - "rails_example/"
31
+ - "redis/"
32
+ - "tmp/"
data/.editorconfig CHANGED
@@ -11,4 +11,4 @@ indent_style = space
11
11
  indent_size = 2
12
12
 
13
13
  [*.{md,slim,haml}]
14
- trim_trailing_whitespace = false
14
+ trim_trailing_whitespace = true
data/.gitignore CHANGED
@@ -1,28 +1,17 @@
1
-
2
1
  *.gem
3
-
2
+ *.sublime-*
3
+ *.sw?
4
4
  .DS_Store
5
-
6
- Gemfile.lock
7
-
8
- .ruby-version
9
5
  .idea/
10
- gemfiles/*.lock
11
- *.sw?
12
- coverage/
13
- tmp/
14
- rails_example/spec/examples.txt
15
-
16
- *.sublime-*
17
-
18
- /sidekiq/
19
-
20
6
  .rspec_status
21
-
22
- /gemfiles/.bundle/
23
-
7
+ .ruby-version
24
8
  /.byebug_history
25
-
26
9
  /.yardoc/
27
-
28
- /spec/examples.txt
10
+ /doc*/
11
+ /gemfiles/.bundle/
12
+ /sidekiq/
13
+ coverage/
14
+ Gemfile.lock
15
+ gemfiles/*.lock
16
+ rails_example/spec/examples.txt
17
+ tmp/
data/.mdlrc ADDED
@@ -0,0 +1 @@
1
+ rules "~MD013"
data/.reek.yml CHANGED
@@ -6,6 +6,7 @@ exclude_paths:
6
6
  - tmp
7
7
  - gemfiles
8
8
  - examples
9
+ - vendor/bundle
9
10
  detectors:
10
11
  DuplicateMethodCall:
11
12
  exclude:
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
1
  --color
2
- --order random
2
+ --require spec_helper
data/.rubocop.yml CHANGED
@@ -1,15 +1,28 @@
1
- require: rubocop-rspec
1
+ require:
2
+ - rubocop-rspec
3
+
4
+ inherit_mode:
5
+ merge:
6
+ - Exclude
7
+
2
8
  AllCops:
9
+ TargetRubyVersion: 2.3
3
10
  Include:
4
- - '**/Rakefile'
5
- - 'lib/**/*.rb'
6
- - 'bin/**/*.rb'
7
- - 'spec/**/*.rb'
8
- - 'examples/**/*.rb'
11
+ - "**/Rakefile"
12
+ - "**/Gemfile"
13
+ - "*.gemspec"
14
+ - "lib/**/*.rb"
15
+ - "bin/**/*.rb"
16
+ - "spec/**/*.rb"
17
+ - "examples/**/*.rb"
9
18
  Exclude:
10
- - 'Gemfile.lock'
11
- - 'gemfiles/**/*'
12
- TargetRubyVersion: 2.3
19
+ - "Gemfile.lock"
20
+ - "**/*.erb"
21
+ - "gemfiles/**/*"
22
+
23
+ Lint/AmbiguousBlockAssociation:
24
+ Exclude:
25
+ - "spec/**/*"
13
26
 
14
27
  Lint/HandleExceptions:
15
28
  Enabled: true
@@ -32,7 +45,10 @@ Metrics/MethodLength:
32
45
  Metrics/BlockLength:
33
46
  Enabled: true
34
47
  Exclude:
35
- - '**/spec/**/*.rb'
48
+ - "**/spec/**/*.rb"
49
+ - "**/*.rake"
50
+ - "Rakefile"
51
+ - "*.gemspec"
36
52
 
37
53
  Metrics/PerceivedComplexity:
38
54
  Max: 8
@@ -46,17 +62,19 @@ Naming/ConstantName:
46
62
  Naming/FileName:
47
63
  Enabled: true
48
64
  Exclude:
49
- - 'lib/sidekiq-unique-jobs.rb'
50
- - '**/Gemfile'
51
- - '**/Appraisals'
52
- - '**/*.gemspec'
65
+ - lib/sidekiq-unique-jobs.rb
53
66
 
54
67
  Naming/UncommunicativeMethodParamName:
55
68
  AllowedNames:
56
69
  - ex
57
70
 
71
+ RSpec/AlignLeftLetBrace:
72
+ Enabled: true
73
+
58
74
  RSpec/DescribeClass:
59
- Enabled: false
75
+ Exclude:
76
+ - spec/unit/sidekiq_unique_jobs/sidekiq/api_spec.rb
77
+ - spec/unit/sidekiq_unique_jobs/core_ext_spec.rb
60
78
 
61
79
  RSpec/ExampleLength:
62
80
  Enabled: false
@@ -65,13 +83,14 @@ RSpec/ExpectActual:
65
83
  Enabled: false
66
84
 
67
85
  RSpec/ExpectChange:
68
- Enabled: false
69
-
70
- RSpec/ExpectInHook:
71
- Enabled: false
86
+ Exclude:
87
+ - spec/integration/sidekiq_unique_jobs/lock/**/*_spec.rb
72
88
 
89
+ RSpec/FilePath:
90
+ Enabled: true
73
91
  RSpec/MessageSpies:
74
- Enabled: false
92
+ Exclude:
93
+ - spec/unit/sidekiq_unique_jobs/scripts_spec.rb
75
94
 
76
95
  RSpec/MultipleExpectations:
77
96
  Enabled: false
@@ -81,29 +100,38 @@ RSpec/NestedGroups:
81
100
  Enabled: true
82
101
 
83
102
  RSpec/RepeatedExample:
84
- Enabled: false
85
-
86
- Style/FrozenStringLiteralComment:
87
- Enabled: true
103
+ Exclude:
104
+ - spec/unit/sidekiq_unique_jobs/unique_args_spec.rb
88
105
 
89
106
  Style/Documentation:
90
- Enabled: false
107
+ Enabled: true
108
+ Exclude:
109
+ - "examples/**/*.rb"
110
+ - "rails_example/**/*.rb"
111
+ - "bin/**/*.rb"
112
+ - "lib/sidekiq_unique_jobs/testing.rb"
113
+ - "lib/sidekiq_unique_jobs/core_ext.rb"
114
+ - "lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb"
115
+ - "lib/sidekiq_unique_jobs/web/**/*"
116
+ - "lib/sidekiq_unique_jobs/on_conflict.rb"
117
+ - "lib/sidekiq_unique_jobs/timeout.rb"
91
118
 
92
- Style/SignalException:
93
- EnforcedStyle: only_fail
94
- Enabled: false
119
+ Style/FrozenStringLiteralComment:
120
+ Enabled: true
95
121
 
96
122
  Style/GlobalVars:
97
123
  Enabled: true
98
124
 
125
+ Style/ModuleFunction:
126
+ Enabled: false
127
+
99
128
  Style/StringLiterals:
100
129
  Enabled: true
101
- EnforcedStyle: single_quotes
130
+ EnforcedStyle: double_quotes
102
131
  ConsistentQuotesInMultiline: true
103
132
 
104
133
  Style/StringLiteralsInInterpolation:
105
134
  Enabled: true
106
- EnforcedStyle: single_quotes
107
135
 
108
136
  Style/SymbolArray:
109
137
  Enabled: true
data/.travis.yml CHANGED
@@ -12,26 +12,33 @@ services:
12
12
  - redis-server
13
13
 
14
14
  before_install:
15
+ - gem install bundler -v 2.0.1
15
16
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
16
17
  - chmod +x ./cc-test-reporter
18
+
17
19
  before_script:
18
- - ./cc-test-reporter before-build
20
+ - if [[ "${COV}" = "true" ]]; then ./cc-test-reporter before-build; fi;
21
+
19
22
  script:
20
23
  - if [[ "${COV}" = "true" ]]; then bundle exec rubocop -P; fi;
21
- - bundle exec rspec
24
+ - bundle exec rspec --require spec_helper
25
+
22
26
  after_script:
23
27
  - if [[ "${COV}" = "true" ]]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi;
28
+
24
29
  rvm:
25
- - 2.5.1
26
- - 2.4.2
27
- - 2.3.2
28
- - jruby-9.2.0.0
30
+ - 2.6.1
31
+ - 2.4.5
32
+ - 2.3.8
33
+ - jruby-9.2.5.0
34
+
29
35
  matrix:
30
36
  fast_finish: true
31
37
  include:
32
- - rvm: 2.5.1
38
+ - rvm: 2.5.3
33
39
  gemfile: gemfiles/sidekiq_develop.gemfile
34
40
  env: COV=true
41
+
35
42
  gemfile:
36
43
  - gemfiles/sidekiq_develop.gemfile
37
44
  - gemfiles/sidekiq_4.0.gemfile
data/.yardopts CHANGED
@@ -1,7 +1 @@
1
- --no-private
2
- --exclude lib/sidekiq_unique_jobs/testing.rb
3
- --exclude lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb
4
- --exclude lib/sidekiq_unique_jobs/middleware.rb
5
- --exclude lib/sidekiq_unique_jobs/core_ext.rb
6
- --exclude lib/sidekiq_unique_jobs/cli.rb
7
-
1
+ --no-private --markup-provider=redcarpet --markup=markdown lib/**/*.rb - README.md
data/CHANGELOG.md CHANGED
@@ -1,252 +1,796 @@
1
- ## v6.0.8
1
+ # Change Log
2
2
 
3
- - Expire available keys after unlocking ([caused by #352](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/352))
3
+ ## [v6.0.8](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.8) (2019-01-10)
4
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.7...v6.0.8)
4
5
 
5
- ## v6.0.7
6
+ **Fixed bugs:**
6
7
 
7
- - Fix a bug leaving jobs locked ([#352](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/352))
8
+ - Close \#359 [\#364](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/364) ([mhenrixon](https://github.com/mhenrixon))
8
9
 
9
- ## v6.0.6
10
+ **Closed issues:**
10
11
 
11
- - Fixes a bug with the command line utility ([#321](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/321))
12
- - Internal refactoring to improve performance ([#318](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/318))
13
- - Adds coverage for retrying jobs
12
+ - Automatic unlock of jobs [\#362](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/362)
13
+ - \(6.0.7\) `uniquejobs:{digest}:AVAILABLE` keys never expire [\#359](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/359)
14
+ - Strange behavior using strategy "reject" with "until\_executed" [\#358](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/358)
15
+ - Pinpointing issues with unique digests not being removed [\#353](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/353)
14
16
 
15
- ## v6.0.5
17
+ **Merged pull requests:**
16
18
 
17
- - Fixes a bug with keys not being deleted ([#317](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/317))
19
+ - update changelog [\#356](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/356) ([camallen](https://github.com/camallen))
18
20
 
19
- ## v6.0.4
21
+ ## [v6.0.7](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.7) (2018-11-29)
22
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.11...v6.0.7)
20
23
 
21
- - Prevent locks from stealing each other (#316)
24
+ **Fixed bugs:**
22
25
 
23
- ## v6.0.3
26
+ - Version 5: Job ID Hash Entries Not Removed if Unique Key Expires [\#346](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/346)
27
+ - Move the lpush last [\#354](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/354) ([mhenrixon](https://github.com/mhenrixon))
24
28
 
25
- - Fixes a few hickups (#315)
29
+ **Closed issues:**
26
30
 
27
- ## v6.0.2
31
+ - First job never unlocks the lock / Endless waiting [\#352](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/352)
32
+ - Version 5&6: uniqueness not respected for Job without params [\#349](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/349)
28
33
 
29
- - Fixes sidekiq web pagination of unique digests
30
- - Fixes lock_expiration usage (Lua doesn't support expire after persisting a key)
34
+ ## [v5.0.11](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.11) (2018-11-19)
35
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.6...v5.0.11)
31
36
 
32
- ## v6.0.1
37
+ **Implemented enhancements:**
33
38
 
34
- - Remove unused method that causes conflict with sidekiq/web
39
+ - More integration tests [\#329](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/329) ([mhenrixon](https://github.com/mhenrixon))
35
40
 
36
- ## v6.0.0
41
+ **Fixed bugs:**
37
42
 
38
- - Complete rewrite of the locking mechanism
39
- - Improved README
40
- - Improved reliability
41
- - Improved coverage
42
- - Removed a ton of default configuration
43
- - Removed support for ActiveJob
44
- - Added WhileExecutingReject `unique: :while_executing_reject`
45
- - Renamed `UntilTimeout` to `UntilExpired`
46
- - Removed concurrency for now (a0cff5bc42edbe7190d6ede7e7f845074d2d7af6)
47
- - Improved integration testing for locks
48
- - Totally delete the hash that was growing out of proportion
49
- - Adds a sidekiq web extension for viewing and deleting unique digests
50
- - Renamed the configuration `unique:` to `lock:` (still backwards compatible)
51
- - Added some very simplistic conflict strategies.
43
+ - Always Remove Job ID from uniquejobs Hash [\#347](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/347) ([chadrschroeder](https://github.com/chadrschroeder))
44
+ - Convert expiration time to integer [\#330](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/330) ([dareddov](https://github.com/dareddov))
52
45
 
53
- ## v5.1.0
46
+ **Closed issues:**
54
47
 
55
- - Refactoring the runtime locks (WhileExecuting)
48
+ - concurrent-ruby 1.1.1 is causing this gem to break [\#340](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/340)
49
+ - lock remains after job not properly finish [\#339](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/339)
50
+ - Using a different Redis instance [\#337](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/337)
51
+ - Using :until\_and\_while\_executing not yielding expected results [\#336](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/336)
52
+ - "payload is not unique", but cannot find digest or scheduled job [\#335](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/335)
53
+ - Confused with UntilExecuted documenation [\#326](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/326)
54
+ - Job never requeued after raising unhandled error with until\_and\_while\_executing? [\#322](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/322)
56
55
 
57
- ## v5.0.10
56
+ **Merged pull requests:**
58
57
 
59
- - Cleans up test setup and make tests more readable
60
- - Allow raising all errors
61
- - Log previously hidden errors
62
- - Revert the changes of v5.0.5 (8a4b7648b8b0ee5d7dc1f5f5a036f41d52ad9a42)
63
- - Allow name errors in unique args method to be raised
58
+ - Do not build keys on lua scripts [\#348](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/348) ([pacoguzman](https://github.com/pacoguzman))
59
+ - fix CHANGELOG syntax [\#344](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/344) ([timoschilling](https://github.com/timoschilling))
60
+ - Define Config class inside SidekiqUniqueJobs module [\#343](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/343) ([Slike9](https://github.com/Slike9))
61
+ - fix readme testing section [\#333](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/333) ([edmartins](https://github.com/edmartins))
62
+ - Fix typo in documentation \[ci-skip\] [\#327](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/327) ([mhenrixon](https://github.com/mhenrixon))
64
63
 
65
- ## v5.0.9
66
- - [#229](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/#229) Use HSCAN for expiring keys
67
- - [#232](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/#232) Fix testing helper
64
+ ## [v6.0.6](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.6) (2018-08-09)
65
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.5...v6.0.6)
68
66
 
69
- ## v5.0.8
70
- - Fixes [#220](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/220)
67
+ **Implemented enhancements:**
71
68
 
72
- ## v5.0.7
73
- - Fixes [#218](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/218)
69
+ - Adds coverage for job retries [\#321](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/321) ([mhenrixon](https://github.com/mhenrixon))
70
+ - Internal refactoring [\#318](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/318) ([mhenrixon](https://github.com/mhenrixon))
74
71
 
75
- ## v5.0.6
76
- - Allow across worker uniquenes: See https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/jobs/unique_acrosss_workers_job.rb for information
72
+ **Closed issues:**
77
73
 
78
- ## v5.0.5
79
- - Use a class level mutex for `while_executing`
74
+ - Unique UntilExecuted not working while the job is executing? [\#319](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/319)
80
75
 
81
- ## v5.0.4
82
- - Fixes a problem with installing the gem
76
+ ## [v6.0.5](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.5) (2018-08-07)
77
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.4...v6.0.5)
83
78
 
84
- ## v5.0.3
85
- - Removes test files and appraisals and such from the released gem version to speed up gem installs
79
+ **Fixed bugs:**
86
80
 
87
- ## v5.0.2
88
- - Added more helpful debug, warning and error messages for failures to collect unique arghuments
81
+ - Unlock instead of signal [\#317](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/317) ([mhenrixon](https://github.com/mhenrixon))
89
82
 
90
- ## v5.0.1
83
+ **Closed issues:**
91
84
 
92
- - Added a command line util for cleaning out expired keys
93
- - Use `SidekiqUniqueJobs.logger` instead of spreading out `Sidekiq.logger` everywhere.
85
+ - Why is lock\_timeout: nil VERY DANGEROUS? [\#313](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/313)
94
86
 
95
- ## v5.0.0
87
+ ## [v6.0.4](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.4) (2018-08-02)
88
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.3...v6.0.4)
96
89
 
97
- - Only support Sidekiq >= 4
98
- - Removed overrides and support for older Sidekiq testing
99
- - Added coverage
90
+ **Fixed bugs:**
100
91
 
101
- ## v4.0.18
92
+ - Fix the broken expiration [\#316](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/316) ([mhenrixon](https://github.com/mhenrixon))
102
93
 
103
- - Allow mock_redis to be used over redis
104
- - Fixes some locking inconsistencies
94
+ **Closed issues:**
105
95
 
106
- ## v4.0.17
96
+ - Question about until\_timeout with 6.0.0 [\#303](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/303)
107
97
 
108
- - Always release lock in the lua script `release_lock.lua` and return success [#169](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/169)
98
+ ## [v6.0.3](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.3) (2018-08-02)
99
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.2...v6.0.3)
109
100
 
110
- ## v4.0.16
101
+ **Fixed bugs:**
111
102
 
112
- - Allow run & queue lock timeout (expiration) to be different [#164](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/164)
113
- - Fix a bug with loading sidekiq test overrides ([#167](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/167)
103
+ - Enable replace strategy [\#315](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/315) ([mhenrixon](https://github.com/mhenrixon))
114
104
 
115
- ## v4.0.15
105
+ **Closed issues:**
116
106
 
117
- - Close [#156](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/156)
118
- - Close [#158](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/158)
119
- - Style fixes and some minor adjustments to the console/cmd line app
107
+ - Sidekiq Web Pagination Broken [\#309](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/309)
120
108
 
121
- ## v4.0.13
109
+ **Merged pull requests:**
122
110
 
123
- - Allow deleting locks by jid
111
+ - Correct documentation typo \[ci skip\] [\#312](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/312) ([mhenrixon](https://github.com/mhenrixon))
124
112
 
125
- ## v4.0.12
113
+ ## [v6.0.2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.2) (2018-08-01)
114
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.1...v6.0.2)
126
115
 
127
- - Allow jobs to be pushed to processing
128
- - Close [#150](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/150)
129
- - Close [#151](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/151)
130
- - Close [#146](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/146)
131
- - Close [#136](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/136)
132
- - Close [#133](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/133)
116
+ **Fixed bugs:**
133
117
 
134
- ## v4.0.11
118
+ - Not unlocking automatically \(version 6.0.0rc5\) [\#293](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/293)
119
+ - Bug fixes [\#310](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/310) ([mhenrixon](https://github.com/mhenrixon))
135
120
 
136
- - Always load forwardable [#152](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/152#issuecomment-164199978)
121
+ ## [v6.0.1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.1) (2018-07-31)
122
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0...v6.0.1)
137
123
 
138
- ## v4.0.10
124
+ **Fixed bugs:**
139
125
 
140
- - Fix [#152](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/152)
141
- - Minor improvement to internal esthetics
126
+ - :until\_executed is throwing errors and not requeuing the job. [\#256](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/256)
127
+ - Remove unused method [\#307](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/307) ([mhenrixon](https://github.com/mhenrixon))
142
128
 
143
- ## v4.0.9
129
+ **Closed issues:**
144
130
 
145
- - Add command line and console extensions for removal of unique jobs (c292d87)
131
+ - ArgumentError: sidekiq\_unique\_jobs/web breaks sidekiq Retries page [\#306](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/306)
132
+ - If the job dies, it doesn't remove the lock [\#304](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/304)
146
133
 
147
- ## v4.0.8
134
+ **Merged pull requests:**
148
135
 
149
- - Use unique arguments for the `WhileExecuting` lock ([#127](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/127)
150
- - Delicensed code ([#132](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/132)
151
- - Fix queuing unique jobs ([#138](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/138)
136
+ - Dead jobs [\#308](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/308) ([mhenrixon](https://github.com/mhenrixon))
137
+ - Fix require path for sidekiq\_unique\_jobs/web [\#305](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/305) ([soundasleep](https://github.com/soundasleep))
152
138
 
153
- ## v4.0.7
139
+ ## [v6.0.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0) (2018-07-27)
140
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc8...v6.0.0)
154
141
 
155
- - Use unique arguments for the `WhileExecuting` lock ([#127](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/127)
156
- - See also https://github.com/mhenrixon/sidekiq-unique-jobs/releases/tag/v4.0.7
142
+ ## [v6.0.0.rc8](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc8) (2018-07-24)
143
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc7...v6.0.0.rc8)
157
144
 
158
- ## v4.0.6
145
+ **Implemented enhancements:**
159
146
 
160
- - Removes enforced uniqueness for all jobs ([#127](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/127)
147
+ - Add RequeueWhileExecuting strategy [\#223](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/223)
148
+ - New feature: Replace original job if duplicate is added [\#177](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/177)
149
+ - Add a replace strategy for client locks [\#302](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/302) ([mhenrixon](https://github.com/mhenrixon))
161
150
 
162
- ## v4.0.5
151
+ **Merged pull requests:**
163
152
 
164
- - Forces look for `Sidekiq::Testing` in Sidekiq without ancestors #129
153
+ - Add more details about testing uniqueness [\#301](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/301) ([mhenrixon](https://github.com/mhenrixon))
154
+ - Update README.md [\#300](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/300) ([pirj](https://github.com/pirj))
165
155
 
166
- ## v4.0.4
156
+ ## [v6.0.0.rc7](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc7) (2018-07-23)
157
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc6...v6.0.0.rc7)
167
158
 
168
- - Fix usage with active job
169
- - Get rid of unneeded configuration options `unique_args_enabled` (just use whatever unique argument that is configured).
159
+ **Implemented enhancements:**
170
160
 
171
- ## v4.0.3
161
+ - Sidekiq web [\#297](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/297) ([mhenrixon](https://github.com/mhenrixon))
162
+ - Document code [\#296](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/296) ([mhenrixon](https://github.com/mhenrixon))
163
+ - Rename to `unique:` to `lock:` [\#295](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/295) ([mhenrixon](https://github.com/mhenrixon))
172
164
 
173
- - Remove `unique_lock` and use `unique: ` to set this like in `unique: :until_timeout`
174
- - Warn when using `unique: true` and suggest to change it to what we need with a fallback.
175
- - Create constants for hash keys to avoid having to fix spelling or for renaming keys only having to be done in one place and avoid having to type .freeze everywhere.
176
- - Move all explicit logic out from the server middle ware and make it just call execute on the instance of the lock class (prepare for allowing custom locking classes to be used).
177
- - Create a new job for scheduling jobs after it started executing but only allow one job to run at the same time.
165
+ **Closed issues:**
178
166
 
179
- ## v4.0.2
167
+ - Unique Job not work while play with crontab [\#294](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/294)
168
+ - Making the GEM compatible with Ruby \< 2.3 [\#291](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/291)
180
169
 
181
- - Fix a problem with an unresolved reference
170
+ **Merged pull requests:**
182
171
 
183
- ## v4.0.1
172
+ - Adds changelog entry [\#299](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/299) ([mhenrixon](https://github.com/mhenrixon))
173
+ - Fix README [\#298](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/298) ([mhenrixon](https://github.com/mhenrixon))
184
174
 
185
- - Get rid of development dependency on active support (causing trouble with jruby)
175
+ ## [v6.0.0.rc6](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc6) (2018-07-15)
176
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc5...v6.0.0.rc6)
186
177
 
187
- ## v4.0.0
178
+ **Fixed bugs:**
188
179
 
189
- - Improved uniqueness handling (complete refactoring, upgrade with caution)
190
- - 100% breaking changes
180
+ - Don't unlock when worker raises an error [\#290](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/290) ([mhenrixon](https://github.com/mhenrixon))
191
181
 
192
- ## v3.0.15
182
+ **Closed issues:**
193
183
 
194
- - Jobs only ever unlock themselves now (see #96 & #94 for info) thanks @pik
195
- - Slight refactoring and internal renaming. Shouldn't affect anyone
196
- - Run locks as an alternative when you only need to prevent the same job running twice but want to be able to schedule it multiple times. See #99 (thanks @pik)
197
- - Fixes #90, #92, #93, #97, #98, #100, #101, #105
184
+ - Locking with retries [\#289](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/289)
198
185
 
199
- ## v3.0.14
186
+ **Merged pull requests:**
200
187
 
201
- - Improve uniqueness check performance thanks @mpherham
202
- - Remove locks in sidekiq fake testing mode
203
- - Do not unlock jobs when sidekiq is shutting down
188
+ - Readme [\#288](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/288) ([mhenrixon](https://github.com/mhenrixon))
204
189
 
205
- ## v3.0.13
190
+ ## [v6.0.0.rc5](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc5) (2018-06-30)
191
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc4...v6.0.0.rc5)
206
192
 
207
- - Improved testing capabilities (testing uniqueness should not work better)
208
- - Configurable logging of duplicate payloads
209
- - Now requires `sidekiq_unique_ext` and `sidekiq/api` by default
210
- - Drop support for MRI 1.9 and sidekiq 2
193
+ **Fixed bugs:**
211
194
 
212
- ## v3.0.11
195
+ - bundle exec jobs console does not work [\#253](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/253)
196
+ - Rename command line binary [\#287](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/287) ([mhenrixon](https://github.com/mhenrixon))
213
197
 
214
- - Ensure threadsafety (thanks to adstage-david)
198
+ ## [v6.0.0.rc4](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc4) (2018-06-30)
199
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc3...v6.0.0.rc4)
215
200
 
216
- ## v3.0.9
217
- - Fixed that all jobs stopped processing
201
+ **Implemented enhancements:**
218
202
 
219
- ## v3.0.8
203
+ - Prepare for v6 [\#286](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/286) ([mhenrixon](https://github.com/mhenrixon))
204
+ - Only unlock not delete [\#285](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/285) ([mhenrixon](https://github.com/mhenrixon))
220
205
 
221
- - Unique extensions for Web GUI by @rickenharp. Uniqueness will now be removed when a job is.
206
+ ## [v6.0.0.rc3](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc3) (2018-06-29)
207
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc2...v6.0.0.rc3)
222
208
 
223
- ## v3.0.7
209
+ **Fixed bugs:**
224
210
 
225
- - Internal refactoring
226
- - Improved coverage
227
- - Rubocop style validation
211
+ - Fix waiting for locks [\#284](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/284) ([mhenrixon](https://github.com/mhenrixon))
228
212
 
229
- ## v3.0.5
213
+ ## [v6.0.0.rc2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc2) (2018-06-26)
214
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc1...v6.0.0.rc2)
230
215
 
231
- - Fixed the different test modes (major thanks to @salrepe)
216
+ **Implemented enhancements:**
232
217
 
233
- ## v3.0.2
218
+ - Within tests: workers enqueued in the future don't clear their unique locks after being drained/executed [\#254](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/254)
219
+ - Unexpected behavior with until\_executed [\#250](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/250)
234
220
 
235
- - Removed runtime dependency on mock_redis (add `gem 'mock_redis'` to your desired group to use it)
221
+ **Fixed bugs:**
236
222
 
237
- ## v2.7.0
223
+ - Unique job needs to be unlocked manually? [\#261](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/261)
224
+ - Duplicate jobs getting created [\#257](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/257)
225
+ - Multiple non-unique jobs with until\_executed? [\#255](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/255)
226
+ - :until\_executing not unlocking when starting to run [\#245](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/245)
227
+ - Drop jobs hash [\#282](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/282) ([mhenrixon](https://github.com/mhenrixon))
238
228
 
239
- - Use mock_redis when testing in fake mode
240
- - Replace minitest with rspec
241
- - Add codeclimate badge
242
- - Update travis with redis-server
229
+ **Closed issues:**
243
230
 
244
- ## v2.6.5
231
+ - Difference between :until\_and\_while\_executing vs :until\_executed is not clear [\#249](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/249)
232
+ - Deprecated Documentation [\#246](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/246)
233
+ - Are we meant to manually expire the unique jobs hash? [\#234](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/234)
234
+ - How :until\_executing works ? Run job only once and discard new jobs while another job is executing [\#226](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/226)
245
235
 
246
- - via @sax - possibility to set which arguments should be counted as unique - https://github.com/form26/sidekiq_unique_jobs/pull/12
247
- - via @eduardosasso - possibility to set which arguments should be counted as unique - https://github.com/form26/sidekiq_unique_jobs/pull/11
248
- - via @KensoDev - configuration of default expiration - https://github.com/form26/sidekiq_unique_jobs/pull/9
236
+ **Merged pull requests:**
249
237
 
250
- ## v2.1.0
238
+ - Remove some misleading information [\#283](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/283) ([mhenrixon](https://github.com/mhenrixon))
251
239
 
252
- Extracted the unique jobs portion from sidekiq main repo since @mperham dropped support for it.
240
+ ## [v6.0.0.rc1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc1) (2018-06-26)
241
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.beta2...v6.0.0.rc1)
242
+
243
+ **Implemented enhancements:**
244
+
245
+ - Legacy support [\#280](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/280)
246
+ - Adds legacy support [\#281](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/281) ([mhenrixon](https://github.com/mhenrixon))
247
+ - Adds guard-reek [\#279](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/279) ([mhenrixon](https://github.com/mhenrixon))
248
+ - Fix UntilExpired [\#278](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/278) ([mhenrixon](https://github.com/mhenrixon))
249
+
250
+ **Fixed bugs:**
251
+
252
+ - Fix UntilExpired [\#278](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/278) ([mhenrixon](https://github.com/mhenrixon))
253
+
254
+ ## [v6.0.0.beta2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.beta2) (2018-06-25)
255
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.beta1...v6.0.0.beta2)
256
+
257
+ **Implemented enhancements:**
258
+
259
+ - Make locks more robust [\#277](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/277) ([mhenrixon](https://github.com/mhenrixon))
260
+ - Rename UntilTimeout -\> UntilExpired [\#276](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/276) ([mhenrixon](https://github.com/mhenrixon))
261
+
262
+ ## [v6.0.0.beta1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.beta1) (2018-06-22)
263
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.beta...v6.0.0.beta1)
264
+
265
+ **Implemented enhancements:**
266
+
267
+ - Code smells [\#275](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/275) ([mhenrixon](https://github.com/mhenrixon))
268
+ - Reject while scheduling [\#273](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/273) ([mhenrixon](https://github.com/mhenrixon))
269
+ - Improve testing [\#272](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/272) ([mhenrixon](https://github.com/mhenrixon))
270
+
271
+ ## [v6.0.0.beta](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.beta) (2018-06-17)
272
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.10...v6.0.0.beta)
273
+
274
+ **Implemented enhancements:**
275
+
276
+ - Until and while executing [\#271](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/271) ([mhenrixon](https://github.com/mhenrixon))
277
+ - Solidify master [\#270](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/270) ([mhenrixon](https://github.com/mhenrixon))
278
+ - Minor adjustments [\#268](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/268) ([mhenrixon](https://github.com/mhenrixon))
279
+ - Use ruby 2.5.1 [\#267](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/267) ([mhenrixon](https://github.com/mhenrixon))
280
+ - Add explicit concurrent-ruby dependency. [\#265](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/265) ([brettburley](https://github.com/brettburley))
281
+
282
+ **Fixed bugs:**
283
+
284
+ - Allow `jobs keys` to default to listing all keys [\#252](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/252) ([soundasleep](https://github.com/soundasleep))
285
+
286
+ **Closed issues:**
287
+
288
+ - Incomplete sentence in README [\#264](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/264)
289
+ - ActiveJob and Sidekiq::Worker [\#259](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/259)
290
+ - ActiveJob and Sidekiq::Worker [\#258](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/258)
291
+ - Non-unique jobs can be added even when `sidekiq\_options unique: :until\_executed` [\#251](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/251)
292
+ - Trouble with "inline" mode [\#243](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/243)
293
+ - Sidekiq::Worker.set not working with sidekiq-unique-jobs [\#242](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/242)
294
+ - sidekiq-unique-job with ActiveJob [\#238](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/238)
295
+ - Deadlock using :while\_executing? [\#233](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/233)
296
+
297
+ **Merged pull requests:**
298
+
299
+ - Improve documentation [\#269](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/269) ([mhenrixon](https://github.com/mhenrixon))
300
+ - Remove unnecessary monkey patches for String [\#262](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/262) ([zormandi](https://github.com/zormandi))
301
+ - README \> While Executing: remove unnecessary word [\#260](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/260) ([TimCannady](https://github.com/TimCannady))
302
+ - Don't skip monkeypatches if ActiveSupport present [\#248](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/248) ([dleavitt](https://github.com/dleavitt))
303
+ - Better runtime locks [\#241](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/241) ([mhenrixon](https://github.com/mhenrixon))
304
+
305
+ ## [v5.0.10](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.10) (2017-08-19)
306
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.9...v5.0.10)
307
+
308
+ **Closed issues:**
309
+
310
+ - Version v5.0.5 might have introduced a breaking change in while\_executing and was not documented [\#230](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/230)
311
+ - String arguments not seen as unique [\#222](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/222)
312
+ - unique\_args method suppresses all `NameError` exceptions [\#219](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/219)
313
+
314
+ **Merged pull requests:**
315
+
316
+ - Various improvements [\#240](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/240) ([mhenrixon](https://github.com/mhenrixon))
317
+ - Fix: uninitialized constant CustomQueueJob on rspec [\#239](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/239) ([dalpo](https://github.com/dalpo))
318
+
319
+ ## [v5.0.9](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.9) (2017-07-06)
320
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.8...v5.0.9)
321
+
322
+ **Closed issues:**
323
+
324
+ - The work of several unique sidekiq tasks within one queue [\#225](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/225)
325
+ - Missing documentation on activejob usage [\#221](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/221)
326
+
327
+ **Merged pull requests:**
328
+
329
+ - Your testing lib is broken and don't permit to test uniqueness of jobs [\#232](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/232) ([keysen](https://github.com/keysen))
330
+ - Use hscan for Util\#expire [\#229](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/229) ([dmkc](https://github.com/dmkc))
331
+ - Fixed documentation example about unique\_args [\#228](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/228) ([andresakata](https://github.com/andresakata))
332
+ - Fix filename [\#224](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/224) ([ikataitsev](https://github.com/ikataitsev))
333
+
334
+ ## [v5.0.8](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.8) (2017-05-03)
335
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.7...v5.0.8)
336
+
337
+ **Closed issues:**
338
+
339
+ - Using JSON.parse in delete\_by\_value\_ext break compatiblity with other Sidekiq extensions [\#220](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/220)
340
+ - Is it possible to get the Job ID of original job? [\#217](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/217)
341
+
342
+ ## [v5.0.7](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.7) (2017-04-26)
343
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.6...v5.0.7)
344
+
345
+ **Closed issues:**
346
+
347
+ - Can't delete Sidekiq::Job after 5.0.1 [\#218](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/218)
348
+ - Uniqueness across workers [\#210](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/210)
349
+
350
+ ## [v5.0.6](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.6) (2017-04-23)
351
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.5...v5.0.6)
352
+
353
+ **Closed issues:**
354
+
355
+ - Different unique arguments depending on lock type [\#203](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/203)
356
+ - Strategy until\_and\_while\_executing not working properly [\#199](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/199)
357
+ - while\_executing working wrong [\#193](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/193)
358
+
359
+ ## [v5.0.5](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.5) (2017-04-23)
360
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.4...v5.0.5)
361
+
362
+ **Merged pull requests:**
363
+
364
+ - Fixed typo on README.md [\#216](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/216) ([jsantos](https://github.com/jsantos))
365
+
366
+ ## [v5.0.4](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.4) (2017-04-18)
367
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.3...v5.0.4)
368
+
369
+ ## [v5.0.3](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.3) (2017-04-18)
370
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.2...v5.0.3)
371
+
372
+ ## [v5.0.2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.2) (2017-04-17)
373
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.1...v5.0.2)
374
+
375
+ **Closed issues:**
376
+
377
+ - Uniqueness should not survive Class.jobs.clear [\#214](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/214)
378
+ - when arguments are empty then unique\_args proc/method is not executed [\#201](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/201)
379
+
380
+ ## [v5.0.1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.1) (2017-04-16)
381
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.0...v5.0.1)
382
+
383
+ **Closed issues:**
384
+
385
+ - Removing "uniquejobs" hash? [\#213](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/213)
386
+ - deprecation warnings with redis-namespace 2.0 [\#212](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/212)
387
+ - Unclear docs / examples for unique\_args [\#211](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/211)
388
+ - Jobs Console fails to launch [\#208](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/208)
389
+ - Util.del Redis::CommandError: ERR syntax error [\#207](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/207)
390
+ - version 4.0.19 [\#206](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/206)
391
+ - Job.delete does not remove lock in all circumstances [\#205](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/205)
392
+ - disappearing jobs - known issue in conjunction with other extensions? [\#202](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/202)
393
+ - Broken pipe @ io\_write - \<STDERR\> on sidekiq unique jobs [\#198](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/198)
394
+ - Doesn't play well with redis-namespace [\#196](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/196)
395
+ - SidekiqUniqueJobs::ScriptError [\#192](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/192)
396
+
397
+ **Merged pull requests:**
398
+
399
+ - Add the possibility to clear the hash [\#215](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/215) ([mhenrixon](https://github.com/mhenrixon))
400
+
401
+ ## [v5.0.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.0) (2017-04-08)
402
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.18...v5.0.0)
403
+
404
+ **Fixed bugs:**
405
+
406
+ - Can't enable testing with newer versions of sidekiq [\#175](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/175)
407
+ - strange behaviour [\#172](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/172)
408
+
409
+ **Closed issues:**
410
+
411
+ - Could not find a valid gem 'sidekiq-unique-jobs' \(= 3.0.15\) in any repository [\#197](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/197)
412
+ - `uniquejobs` hash doesn't get cleaned up [\#195](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/195)
413
+ - Code block under "Finer Control over Uniqueness" in your documentation might have the wrong option specified [\#191](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/191)
414
+ - not able to run test without live Redis [\#186](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/186)
415
+ - unique while not sucessfully completed? [\#185](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/185)
416
+ - Duplicate jobs when using :until\_and\_while\_executing [\#181](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/181)
417
+ - unique: :while\_executing doesn't remove lock when the Sidekiq node running the job shuts down and terminates the job prematurely [\#170](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/170)
418
+ - :while\_executing appears to be broken [\#159](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/159)
419
+ - Using ":until\_executing, :until\_executed, :until\_timeout, :until\_and\_while\_executing" all break Sidekiq::Testing [\#157](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/157)
420
+ - Way to remove lock in application code [\#147](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/147)
421
+
422
+ **Merged pull requests:**
423
+
424
+ - Increase sleep delay in WhileExecuting\#synchronize [\#204](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/204) ([dsander](https://github.com/dsander))
425
+ - Ensure job ID removed from uniquejobs hash [\#200](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/200) ([carlosmartinez](https://github.com/carlosmartinez))
426
+ - unique args need to be an array [\#194](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/194) ([pboling](https://github.com/pboling))
427
+
428
+ ## [v4.0.18](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.18) (2016-07-24)
429
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.17...v4.0.18)
430
+
431
+ **Closed issues:**
432
+
433
+ - ArgumentError: wrong number of arguments \(given 1, expected 2\) [\#190](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/190)
434
+ - Should be note on document only works on production mode [\#189](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/189)
435
+ - SidekiqUniqueJobs::ScriptError: release\_lock.lua NOSCRIPT No matching script. [\#187](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/187)
436
+ - sidekiq-unique-jobs kills sidekiq in production [\#183](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/183)
437
+ - Parameters turn into String [\#182](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/182)
438
+ - You really helped me today [\#180](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/180)
439
+ - 4.0.17 config [\#171](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/171)
440
+ - Problem with releasing uniquejobs locks after timeout expires [\#169](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/169)
441
+ - NOSCRIPT No matching script. Please use EVAL. [\#168](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/168)
442
+ - Broken compatibility with Sidekiq 3.4 [\#140](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/140)
443
+
444
+ **Merged pull requests:**
445
+
446
+ - missed space [\#188](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/188) ([TheBigSadowski](https://github.com/TheBigSadowski))
447
+ - Convert unless if to just 1 if [\#179](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/179) ([otzy007](https://github.com/otzy007))
448
+ - fix for \#168. Handle the NOSCRIPT by sending the script again [\#178](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/178) ([otzy007](https://github.com/otzy007))
449
+ - Fixed gitter badge link [\#176](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/176) ([andrew](https://github.com/andrew))
450
+
451
+ ## [v4.0.17](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.17) (2016-03-02)
452
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.16...v4.0.17)
453
+
454
+ **Closed issues:**
455
+
456
+ - No place where I can say "Thank you" for all contributors [\#165](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/165)
457
+
458
+ ## [v4.0.16](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.16) (2016-02-17)
459
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.15...v4.0.16)
460
+
461
+ **Merged pull requests:**
462
+
463
+ - Fix for sidekiq delete failing for version 3.4.x [\#167](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/167) ([theprogrammerin](https://github.com/theprogrammerin))
464
+ - Run lock timeout configurable [\#164](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/164) ([Slania](https://github.com/Slania))
465
+
466
+ ## [v4.0.15](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.15) (2016-02-16)
467
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.13...v4.0.15)
468
+
469
+ **Closed issues:**
470
+
471
+ - Until timeout question [\#163](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/163)
472
+ - Error when run rspec [\#162](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/162)
473
+ - Unique job keys never dissapear [\#161](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/161)
474
+ - Uniqueness breaks jobs [\#160](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/160)
475
+ - Too many open files [\#155](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/155)
476
+
477
+ **Merged pull requests:**
478
+
479
+ - Add a Gitter chat badge to README.md [\#166](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/166) ([gitter-badger](https://github.com/gitter-badger))
480
+ - Fix test overrides. [\#158](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/158) ([benseligman](https://github.com/benseligman))
481
+ - Remove wrong Server::Middleware\#worker\_class override [\#156](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/156) ([vkuznetsov](https://github.com/vkuznetsov))
482
+
483
+ ## [v4.0.13](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.13) (2015-12-16)
484
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.12...v4.0.13)
485
+
486
+ **Closed issues:**
487
+
488
+ - Seeing this error with latest version 4.0.12 [\#154](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/154)
489
+ - Unique job showing weird behavior [\#153](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/153)
490
+
491
+ ## [v4.0.12](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.12) (2015-12-15)
492
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.11...v4.0.12)
493
+
494
+ **Closed issues:**
495
+
496
+ - Can't schedule a job from another job [\#151](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/151)
497
+ - perform\_in not working in version 4.0.9 [\#150](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/150)
498
+ - `unique: until\_and\_while\_executing` not working as expected [\#146](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/146)
499
+ - while\_executing still runs duplicate tasks [\#136](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/136)
500
+ - Version 4 Upgrade [\#133](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/133)
501
+
502
+ ## [v4.0.11](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.11) (2015-12-12)
503
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.10...v4.0.11)
504
+
505
+ **Closed issues:**
506
+
507
+ - Release a new version for Ruby \< 2.1 compatability [\#152](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/152)
508
+
509
+ ## [v4.0.10](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.10) (2015-12-12)
510
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.9...v4.0.10)
511
+
512
+ **Closed issues:**
513
+
514
+ - Until Executed is taking waiting for unique\_expiration [\#149](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/149)
515
+ - Until Executed vs Unique Until And While Executing is confusing in README [\#148](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/148)
516
+ - sidekiq-unique-jobs not enabled from sidekiq workers [\#131](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/131)
517
+
518
+ ## [v4.0.9](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.9) (2015-11-14)
519
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.8...v4.0.9)
520
+
521
+ **Closed issues:**
522
+
523
+ - Error when using unique\_args in 4.0.8 [\#145](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/145)
524
+ - Ignore lock when jobs spawned from another sidekiq worker [\#142](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/142)
525
+ - Two Rails apps on the same server, but only one Sidekiq instances is working correctly [\#141](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/141)
526
+ - ActiveRecord::RecordNotDestroyed: Failed to destroy the record [\#139](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/139)
527
+
528
+ ## [v4.0.8](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.8) (2015-10-31)
529
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.7...v4.0.8)
530
+
531
+ **Closed issues:**
532
+
533
+ - Jobs not getting queued in v4 [\#138](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/138)
534
+ - Unique args being considered? [\#137](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/137)
535
+ - No mention how to test in README [\#135](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/135)
536
+ - License Difference [\#132](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/132)
537
+
538
+ **Merged pull requests:**
539
+
540
+ - Calculate worker's unique args when a proc or a symbol is specified [\#143](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/143) ([zeqfreed](https://github.com/zeqfreed))
541
+ - Fix markdown link formatting [\#134](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/134) ([thbar](https://github.com/thbar))
542
+
543
+ ## [v4.0.7](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.7) (2015-10-14)
544
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.6...v4.0.7)
545
+
546
+ **Closed issues:**
547
+
548
+ - docs clarification [\#130](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/130)
549
+ - 4.\* is hurting background job workers performance [\#127](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/127)
550
+
551
+ ## [v4.0.6](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.6) (2015-10-14)
552
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.5...v4.0.6)
553
+
554
+ **Closed issues:**
555
+
556
+ - NameError: uninitialized constant SidekiqUniqueJobs::RunLockFailed [\#126](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/126)
557
+
558
+ ## [v4.0.5](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.5) (2015-10-13)
559
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.4...v4.0.5)
560
+
561
+ **Closed issues:**
562
+
563
+ - Rails + Sidekiq will go bezerk after sidekiq-unique-jobs testing check. [\#128](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/128)
564
+ - NoMethodError: undefined method `to\_sym' for true:TrueClass [\#125](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/125)
565
+ - Redis::CommandError: ERR unknown command 'eval' [\#124](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/124)
566
+
567
+ **Merged pull requests:**
568
+
569
+ - Forces to look for testing namespace in Sidekiq and not his ancestors [\#129](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/129) ([antek-drzewiecki](https://github.com/antek-drzewiecki))
570
+ - Fix outdated phrasing and add test coverage to readme [\#123](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/123) ([albertyw](https://github.com/albertyw))
571
+
572
+ ## [v4.0.4](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.4) (2015-10-09)
573
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.3...v4.0.4)
574
+
575
+ **Closed issues:**
576
+
577
+ - Active job with unique args doesn't work [\#120](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/120)
578
+ - 4.0.1 =\> job no longer unique [\#117](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/117)
579
+ - Update Changelog and Tags [\#115](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/115)
580
+
581
+ ## [v4.0.3](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.3) (2015-10-08)
582
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.2...v4.0.3)
583
+
584
+ **Closed issues:**
585
+
586
+ - unique\_unlock\_order - never option [\#122](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/122)
587
+ - Run 1 job and queue 1 [\#121](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/121)
588
+ - unique\_lock vs unique\_locks typo [\#119](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/119)
589
+ - 4.0.2 commited but not released to rubygems? [\#118](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/118)
590
+
591
+ ## [v4.0.2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.2) (2015-10-06)
592
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/4.0.1...v4.0.2)
593
+
594
+ ## [4.0.1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/4.0.1) (2015-10-06)
595
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.0...4.0.1)
596
+
597
+ **Closed issues:**
598
+
599
+ - Don't work with perform\_in [\#114](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/114)
600
+ - 3.0.15 apparently breaks inline testing [\#113](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/113)
601
+ - sidekiq\_unique record in Redis is not cleaned when foreman process is killed [\#112](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/112)
602
+ - Can't ensure unique job simultaneously. [\#111](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/111)
603
+ - Job considered as duplicate after completion only in production [\#110](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/110)
604
+ - Gem requires Redis 2.6+? [\#109](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/109)
605
+ - unable to re-schedule job at specific time [\#108](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/108)
606
+ - Documentation Not Clear [\#78](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/78)
607
+ - Runtime uniqueness when using :before\_yield as unlock order [\#72](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/72)
608
+ - Using with sidekiq delayed extensions [\#45](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/45)
609
+
610
+ **Merged pull requests:**
611
+
612
+ - Clean up version 4 upgrade instructions [\#116](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/116) ([albertyw](https://github.com/albertyw))
613
+
614
+ ## [v4.0.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.0) (2015-10-05)
615
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.11...v4.0.0)
616
+
617
+ **Implemented enhancements:**
618
+
619
+ - Duplicated Jobs With Nested Sidekiq Workers [\#10](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/10)
620
+
621
+ **Closed issues:**
622
+
623
+ - 3.0.14 Error: ERR wrong number of arguments for 'set' command \(Redis::CommandError\) [\#104](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/104)
624
+ - Testing [\#103](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/103)
625
+ - Active Job [\#102](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/102)
626
+ - Why is SidekiqUnique behaviour applied to regular Workers? [\#100](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/100)
627
+ - Confusing behavior when trying to `\[1,2,3\].each { |n| SomeJob.perform\_in\(n.seconds.from\_now, n\) }` never running, logging as duplicate value [\#98](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/98)
628
+ - Scheduled jobs are not unlocked when deleted [\#97](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/97)
629
+ - Testing functions should be moved out of production code [\#95](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/95)
630
+ - Jobs can unlock mutexes they don't own [\#94](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/94)
631
+ - Jobs scheduled in the future are never run [\#93](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/93)
632
+ - perform\_at and perform\_async do not unique if perform\_at is in the future. [\#91](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/91)
633
+ - Latest release is breaking [\#90](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/90)
634
+ - Optimize Redis usage [\#89](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/89)
635
+ - Unique jobs sets Sidekiq testing to inline! mode [\#88](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/88)
636
+ - Test suite unclear on what happens when duplicate job is attempted [\#84](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/84)
637
+ - Change log level to info rather than warn [\#80](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/80)
638
+ - Jobs are unlocked if they fail and are retried [\#77](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/77)
639
+ - Usage of sidekiq-unique-jobs with activejob [\#76](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/76)
640
+ - If a job is deleted from the enqueued list, it's still unique and new jobs can't be added. [\#74](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/74)
641
+ - Incorrect README re: uniqueness time? [\#73](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/73)
642
+ - Sidekiq::Testing inline detection assumes you're always using inline testing [\#71](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/71)
643
+ - unique\_args\_enabled has been deprecated, nothing in readme [\#70](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/70)
644
+ - The second job does not run, even if it has different arguments [\#69](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/69)
645
+ - Jobs not being executed anymore?? [\#65](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/65)
646
+ - mock\_redis and the mess [\#62](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/62)
647
+ - What is the exact behavior? [\#47](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/47)
648
+ - Throttling jobs [\#39](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/39)
649
+ - undefined method `get\_sidekiq\_options' for "MyScheduledWorker":String [\#27](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/27)
650
+ - Crash handling [\#14](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/14)
651
+ - Missing info from README [\#6](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/6)
652
+
653
+ **Merged pull requests:**
654
+
655
+ - Allow job with jid matching unique lock to pass unique check [\#105](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/105) ([deltaroe](https://github.com/deltaroe))
656
+ - Prevent Jobs from deleting mutexes they don't own [\#96](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/96) ([pik](https://github.com/pik))
657
+ - Add after unlock hook [\#92](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/92) ([HParker](https://github.com/HParker))
658
+ - Do not unlock on sidekiq shutdown [\#87](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/87) ([deltaroe](https://github.com/deltaroe))
659
+ - Remove no-op code, protect global space from test code [\#86](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/86) ([stevenjonescgm](https://github.com/stevenjonescgm))
660
+ - Remove unique lock when executing and clearing jobs in sidekiq fake mode [\#83](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/83) ([crberube](https://github.com/crberube))
661
+ - Fix tests. Tests with latest sidekiq versions and ruby versions [\#82](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/82) ([simonoff](https://github.com/simonoff))
662
+ - Duplicate Payload logging configuration [\#81](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/81) ([jprincipe](https://github.com/jprincipe))
663
+ - output log if not unique [\#79](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/79) ([sonots](https://github.com/sonots))
664
+ - Checking Sidekiq::Testing.inline? on testing strategy and connector [\#75](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/75) ([Draiken](https://github.com/Draiken))
665
+
666
+ ## [v3.0.11](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.11) (2014-12-15)
667
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.10...v3.0.11)
668
+
669
+ **Closed issues:**
670
+
671
+ - ConnectionPool used incorrectly - causes deadlocks [\#66](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/66)
672
+ - undefined `configuration` when using .configure [\#64](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/64)
673
+
674
+ **Merged pull requests:**
675
+
676
+ - Use ConnectionPool blocks to ensure exclusive connection. Closes \#66. [\#67](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/67) ([adstage-david](https://github.com/adstage-david))
677
+
678
+ ## [v3.0.10](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.10) (2014-11-19)
679
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.9...v3.0.10)
680
+
681
+ **Closed issues:**
682
+
683
+ - LoadError: cannot load such file -- mock\_redis [\#60](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/60)
684
+ - The deprecation message is unclear and unnecessary [\#59](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/59)
685
+
686
+ **Merged pull requests:**
687
+
688
+ - Added method name to depreciation warning message [\#61](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/61) ([jamesbowles](https://github.com/jamesbowles))
689
+
690
+ ## [v3.0.9](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.9) (2014-11-05)
691
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.3...v3.0.9)
692
+
693
+ **Closed issues:**
694
+
695
+ - sidekiq-unique-jobs prevents not unique jobs creation event with sidekiq inline test mode [\#58](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/58)
696
+ - mock redis dependency [\#55](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/55)
697
+ - Unique key inconsistency between server and client [\#48](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/48)
698
+ - Example Test using Sidekiq::Testing.inline [\#44](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/44)
699
+ - Will a second job lose if the job is already queued, or is already scheduled? [\#43](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/43)
700
+ - Can you update the change log? [\#42](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/42)
701
+
702
+ **Merged pull requests:**
703
+
704
+ - Refactoring connectors to use them in client and server [\#56](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/56) ([salrepe](https://github.com/salrepe))
705
+ - Fix dependency error in inline testing connector [\#54](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/54) ([salrepe](https://github.com/salrepe))
706
+ - Add extension to Sidekiq API that is uniqueness-aware [\#52](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/52) ([rickenharp](https://github.com/rickenharp))
707
+
708
+ ## [v3.0.3](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.3) (2014-11-03)
709
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.2...v3.0.3)
710
+
711
+ **Closed issues:**
712
+
713
+ - is mock\_redis really a runtime dependency? [\#46](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/46)
714
+
715
+ **Merged pull requests:**
716
+
717
+ - Unlock testing inline jobs like normal ones [\#53](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/53) ([salrepe](https://github.com/salrepe))
718
+ - Declare mock\_redis as development dependency instead of runtime one [\#51](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/51) ([phuongnd08](https://github.com/phuongnd08))
719
+
720
+ ## [v3.0.2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.2) (2014-06-08)
721
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.1...v3.0.2)
722
+
723
+ **Closed issues:**
724
+
725
+ - Add unique job key to the message json [\#40](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/40)
726
+
727
+ **Merged pull requests:**
728
+
729
+ - Add the unique hash to the message for use by the workers. [\#41](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/41) ([sullimander](https://github.com/sullimander))
730
+
731
+ ## [v3.0.1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.1) (2014-06-08)
732
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v2.7.0...v3.0.1)
733
+
734
+ **Closed issues:**
735
+
736
+ - Support for sidekiq 3? [\#34](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/34)
737
+ - Short jobs are not unique for the given time window [\#33](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/33)
738
+ - Not all sidekiq:sidekiq\_unique keys are removed from Redis [\#31](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/31)
739
+ - What does uniqueness mean in case of this gem? [\#30](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/30)
740
+ - Server middleware removes payload hash key before expiration [\#26](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/26)
741
+ - Lock remains when running with Sidekiq::Testing.inline! [\#23](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/23)
742
+ - What is the use case for the uniqueness window? [\#22](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/22)
743
+ - clarification on unique\_args [\#20](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/20)
744
+ - payload\_hash staying around [\#13](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/13)
745
+
746
+ **Merged pull requests:**
747
+
748
+ - Fix repo URLs for badges [\#38](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/38) ([felixbuenemann](https://github.com/felixbuenemann))
749
+ - Clarify README about unique expiration [\#36](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/36) ([spacemunkay](https://github.com/spacemunkay))
750
+ - Add option to make jobs unique on all queues [\#32](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/32) ([robinmessage](https://github.com/robinmessage))
751
+ - Fix homepage in gemspec [\#29](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/29) ([tmaier](https://github.com/tmaier))
752
+
753
+ ## [v2.7.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v2.7.0) (2013-11-24)
754
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v2.3.2...v2.7.0)
755
+
756
+ **Closed issues:**
757
+
758
+ - Sidekiq tests failed when sidekiq-unique-jobs is used [\#24](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/24)
759
+ - Redis not mocked in testing [\#18](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/18)
760
+ - Scheduled Unique Jobs Not Being Enqueued [\#15](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/15)
761
+ - Retries duplicates unique jobs [\#5](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/5)
762
+ - Middleware not added to chain? [\#2](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/2)
763
+
764
+ **Merged pull requests:**
765
+
766
+ - Make unlock/yield order configurable. [\#21](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/21) ([endofunky](https://github.com/endofunky))
767
+ - Rely on Sidekiq's String\#constantize extension instead of rolling our own [\#19](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/19) ([disbelief](https://github.com/disbelief))
768
+ - Attempt to constantize String `worker\_class` arguments passed to client middleware [\#17](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/17) ([disbelief](https://github.com/disbelief))
769
+ - Compatibility with Sidekiq 2.12.1 Scheduled Jobs [\#16](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/16) ([lsimoneau](https://github.com/lsimoneau))
770
+ - Allow worker to specify which arguments to include in uniquing hash [\#12](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/12) ([sax](https://github.com/sax))
771
+ - Add support for unique when using Sidekiq's delay function [\#11](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/11) ([eduardosasso](https://github.com/eduardosasso))
772
+ - Adding the unique prefix option [\#8](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/8) ([KensoDev](https://github.com/KensoDev))
773
+ - Remove unnecessary log messages [\#7](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/7) ([marclennox](https://github.com/marclennox))
774
+
775
+ ## [v2.3.2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v2.3.2) (2012-09-27)
776
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v2.2.1...v2.3.2)
777
+
778
+ **Closed issues:**
779
+
780
+ - Scheduled workers [\#1](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/1)
781
+
782
+ **Merged pull requests:**
783
+
784
+ - Fix multiple bugs, cleaned up dependencies, and added a feature [\#4](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/4) ([kemper-blinq](https://github.com/kemper-blinq))
785
+ - Dependency on sidekiq 2.2.0 and up [\#3](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/3) ([philostler](https://github.com/philostler))
786
+
787
+ ## [v2.2.1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v2.2.1) (2012-08-19)
788
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v2.2.0...v2.2.1)
789
+
790
+ ## [v2.2.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v2.2.0) (2012-08-19)
791
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v2.1.0...v2.2.0)
792
+
793
+ ## [v2.1.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v2.1.0) (2012-08-07)
794
+
795
+
796
+ \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*