Method: Tins::Once.only_once

Defined in:
lib/tins/once.rb

.only_once(lock_filename = nil, locking_constant = nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/tins/once.rb', line 7

def only_once(lock_filename = nil, locking_constant = nil)
  lock_filename ||= $0
  locking_constant ||= LOCK_EX
  f = File.new(lock_filename, RDONLY)
  f.flock(locking_constant) and yield
ensure
  if f
    f.flock LOCK_UN
    f.close
  end
end