class FFaker::UniqueUtils
Constants
- RetryLimitExceeded
Public Class Methods
Source
# File lib/ffaker/utils/unique_utils.rb, line 10 def add_instance(generator, max_retries) instances[generator] ||= FFaker::UniqueUtils.new(generator, max_retries) end
Source
# File lib/ffaker/utils/unique_utils.rb, line 18 def clear instances.each_value(&:clear) instances.clear end
Source
# File lib/ffaker/utils/unique_utils.rb, line 14 def instances Thread.current[:ffaker_unique_utils] ||= {} end
Source
# File lib/ffaker/utils/unique_utils.rb, line 24 def initialize(generator, max_retries) @generator = generator @max_retries = max_retries end
Public Instance Methods
Source
# File lib/ffaker/utils/unique_utils.rb, line 29 def clear previous_results.clear end
Private Instance Methods
Source
# File lib/ffaker/utils/unique_utils.rb, line 35 def method_missing(name, *args, **kwargs) @max_retries.times do result = @generator.public_send(name, *args, **kwargs) next if previous_results[[name, args, kwargs]].include?(result) previous_results[[name, args, kwargs]] << result return result end raise RetryLimitExceeded, "Retry limit exceeded for #{name}" end
Source
# File lib/ffaker/utils/unique_utils.rb, line 52 def previous_results @previous_results ||= Hash.new { |hash, key| hash[key] = Set.new } end
Source
# File lib/ffaker/utils/unique_utils.rb, line 48 def respond_to_missing?(name, *args) @generator.respond_to?(name, *args) || super end
Calls superclass method