placate 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -2
- data/lib/placate/configuration.rb +1 -1
- data/lib/placate/unique_job.rb +8 -2
- data/lib/placate/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d3b1bfbb5182eadb35385c0d3e8f0578f675a26c9ae25e368730294215defba
|
4
|
+
data.tar.gz: cf536fb1870080c6177c24b3482d3bd7c95a63594f6c2f4d6ea4d754a59624c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 237bd256ed3127604b1bb2a511d3be0390f2eb4ed49fe97ac2d094724bd9a492497e0a0d328f46844655639d4d43491fb6a774b6dfa1127012353f0e3fdc5a25
|
7
|
+
data.tar.gz: a092e2c6e0c6f4d6919d8a88ea1e4a2a27ab4f93f3108c3bdaaba5d7b766df8779f9b85479574ce136c3c2b822aa4bf1867e79c0244d2300d3dfb4db43dbaad3
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Placate
|
2
2
|
|
3
|
-
Placate is a
|
3
|
+
Placate is a lightweight Redis-based solution designed to prevent duplicate jobs in Rails ActiveJob.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -25,7 +25,10 @@ First, configure Placate with your Redis connection:
|
|
25
25
|
# config/initializers/placate.rb
|
26
26
|
Placate.configure do |config|
|
27
27
|
config.redis = Redis.new
|
28
|
-
|
28
|
+
|
29
|
+
# time-to-live in seconds
|
30
|
+
# default is nil, which only allows 1 job to be queued at a time
|
31
|
+
# config.default_lock_ttl = 30
|
29
32
|
end
|
30
33
|
```
|
31
34
|
|
data/lib/placate/unique_job.rb
CHANGED
@@ -28,11 +28,17 @@ module Placate
|
|
28
28
|
existing_lock = Placate.redis.get(lock_key)
|
29
29
|
|
30
30
|
if existing_lock
|
31
|
-
|
32
|
-
|
31
|
+
# Only check TTL if it's set
|
32
|
+
if job.class.unique_lock_ttl
|
33
|
+
lock_time = existing_lock.to_i
|
34
|
+
throw :abort unless current_time - lock_time >= job.class.unique_lock_ttl
|
35
|
+
else
|
36
|
+
throw :abort # No TTL, just prevent duplicates
|
37
|
+
end
|
33
38
|
end
|
34
39
|
|
35
40
|
Placate.redis.set(lock_key, current_time)
|
41
|
+
job.instance_variable_set(:@unique_lock_key, lock_key)
|
36
42
|
end
|
37
43
|
|
38
44
|
after_perform do |job|
|
data/lib/placate/version.rb
CHANGED