Module: SidekiqUniqueJobs::OptionsWithFallback
- Included in:
- Client::Middleware, Server::Middleware
- Defined in:
- lib/sidekiq_unique_jobs/options_with_fallback.rb
Class Method Summary collapse
Instance Method Summary collapse
- #lock ⇒ Object
- #lock_class ⇒ Object
- #lock_type ⇒ Object
- #lock_type_from(hash, key = UNIQUE_KEY) ⇒ Object
- #log_duplicate_payload? ⇒ Boolean
- #options ⇒ Object
- #unique_disabled? ⇒ Boolean
- #unique_enabled? ⇒ Boolean
- #unique_lock ⇒ Object
Class Method Details
.included(base) ⇒ Object
3 4 5 6 |
# File 'lib/sidekiq_unique_jobs/options_with_fallback.rb', line 3 def self.included(base) base.class_attribute :lock_cache unless base.respond_to?(:lock_cache) base.lock_cache ||= {} end |
Instance Method Details
#lock ⇒ Object
20 21 22 |
# File 'lib/sidekiq_unique_jobs/options_with_fallback.rb', line 20 def lock @lock = lock_class.new(item) end |
#lock_class ⇒ Object
24 25 26 |
# File 'lib/sidekiq_unique_jobs/options_with_fallback.rb', line 24 def lock_class lock_cache[unique_lock.to_sym] ||= "SidekiqUniqueJobs::Lock::#{unique_lock.to_s.classify}".constantize end |
#lock_type ⇒ Object
39 40 41 |
# File 'lib/sidekiq_unique_jobs/options_with_fallback.rb', line 39 def lock_type lock_type_from() || lock_type_from(item) end |
#lock_type_from(hash, key = UNIQUE_KEY) ⇒ Object
43 44 45 46 |
# File 'lib/sidekiq_unique_jobs/options_with_fallback.rb', line 43 def lock_type_from(hash, key = UNIQUE_KEY) return nil if hash[key].is_a?(TrueClass) hash[key] end |
#log_duplicate_payload? ⇒ Boolean
16 17 18 |
# File 'lib/sidekiq_unique_jobs/options_with_fallback.rb', line 16 def log_duplicate_payload? [LOG_DUPLICATE_KEY] || item[LOG_DUPLICATE_KEY] end |
#options ⇒ Object
48 49 50 51 52 53 |
# File 'lib/sidekiq_unique_jobs/options_with_fallback.rb', line 48 def @options ||= worker_class. if worker_class.respond_to?(:get_sidekiq_options) @options ||= Sidekiq. @options ||= {} @options &&= @options.stringify_keys end |
#unique_disabled? ⇒ Boolean
12 13 14 |
# File 'lib/sidekiq_unique_jobs/options_with_fallback.rb', line 12 def unique_disabled? !unique_enabled? end |
#unique_enabled? ⇒ Boolean
8 9 10 |
# File 'lib/sidekiq_unique_jobs/options_with_fallback.rb', line 8 def unique_enabled? [UNIQUE_KEY] || item[UNIQUE_KEY] end |
#unique_lock ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/sidekiq_unique_jobs/options_with_fallback.rb', line 28 def unique_lock @unique_lock ||= if .key?(UNIQUE_KEY) && [UNIQUE_KEY].to_s == 'true' warn('unique: true is no longer valid. Please set it to the type of lock required like: ' \ '`unique: :until_executed`') [UNIQUE_LOCK_KEY] || SidekiqUniqueJobs.default_lock else lock_type || SidekiqUniqueJobs.default_lock end end |