class File


Public Instance Methods

flock?() { |: false| ... } click to toggle source

Returns true if another process holds an exclusive lock on the file. Returns false if this is not the case.

If a block of code is passed to this method, it will be run iff this process can obtain an exclusive lock on the file. The block will be run while this lock is held, and the exclusive lock will be released when the method returns.

The exclusive lock is requested in a non-blocking mode. This method will return immediately (and the block will not be executed) if an exclusive lock cannot be obtained.

# File lib/logging/utils.rb, line 84
def flock?
  status = flock(LOCK_EX|LOCK_NB)
  case status
  when false; true
  when 0; block_given? ? yield : false
  else
    raise SystemCallError, "flock failed with status: #{status}"
  end
ensure
  flock LOCK_UN
end
flock_sh() { || ... } click to toggle source

Execute a block in the context of a shared lock on this file. A shared lock will be obtained on the file, the block executed, and the lock released.

# File lib/logging/utils.rb, line 100
def flock_sh
  flock LOCK_SH
  yield
ensure
  flock LOCK_UN
end