Sha256: ad6d5de98f7a09a2e0da216cb18f6d702df050a6f3c780858807fd7a6b33acc5
Contents?: true
Size: 735 Bytes
Versions: 8
Compression:
Stored size: 735 Bytes
Contents
module Faker class UniqueGenerator def initialize(generator, max_retries) @generator = generator @max_retries = max_retries @previous_results = Hash.new { |hash, key| hash[key] = Set.new } end def method_missing(name, *arguments) @max_retries.times do result = @generator.public_send(name, *arguments) next if @previous_results[[name, arguments]].include?(result) @previous_results[[name, arguments]] << result return result end raise RetryLimitExceeded end RetryLimitExceeded = Class.new(StandardError) def clear @previous_results.clear end def self.clear ObjectSpace.each_object(self, &:clear) end end end
Version data entries
8 entries across 8 versions & 1 rubygems