class Cloudtasker::UniqueJob::Lock::BaseLock

Base behaviour for locks

Attributes

job[R]

Public Class Methods

new(job) click to toggle source

Build a new instance of the class.

@param [Cloudtasker::UniqueJob::Job] job The UniqueJob job

# File lib/cloudtasker/unique_job/lock/base_lock.rb, line 15
def initialize(job)
  @job = job
end

Public Instance Methods

conflict_instance() click to toggle source

Return the conflict strategy to use on conflict

@return [Cloudtasker::UniqueJob::ConflictStrategy::BaseStrategy] The instantiated strategy.

# File lib/cloudtasker/unique_job/lock/base_lock.rb, line 42
def conflict_instance
  @conflict_instance ||=
    begin
      # Infer lock class and get instance
      strategy_name = options[:on_conflict]
      strategy_klass = ConflictStrategy.const_get(strategy_name.to_s.split('_').collect(&:capitalize).join)
      strategy_klass.new(job)
    rescue NameError
      default_conflict_strategy.new(job)
    end
end
default_conflict_strategy() click to toggle source

Return the strategy to use by default. Can be overriden in each lock.

@return [Cloudtasker::UniqueJob::ConflictStrategy::BaseStrategy] The strategy to use by default.

# File lib/cloudtasker/unique_job/lock/base_lock.rb, line 33
def default_conflict_strategy
  ConflictStrategy::Reject
end
execute() { || ... } click to toggle source

Lock logic invoked when a job is executed (server middleware).

# File lib/cloudtasker/unique_job/lock/base_lock.rb, line 64
def execute
  yield
end
options() click to toggle source

Return the worker configuration options.

@return [Hash] The worker configuration options.

# File lib/cloudtasker/unique_job/lock/base_lock.rb, line 24
def options
  job.options
end
schedule() { || ... } click to toggle source

Lock logic invoked when a job is scheduled (client middleware).

# File lib/cloudtasker/unique_job/lock/base_lock.rb, line 57
def schedule
  yield
end