module Spruz::Once

Public Instance Methods

only_once(lock_filename = nil, locking_constant = nil) { || ... } click to toggle source
# File lib/spruz/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
try_only_once(lock_filename = nil, locking_constant = nil, &block) click to toggle source
# File lib/spruz/once.rb, line 19
def try_only_once(lock_filename = nil, locking_constant = nil, &block)
  only_once(lock_filename, locking_constant || LOCK_EX | LOCK_NB, &block)
end