Class: File
- Inherits:
-
Object
- Object
- File
- Defined in:
- lib/logging/utils.rb
Overview
Instance Method Summary collapse
-
#flock? ⇒ Boolean
Returns
true
if another process holds an exclusive lock on the file. -
#flock_sh ⇒ Object
Execute the
block
in the context of a shared lock on this file.
Instance Method Details
#flock? ⇒ Boolean
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.
142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/logging/utils.rb', line 142 def flock?( &block ) status = flock(LOCK_EX|LOCK_NB) case status when false; true when 0; block ? block.call : false else raise SystemCallError, "flock failed with status: #{status}" end ensure flock LOCK_UN end |
#flock_sh ⇒ Object
Execute the 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.
158 159 160 161 162 163 |
# File 'lib/logging/utils.rb', line 158 def flock_sh( &block ) flock LOCK_SH block.call ensure flock LOCK_UN end |