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