class JustOneLock::BlockingLocker

Constants

DEFAULT_TIMEOUT

Attributes

timeout[RW]

Public Class Methods

new(timeout: DEFAULT_TIMEOUT) click to toggle source
# File lib/just_one_lock/blocking_locker.rb, line 8
def initialize(timeout: DEFAULT_TIMEOUT)
  @timeout = timeout
end

Public Instance Methods

lock(lock_path, &block) click to toggle source
# File lib/just_one_lock/blocking_locker.rb, line 12
def lock(lock_path, &block)
  result = nil

  File.open(lock_path, File::RDWR|File::CREAT, 0644) do |f|
    Timeout::timeout(@timeout, JustOneLock::AlreadyLocked) { f.flock(File::LOCK_EX) }

    result = run(f, lock_path, &block)
  end

  result
end