class Semaphore < ActiveRecord::Base def self.lock(*keys) transaction do keys.sort.map { |key| create!(:name => key).destroy } yield end end end