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

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