Class: SidekiqUniqueJobs::Middleware::Server::UniqueJobs
- Inherits:
-
Object
- Object
- SidekiqUniqueJobs::Middleware::Server::UniqueJobs
- Defined in:
- lib/sidekiq_unique_jobs/middleware/server/unique_jobs.rb
Instance Attribute Summary collapse
-
#redis_pool ⇒ Object
readonly
Returns the value of attribute redis_pool.
-
#unlock_order ⇒ Object
readonly
Returns the value of attribute unlock_order.
Instance Method Summary collapse
- #after_yield? ⇒ Boolean
- #before_yield? ⇒ Boolean
- #call(worker, item, _queue, redis_pool = nil) ⇒ Object
- #decide_unlock_order(klass) ⇒ Object
- #default_unlock_order ⇒ Object
- #unlock_order_configured?(klass) ⇒ Boolean
Instance Attribute Details
#redis_pool ⇒ Object (readonly)
Returns the value of attribute redis_pool.
8 9 10 |
# File 'lib/sidekiq_unique_jobs/middleware/server/unique_jobs.rb', line 8 def redis_pool @redis_pool end |
#unlock_order ⇒ Object (readonly)
Returns the value of attribute unlock_order.
8 9 10 |
# File 'lib/sidekiq_unique_jobs/middleware/server/unique_jobs.rb', line 8 def unlock_order @unlock_order end |
Instance Method Details
#after_yield? ⇒ Boolean
45 46 47 |
# File 'lib/sidekiq_unique_jobs/middleware/server/unique_jobs.rb', line 45 def after_yield? unlock_order == :after_yield end |
#before_yield? ⇒ Boolean
41 42 43 |
# File 'lib/sidekiq_unique_jobs/middleware/server/unique_jobs.rb', line 41 def before_yield? unlock_order == :before_yield end |
#call(worker, item, _queue, redis_pool = nil) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/sidekiq_unique_jobs/middleware/server/unique_jobs.rb', line 10 def call(worker, item, _queue, redis_pool = nil) @redis_pool = redis_pool decide_unlock_order(worker.class) lock_key = payload_hash(item) unlocked = before_yield? ? unlock(lock_key).inspect : 0 yield ensure if after_yield? || !defined? unlocked || unlocked != 1 unlock(lock_key) end end |
#decide_unlock_order(klass) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/sidekiq_unique_jobs/middleware/server/unique_jobs.rb', line 24 def decide_unlock_order(klass) @unlock_order = if unlock_order_configured?(klass) klass.['unique_unlock_order'] else default_unlock_order end end |
#default_unlock_order ⇒ Object
37 38 39 |
# File 'lib/sidekiq_unique_jobs/middleware/server/unique_jobs.rb', line 37 def default_unlock_order SidekiqUniqueJobs.config.default_unlock_order end |
#unlock_order_configured?(klass) ⇒ Boolean
32 33 34 35 |
# File 'lib/sidekiq_unique_jobs/middleware/server/unique_jobs.rb', line 32 def unlock_order_configured?(klass) klass.respond_to?(:get_sidekiq_options) && !klass.['unique_unlock_order'].nil? end |