Module: Jobly::JobExtensions::Solo
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #solo? ⇒ Boolean
- #solo_full_key ⇒ Object
- #solo_key ⇒ Object
- #solo_key! ⇒ Object
- #solo_lock(expire = 1.hour) ⇒ Object
- #solo_locked? ⇒ Boolean
- #solo_unlock ⇒ Object
Methods included from Actions
Class Method Details
.included(base) ⇒ Object
8 9 10 |
# File 'lib/jobly/job_extensions/solo.rb', line 8 def self.included(base) base.extend ClassMethods end |
Instance Method Details
#solo? ⇒ Boolean
27 28 29 |
# File 'lib/jobly/job_extensions/solo.rb', line 27 def solo? self.class.solo? end |
#solo_full_key ⇒ Object
39 40 41 |
# File 'lib/jobly/job_extensions/solo.rb', line 39 def solo_full_key "jobly:solo:#{solo_key}" end |
#solo_key ⇒ Object
31 32 33 |
# File 'lib/jobly/job_extensions/solo.rb', line 31 def solo_key @solo_key ||= (self.class.solo_key || solo_key!) end |
#solo_key! ⇒ Object
35 36 37 |
# File 'lib/jobly/job_extensions/solo.rb', line 35 def solo_key! Digest::MD5.hexdigest "#{self.class.name}:#{params}" end |
#solo_lock(expire = 1.hour) ⇒ Object
49 50 51 52 53 |
# File 'lib/jobly/job_extensions/solo.rb', line 49 def solo_lock(expire = 1.hour) Sidekiq.redis do |redis| redis.setex(solo_full_key, expire, '1') end end |
#solo_locked? ⇒ Boolean
43 44 45 46 47 |
# File 'lib/jobly/job_extensions/solo.rb', line 43 def solo_locked? Sidekiq.redis do |redis| redis.keys(solo_full_key).count >= 1 end end |
#solo_unlock ⇒ Object
55 56 57 58 59 |
# File 'lib/jobly/job_extensions/solo.rb', line 55 def solo_unlock Sidekiq.redis do |redis| redis.del solo_full_key end end |