class ActiveJob::Locking::Adapters::Memory

Public Class Methods

lock(key) click to toggle source
# File lib/activejob/locking/adapters/memory.rb, line 8
def self.lock(key)
  @mutex.synchronize do
    if @hash[key]
      false
    else
      @hash[key] = Time.now
    end
  end
end
locked?(key) click to toggle source
# File lib/activejob/locking/adapters/memory.rb, line 24
def self.locked?(key)
  @mutex.synchronize do
    @hash.include?(key)
  end
end
reset() click to toggle source
# File lib/activejob/locking/adapters/memory.rb, line 30
def self.reset
  @mutex.synchronize do
    @hash = Hash.new
  end
end
unlock(key) click to toggle source
# File lib/activejob/locking/adapters/memory.rb, line 18
def self.unlock(key)
  @mutex.synchronize do
    @hash.delete(key)
  end
end

Public Instance Methods

create_lock_manager() click to toggle source
# File lib/activejob/locking/adapters/memory.rb, line 36
def create_lock_manager
end
lock() click to toggle source
# File lib/activejob/locking/adapters/memory.rb, line 39
def lock
  finish = Time.now + self.options.lock_acquire_time
  sleep_time = [5, self.options.lock_acquire_time / 5].min

  begin
    lock = self.class.lock(key)
    return lock if lock
    sleep(sleep_time)
  end while Time.now < finish

  false
end
unlock() click to toggle source
# File lib/activejob/locking/adapters/memory.rb, line 52
def unlock
  self.class.unlock(self.key)
end