module Unique
Constants
- DEFAULT_MAX_TRIES
- NoArgumentsAllowed
- NoUniqueObjects
- VERSION
Public Class Methods
max_tries()
click to toggle source
# File lib/unique.rb, line 10 def self.max_tries @max_tries end
max_tries=(num)
click to toggle source
# File lib/unique.rb, line 9 def max_tries= num def self.max_tries @max_tries end @max_tries= [num, 1].max.to_i end
next!(*args) { || ... }
click to toggle source
# File lib/unique.rb, line 17 def self.next! *args, &block raise NoArgumentsAllowed, 'Only a block is accepted.' unless args.empty? && block.kind_of?(Proc) tries= 0 loop { tries+= 1 raise NoUniqueObjects, "An unused, unique object could not be found in #{max_tries} tries (#{block.source_location.inspect})" if tries> max_tries unless @@instances.include?(instance= yield) @@instances.unshift instance break instance end } end
reset!()
click to toggle source
# File lib/unique.rb, line 30 def self.reset! @@instances = Array.new end