class SidekiqUniqueJobs::Lock::UntilExecuting

Locks jobs until {#execute} starts

@author Mikael Henriksson <mikael@mhenrixon.com>

Public Instance Methods

execute() { || ... } click to toggle source

Executes in the Sidekiq server process @yield to the worker class perform method

# File lib/sidekiq_unique_jobs/lock/until_executing.rb, line 33
def execute
  callback_safely if locksmith.unlock
  yield
end
lock() { || ... } click to toggle source

Locks a sidekiq job

@note Will call a conflict strategy if lock can't be achieved.

@return [String, nil] the locked jid when properly locked, else nil.

# File lib/sidekiq_unique_jobs/lock/until_executing.rb, line 18
def lock(&block)
  unless (token = locksmith.lock)
    reflect(:lock_failed, item)
    call_strategy(origin: :client, &block)

    return
  end

  yield if block

  token
end