Publicidad:
La Coctelera

RoR-Lab

Evolución, anécdotas, problemas y soluciones durante el desarrollo de una aplicación web con Ruby on Rails

22 Marzo 2007

Clase para generar aleatorios

En mi última entrada en este blog, mostré el método que permitía generar una llave aleatoria.
Las cosas han ido evolucionando y resultó que uno de los formularios del sistema requería el famoso CAPTCHA que igualmente debía generar 4 caracteres aleatorios.
RoR fomenta fuertemente el principio DRY (Don't Repeat Yourself). Y bueno, en cualquier otro lenguaje es mejor no repetir código.
De manera que escribí una clase que generara aleatorios. Esta clase es como una especie de utilidad, por lo tanto debe ir dentro del directorio lib ; allí cree un directorio utilidades y dentro de este la clase GeneradorAleatorios; acá les presento el código para que me den sus opiniones:

class Utilidades::GeneradorAleatorio

CHARS = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
NUMBERS = ("0".."9").to_a

# genera una palabra aleatoria con la cantidad de caracteres especificada
# utiliza las letras de la 'a' a la 'z' minúsculas y masyúsculas y los números del '0' al '9'
def self.generar_palabra(cantidad = 10)
return self.generar(cantidad) { CHARS }
end

# genera una número aleatorio con la cantidad de dígitos especificada
# utiliza los números del '0' al '9'
def self.generar_numero(cantidad = 10)
return self.generar(cantidad) { NUMBERS }
end

# genera una cadena de caracteres aleatoria
# debe proveerse un bloque que retorne un arreglo de donde se sacarán los caracteres
def self.generar(cantidad = 10)
if block_given?
caracteres = yield
else
caracteres = CHARS
end
aleatorio = ""
1.upto(cantidad) { |i| aleatorio << caracteres[rand(caracteres.size)] }
return aleatorio
end
end

Así mas o menos se debería usar:

  • Generar un String de 4 caracteres de un arreglo específico.

Utilidades::GeneradorAleatorio.generar(4) { ['1','0','a','b','z'] }

  • Generar un String de 40 caracteres, letras mayúculas, minúsculas y digitos:

Utilidades::GeneradorAleatorio.generar_palabra(40)

  • Generar un String de 30 caracteres, pero solamente dígitos:

Utilidades::GeneradorAleatorio.generar_numero(30)

Saludos!

servido por Luis Felipe sin comentarios compártelo

sin comentarios · Escribe aquí tu comentario

Los comentarios están cerrados


Sobre mí

Actualmente me encuentro desarrollando una aplicación web que espero tener en producción para la mitad del 2007. La aplicación está desarrollada utilizando el framework Ruby on Rails. (RoR) Toda la evolución del sistema va a ser documentada en este blog con el ánimo de recibir retroalimentación o bien ser útil para otros desarrollos.

Fotos

Luis Felipe Hurtado Campuzano todavía no ha subido ninguna foto.

¡Anímale a hacerlo!

Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?

Crea tu blog gratis en La Coctelera