#!/usr/bin/env ruby # encoding: utf-8 # # lock # LOCK_FILE = 'lockfile' COUNT_FILE = 'count' def lock open(LOCK_FILE, 'a') do |st| st.flock(File::LOCK_EX) yield st.flock(File::LOCK_UN) end end def new_id count = nil lock do count = File.read(COUNT_FILE).to_i count += 1 open(COUNT_FILE, "w") do |out| out.print count end end count end