module VisibilizeGenerator

Public Class Methods

generate_from_securerandom(type, length) click to toggle source
# File lib/visibilize/generator.rb, line 56
def generate_from_securerandom(type, length)
  if SecureRandom.respond_to?(type)  
    begin
      return SecureRandom.public_send(type, length)
    rescue ArgumentError
      return SecureRandom.public_send(type)
    end
  end
  
  return nil
end
generate_integer(length) click to toggle source

Generators

# File lib/visibilize/generator.rb, line 37
def generate_integer(length)
  return rand(1...10) if length==1

  min=10**(length-1)  #1000
  max=9*min + (min-1) #9999
  rand(min...(max+1))
end
generate_string(length) click to toggle source
# File lib/visibilize/generator.rb, line 45
def generate_string(length)
  available_chars=("a".."z").to_a + ("A".."Z").to_a + (0..9).to_a
  
  str=""
  length.times do
    str+=available_chars[rand(available_chars.size)].to_s 
  end

  str
end
get_value_for(type, klass, column, length, unique) click to toggle source
# File lib/visibilize/generator.rb, line 7
def get_value_for(type, klass, column, length, unique)
  method="generate_#{type}"
  
  
  if self.respond_to?(method) 
    from=:generators
  elsif SecureRandom.respond_to?(type)
    from=:securerandom
  else
    raise "Visibilize Error: No generator defined for type #{type}. (Asked for column #{column} of #{klass.name})" 
  end

  loop do
    if from==:generators
      generated=public_send(method, length)
    elsif from==:securerandom
      generated=generate_from_securerandom(type, length)
    end

    return generated if !unique || klass.where("#{column}='#{generated}'").empty?
  end

end