module ActiveJob::Uniqueness::ActiveJobPatch
Provides ability to make ActiveJob
job unique.
For example:
class FooJob < ActiveJob::Base
queue_as :foo unique :until_executed, lock_ttl: 3.hours def perform(params) #... end
end
Public Instance Methods
lock_key_arguments()
click to toggle source
Override in your job class if you want to customize arguments set for a digest.
# File lib/active_job/uniqueness/active_job_patch.rb, line 62 def lock_key_arguments arguments end
lock_key_generator()
click to toggle source
# File lib/active_job/uniqueness/active_job_patch.rb, line 69 def lock_key_generator ActiveJob::Uniqueness::LockKey.new job_class_name: self.class.name, arguments: lock_key_arguments end
lock_strategy()
click to toggle source
# File lib/active_job/uniqueness/active_job_patch.rb, line 57 def lock_strategy @lock_strategy ||= lock_strategy_class.new(**lock_options.merge(lock_key: lock_key, job: self)) end
unique(strategy, options = {})
click to toggle source
Enables the uniqueness strategy for the job Params:
strategy
-
the uniqueness strategy.
options
-
uniqueness strategy options. For example: lock_ttl.
# File lib/active_job/uniqueness/active_job_patch.rb, line 27 def unique(strategy, options = {}) validate_on_conflict_action!(options[:on_conflict]) validate_on_conflict_action!(options[:on_runtime_conflict]) self.lock_strategy_class = ActiveJob::Uniqueness::Strategies.lookup(strategy) self.lock_options = options end
unlock!(*arguments)
click to toggle source
Unlocks all jobs of the job class if no arguments given Unlocks particular job if job arguments given
# File lib/active_job/uniqueness/active_job_patch.rb, line 37 def unlock!(*arguments) ActiveJob::Uniqueness.unlock!(job_class_name: name, arguments: arguments) end