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
- #default_unlock_order ⇒ Object
- #set_unlock_order(klass) ⇒ Object
- #unlock_order_configured?(klass) ⇒ Boolean
Instance Attribute Details
#redis_pool ⇒ Object (readonly)
Returns the value of attribute redis_pool.
7 8 9 |
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 7 def redis_pool @redis_pool end |
#unlock_order ⇒ Object (readonly)
Returns the value of attribute unlock_order.
7 8 9 |
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 7 def unlock_order @unlock_order end |
Instance Method Details
#after_yield? ⇒ Boolean
44 45 46 |
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 44 def after_yield? unlock_order == :after_yield end |
#before_yield? ⇒ Boolean
40 41 42 |
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 40 def before_yield? unlock_order == :before_yield end |
#call(worker, item, queue, redis_pool = nil) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 9 def call(worker, item, queue, redis_pool = nil) @redis_pool = redis_pool set_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 |
#default_unlock_order ⇒ Object
36 37 38 |
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 36 def default_unlock_order SidekiqUniqueJobs::Config.default_unlock_order end |
#set_unlock_order(klass) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 23 def set_unlock_order(klass) @unlock_order = if unlock_order_configured?(klass) klass.['unique_unlock_order'] else default_unlock_order end end |
#unlock_order_configured?(klass) ⇒ Boolean
31 32 33 34 |
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 31 def unlock_order_configured?(klass) klass.respond_to?(:get_sidekiq_options) && !klass.['unique_unlock_order'].nil? end |