Class: DirLock
- Inherits:
-
Object
- Object
- DirLock
- Defined in:
- lib/jiji/util/file_lock.rb
Instance Method Summary collapse
-
#initialize(lockdir) ⇒ DirLock
constructor
A new instance of DirLock.
-
#readlock(&block) ⇒ Object
読み込みロックする。 - ロックされていても他の読み込みユーザーはブロックさない。 - 他の書き込みユーザーはブロックされる。.
-
#writelock(&block) ⇒ Object
書き込みロックする。 - ロックされている場合、他の読み込みユーザー/書き込みユーザー共にブロックされる。.
Constructor Details
#initialize(lockdir) ⇒ DirLock
Returns a new instance of DirLock.
39 40 41 |
# File 'lib/jiji/util/file_lock.rb', line 39 def initialize(lockdir) @lockfile = "#{lockdir}/.lock" end |
Instance Method Details
#readlock(&block) ⇒ Object
読み込みロックする。
-
ロックされていても他の読み込みユーザーはブロックさない。
-
他の書き込みユーザーはブロックされる。
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/jiji/util/file_lock.rb', line 46 def readlock ( &block ) mkfile File.open( @lockfile, "r" ) { |f| f.flock(File::LOCK_SH) begin block.call ensure f.flock(File::LOCK_UN) end } end |
#writelock(&block) ⇒ Object
書き込みロックする。
-
ロックされている場合、他の読み込みユーザー/書き込みユーザー共にブロックされる。
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/jiji/util/file_lock.rb', line 60 def writelock ( &block ) mkfile File.open( @lockfile, "w" ) { |f| f.flock(File::LOCK_EX) begin block.call ensure f.flock(File::LOCK_UN) end } end |