resque-unique_by_arity 1.0.9 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +35 -0
- data/lib/resque/unique_by_arity.rb +3 -3
- data/lib/resque/unique_by_arity/configuration.rb +5 -3
- data/lib/resque/unique_by_arity/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f633f3ff4e8bb0f3e870227767fa1354624387ae
|
4
|
+
data.tar.gz: 997bbaa637fd611baa63d107759df5c64c8e9dda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7697b2036bc838b6be804f30cf1c0d5e40b9566e9d4f21b8d6722449777bf0937724b8fcb5806b44296a3e7f36d22f08b8aa41729b2aab02beaad6b75b86d703
|
7
|
+
data.tar.gz: cc13bf8f10a09ca98ee1fc75d6f14a8519872d1d3df1a10fe6dacc399eabf9df20dd109f7dd84fcde7648e81f7a4c8f36a3b4eb8ba810088b0dc5362f01a6589
|
data/README.md
CHANGED
@@ -5,10 +5,15 @@ NOTE:
|
|
5
5
|
Requires `resque_solo` gem, and `resque-unique_at_runtime` gem; the latter is a fork of `resque-lonely_job`.
|
6
6
|
Why? `resque-lonely_job` and `resque_solo` can't be used together, because their `redis_key` methods conflict.
|
7
7
|
|
8
|
+
Also - you must configure this gem *after* you define the perform class method in your job or the arity validation will not work properly.
|
9
|
+
|
8
10
|
Example:
|
9
11
|
|
10
12
|
```ruby
|
11
13
|
class MyJob
|
14
|
+
def self.perform(arg)
|
15
|
+
# do stuff
|
16
|
+
end
|
12
17
|
include UniqueByArity::Cop.new(
|
13
18
|
arity_for_uniqueness: 1,
|
14
19
|
lock_after_execution_period: 60,
|
@@ -43,6 +48,9 @@ Some jobs have parameters that you do not want to consider for determination of
|
|
43
48
|
|
44
49
|
```ruby
|
45
50
|
class MyJob
|
51
|
+
def self.perform(arg1, arg2, arg3)
|
52
|
+
# do stuff
|
53
|
+
end
|
46
54
|
include UniqueByArity::Cop.new(
|
47
55
|
arity_for_uniqueness: 3,
|
48
56
|
unique_at_runtime: true
|
@@ -59,6 +67,9 @@ Want this gem to tell you when it is misconfigured? It can.
|
|
59
67
|
|
60
68
|
```ruby
|
61
69
|
class MyJob
|
70
|
+
def self.perform(arg1, arg2, arg3)
|
71
|
+
# do stuff
|
72
|
+
end
|
62
73
|
include UniqueByArity::Cop.new(
|
63
74
|
arity_for_uniqueness: 3,
|
64
75
|
arity_validation: :warning, # or :skip, :error, or an error class to be raised, e.g. RuntimeError
|
@@ -81,6 +92,9 @@ Give the job a break after it finishes running, and don't allow another of the s
|
|
81
92
|
|
82
93
|
```ruby
|
83
94
|
class MyJob
|
95
|
+
def self.perform(arg1)
|
96
|
+
# do stuff
|
97
|
+
end
|
84
98
|
include UniqueByArity::Cop.new(
|
85
99
|
arity_for_uniqueness: 1,
|
86
100
|
lock_after_execution_period: 60,
|
@@ -95,6 +109,9 @@ If runtime lock keys get stale, they will expire on their own after some period.
|
|
95
109
|
|
96
110
|
```ruby
|
97
111
|
class MyJob
|
112
|
+
def self.perform(arg1)
|
113
|
+
# do stuff
|
114
|
+
end
|
98
115
|
include UniqueByArity::Cop.new(
|
99
116
|
arity_for_uniqueness: 1,
|
100
117
|
runtime_lock_timeout: 60 * 60 * 24 * 5, # 5 days
|
@@ -109,6 +126,9 @@ Prevent your app from running a job that is already running.
|
|
109
126
|
|
110
127
|
```ruby
|
111
128
|
class MyJob
|
129
|
+
def self.perform(arg1)
|
130
|
+
# do stuff
|
131
|
+
end
|
112
132
|
include UniqueByArity::Cop.new(
|
113
133
|
arity_for_uniqueness: 1,
|
114
134
|
unique_at_runtime: true
|
@@ -124,6 +144,9 @@ Prevent your app from queueing a job that is already queued in the same queue.
|
|
124
144
|
|
125
145
|
```ruby
|
126
146
|
class MyJob
|
147
|
+
def self.perform(arg1)
|
148
|
+
# do stuff
|
149
|
+
end
|
127
150
|
include UniqueByArity::Cop.new(
|
128
151
|
arity_for_uniqueness: 1,
|
129
152
|
unique_in_queue: true
|
@@ -137,6 +160,9 @@ Prevent your app from queueing a job that is already queued in *any* queue.
|
|
137
160
|
|
138
161
|
```ruby
|
139
162
|
class MyJob
|
163
|
+
def self.perform(arg1)
|
164
|
+
# do stuff
|
165
|
+
end
|
140
166
|
include UniqueByArity::Cop.new(
|
141
167
|
arity_for_uniqueness: 1,
|
142
168
|
unique_across_queues: true
|
@@ -153,6 +179,9 @@ prevent your app from queueing a job that is already queued in the same queue.
|
|
153
179
|
|
154
180
|
```ruby
|
155
181
|
class MyJob
|
182
|
+
def self.perform(arg1)
|
183
|
+
# do stuff
|
184
|
+
end
|
156
185
|
include UniqueByArity::Cop.new(
|
157
186
|
arity_for_uniqueness: 1,
|
158
187
|
unique_at_runtime: true,
|
@@ -169,6 +198,9 @@ prevent your app from queueing a job that is already queued in *any* queue.
|
|
169
198
|
|
170
199
|
```ruby
|
171
200
|
class MyJob
|
201
|
+
def self.perform(arg1)
|
202
|
+
# do stuff
|
203
|
+
end
|
172
204
|
include UniqueByArity::Cop.new(
|
173
205
|
arity_for_uniqueness: 1,
|
174
206
|
unique_at_runtime: true,
|
@@ -188,6 +220,9 @@ Redefine methods to customize all the things. Warning: This might be crazy-maki
|
|
188
220
|
|
189
221
|
```ruby
|
190
222
|
class MyJob
|
223
|
+
def self.perform(arg1)
|
224
|
+
# do stuff
|
225
|
+
end
|
191
226
|
include UniqueByArity::Cop.new(
|
192
227
|
#...
|
193
228
|
)
|
@@ -16,7 +16,7 @@ require "resque/unique_by_arity/validation"
|
|
16
16
|
# class MyJob
|
17
17
|
# include UniqueByArity::Cop.new(
|
18
18
|
# arity_for_uniqueness: 1,
|
19
|
-
#
|
19
|
+
# arity_validation: :warning, # or nil, false, or :error
|
20
20
|
# unique_at_runtime: true,
|
21
21
|
# unique_in_queue: true
|
22
22
|
# )
|
@@ -60,10 +60,10 @@ module Resque
|
|
60
60
|
def uniqueness_arity_for_uniqueness=(arity_for_uniqueness)
|
61
61
|
@uniqueness_configuration.arity_for_uniqueness = arity_for_uniqueness
|
62
62
|
end
|
63
|
-
def
|
63
|
+
def uniqueness_arity_validation
|
64
64
|
@uniqueness_configuration.arity_validation
|
65
65
|
end
|
66
|
-
def
|
66
|
+
def uniqueness_arity_validation=(arity_validation)
|
67
67
|
@uniqueness_configuration.arity_validation = arity_validation
|
68
68
|
end
|
69
69
|
def uniqueness_lock_after_execution_period
|
@@ -2,7 +2,8 @@ require 'logger'
|
|
2
2
|
module Resque
|
3
3
|
module UniqueByArity
|
4
4
|
class Configuration
|
5
|
-
VALID_ARITY_VALIDATION_LEVELS = [ :warning, :error, nil, false ]
|
5
|
+
VALID_ARITY_VALIDATION_LEVELS = [ :warning, :error, :skip, nil, false ]
|
6
|
+
SKIPPED_ARITY_VALIDATION_LEVELS = [ :skip, nil, false ]
|
6
7
|
attr_accessor :logger
|
7
8
|
attr_accessor :log_level
|
8
9
|
attr_accessor :arity_for_uniqueness
|
@@ -17,7 +18,7 @@ module Resque
|
|
17
18
|
@log_level = options.key?(:log_level) ? options[:log_level] : :debug
|
18
19
|
@arity_for_uniqueness = options.key?(:arity_for_uniqueness) ? options[:arity_for_uniqueness] : 1
|
19
20
|
@arity_validation = options.key?(:arity_validation) ? options[:arity_validation] : :warning
|
20
|
-
raise ArgumentError, "UniqueByArity::Cop.new requires arity_validation values of
|
21
|
+
raise ArgumentError, "UniqueByArity::Cop.new requires arity_validation values of #{arity_validation.inspect}, or a class inheriting from Exception, but the value is #{@arity_validation} (#{@arity_validation.class})" unless VALID_ARITY_VALIDATION_LEVELS.include?(@arity_validation) || !@arity_validation.respond_to?(:ancestors) || @arity_validation.ancestors.include?(Exception)
|
21
22
|
@lock_after_execution_period = options.key?(:lock_after_execution_period) ? options[:lock_after_execution_period] : nil
|
22
23
|
@runtime_lock_timeout = options.key?(:runtime_lock_timeout) ? options[:runtime_lock_timeout] : nil
|
23
24
|
@unique_at_runtime = options.key?(:unique_at_runtime) ? options[:unique_at_runtime] : false
|
@@ -48,6 +49,7 @@ module Resque
|
|
48
49
|
logger: logger,
|
49
50
|
log_level: log_level,
|
50
51
|
arity_for_uniqueness: arity_for_uniqueness,
|
52
|
+
arity_validation: arity_validation,
|
51
53
|
lock_after_execution_period: lock_after_execution_period,
|
52
54
|
runtime_lock_timeout: runtime_lock_timeout,
|
53
55
|
unique_at_runtime: unique_at_runtime,
|
@@ -57,7 +59,7 @@ module Resque
|
|
57
59
|
end
|
58
60
|
|
59
61
|
def skip_arity_validation?
|
60
|
-
arity_validation
|
62
|
+
SKIPPED_ARITY_VALIDATION_LEVELS.include?(arity_validation)
|
61
63
|
end
|
62
64
|
|
63
65
|
def validate_arity(klass_string, perform_method)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-unique_by_arity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: resque-unique_at_runtime
|