Module: VisibilizeGenerator
- Defined in:
- lib/visibilize/generator.rb
Overview
Handles value generation for Visibilize w.r.t. provided type argument
Defined Under Namespace
Classes: AttemptsExceededError, InvalidGeneratorError
Constant Summary collapse
- MAX_UNIQUE_ATTEMPTS =
We’re limiting the number of attempts to generate a unique value to 10 This is to prevent infinite loops in case of collisions
10
Class Method Summary collapse
- .generate_value(type, klass, column, length) ⇒ Object
- .value(type, klass, column, length, unique) ⇒ Object
Class Method Details
.generate_value(type, klass, column, length) ⇒ Object
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/visibilize/generator.rb', line 36 def generate_value(type, klass, column, length) case type when :integer then generate_integer(length) when :string then generate_string(length) else raise InvalidGeneratorError.new(type, klass, column) unless SecureRandom.respond_to?(type) generate_from_securerandom(type, length) end end |
.value(type, klass, column, length, unique) ⇒ Object
26 27 28 29 30 31 32 33 34 |
# File 'lib/visibilize/generator.rb', line 26 def value(type, klass, column, length, unique) return generate_value(type, klass, column, length) unless unique MAX_UNIQUE_ATTEMPTS.times do generated = generate_value(type, klass, column, length) return generated unless klass.exists?(column => generated) end raise AttemptsExceededError, MAX_UNIQUE_ATTEMPTS end |