class JustOneLock::NonBlockingLocker

Public Instance Methods

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

  File.open(lock_path, File::RDWR|File::CREAT, 0644) do |f|
    if f.flock(File::LOCK_NB|File::LOCK_EX)
      result = run(f, lock_path, &block)
    else
      fail JustOneLock::AlreadyLocked
    end
  end

  result
end