resque-better_unique 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e474de20786fbba4361851c129a2644738ca9bda
4
- data.tar.gz: b887e51072a2ce8756536f1b7aed2fef67cbfc02
3
+ metadata.gz: 926c1f77a991608f8cb0d9ccd69fb90fa467962b
4
+ data.tar.gz: b485017b4d607b88aad87861278df221f77a63ca
5
5
  SHA512:
6
- metadata.gz: d04eeee9e17cf85359eb1b8865c635ae1f92b050a92d589161cb1f9daaef75d86cb3c7a6562ae9ec2ae7aa261d33dc0ea797899569cccf9fe09083d8236cb77e
7
- data.tar.gz: 0cf12c119b33e5dff88e3036a5ba622e3cef1b446bda3ef57f3c57b64daa588ff00ade9f7e28ed8fcf18ebe7b9678ebc74148bfcc4280116d343f66693709cbd
6
+ metadata.gz: 67b86180d9dda8dcb39bb5d3b86f6ad9050da7bc1d8885132bec37489103c213fe7978f5384ee2551e398d94ac271a85c856f48f5e50ebfaf062469b538f7164
7
+ data.tar.gz: 2d006f9a4ab41ba6910e003eef4d5a20398a62f0ba07ff7394e20734c2ba139bb8eff4be890d1d6f9464efa96bc1f7255bbf8ef6dd0bb9450eecd49339d23fec
data/README.md CHANGED
@@ -25,11 +25,11 @@ Include this plugin into your job class and call the `unique` method
25
25
  ```ruby
26
26
  class MyWorker
27
27
  include Resque::Plugins::BetterUnique
28
- unique :while_executing, timeout: 5.minutes
28
+ unique_job :while_executing, timeout: 5.minutes
29
29
  end
30
30
  ```
31
31
 
32
- The unique method takes up to two arguments:
32
+ The unique_job method takes up to two arguments:
33
33
  - mode: (default=:until_executed)
34
34
  * while_executing: only one distinct job can be processed at a time
35
35
  * until_executing: only one job can be queued at a time
@@ -39,6 +39,61 @@ The unique method takes up to two arguments:
39
39
  * timeout - integer or object that responds to to_i - How long should a lock live
40
40
  * unique_args - a proc or a symbol which takes the arguments of perform and returns the arguments that should be used to determine uniqueness
41
41
 
42
+ ### Examples:
43
+ Specify method to define unique args:
44
+ ```ruby
45
+ class MyWorker
46
+ include Resque::Plugins::BetterUnique
47
+ unique_job :while_executing, timeout: 5.minutes, unique_args: unique_job_arguments
48
+
49
+ def self.unique_job_arguments(*args)
50
+ [args[0], args[3]]
51
+ end
52
+ end
53
+ ```
54
+
55
+ Specify Proc to define unique args:
56
+ ```ruby
57
+ class MyWorker
58
+ include Resque::Plugins::BetterUnique
59
+ unique_job :while_executing, timeout: 5.minutes, unique_args: ->(*args) { [args[0], args[3]] }
60
+ end
61
+ ```
62
+
63
+ Override lock_key method:
64
+ ```ruby
65
+ class MyWorker
66
+ include Resque::Plugins::BetterUnique
67
+ unique_job :while_executing, timeout: 5.minutes
68
+
69
+ def self.lock_key(*args)
70
+ "lock:my_lock:#{args.to_s}"
71
+ end
72
+ end
73
+ ```
74
+
75
+ Clear lock for a single job:
76
+ ```ruby
77
+ class MyWorker
78
+ include Resque::Plugins::BetterUnique
79
+ unique_job :until_executed, timeout: 5.minutes
80
+ end
81
+
82
+ Resque.enqueue(MyWorker, {some: :args})
83
+ MyWorker.release_lock({some: :args})
84
+ ```
85
+
86
+ Clear all locks for a worker class:
87
+ ```ruby
88
+ class MyWorker
89
+ include Resque::Plugins::BetterUnique
90
+ unique_job :while_executing, timeout: 5.minutes
91
+ end
92
+ 100.times { Resque.enqueue(MyWorker, rand(1000))}
93
+ MyWorker.release_all_locks
94
+ ```
95
+ NOTE: `release_all_locks` requires redis-server >= 2.8. Only removes locks for the class on which it was called.
96
+
42
97
  ## Development
43
98
 
44
99
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -41,7 +41,7 @@ module Resque
41
41
  end
42
42
 
43
43
  def unique_job_mode
44
- unique_job_options[:mode].to_sym || :none
44
+ unique_job_options[:mode].try(:to_sym) || :none
45
45
  end
46
46
 
47
47
  def unique_job(mode=:until_executed, options={})
@@ -1,7 +1,7 @@
1
1
  module Resque
2
2
  module Plugins
3
3
  module BetterUnique
4
- VERSION = '1.0.1'
4
+ VERSION = '1.0.2'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-better_unique
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Will Bryant
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-18 00:00:00.000000000 Z
11
+ date: 2018-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
133
  version: '0'
134
134
  requirements: []
135
135
  rubyforge_project:
136
- rubygems_version: 2.6.8
136
+ rubygems_version: 2.6.14
137
137
  signing_key:
138
138
  specification_version: 4
139
139
  summary: A resque plugin for better control over unique jobs