module SingleFile

Constants

VERSION

Public Instance Methods

create_lockfile(filepath) click to toggle source
# File lib/single_file.rb, line 16
def create_lockfile(filepath)
  File.open(filepath, File::RDWR|File::CREAT, 0644)
end
obtain_file_lock(lockfile) click to toggle source
# File lib/single_file.rb, line 20
def obtain_file_lock(lockfile)
  lockfile.flock(File::LOCK_EX|File::LOCK_NB)
end
with_file_lock(filepath) { || ... } click to toggle source

Allows you to use a system level file lock to run a given block of code only when the lock can be obtained

# File lib/single_file.rb, line 8
def with_file_lock(filepath)
  lockfile = create_lockfile(filepath)
  return unless obtain_file_lock(lockfile)
  yield
ensure
  lockfile.close
end