Ruby: de string a nombre de clase
Como siempre, cada vez que tengo que aprender un nuevo lenguaje los libros son utiles únicamente para empezar, unas 40 páginas de las 600 que Amazon me envió.
Programming Ruby como todos los libros de lenguajes desde el viejo The C programming languaje de Kernighan and Ritchie son únicamente aproximaciones a la descripción y/o definición de los lenguajes que supuestamente describen.
Busco en mi estanteria de recuerdos y lo encuentro, ya no es blanco, es amarillo, el viejo Kernighan. En APD lo teníamos en español e inglés, y leñe, no decian lo mismo siempre.
Entonces no había internet, ni ethernet ni otra fuente mas que los manuales y siempre en papel, bueno estaba el man, pero era peligrosísimo de creer.
Ahora con las busquedas masivas de Yahoo, Google y compañía las indefiniciones u omisiones no son tan problemáticas como en aquellos dias podian llegar a ser.
Al grano. He tardado 1 día, si 1 dia en averiguar la forma de generar un nombre de clase (ya definida) desde una string, para poder refernciar sus métodos o instanciar un objeto en run-time.
Aqui va un ejemplo para los que tengan el mismo caso. Lo curioso de Ruby es que hay 2 métodos y además en Rails crean un tercero aunque realmente sea una reutilización de uno de los de Ruby.
# Conversión dinámica de Strings (in CamelCase)
# a nombre de clase name en Ruby
#
var = "Miclase"
puts 'var es de tipo: ' , var.class
puts " "
class Miclase
def animales
"perros y gatos"
end
end
puts "Las mascotas más comunes son: " + Miclase.new.animales
#ahora utilizando una string, opcion A (Ruby)
puts "utilizando const_get las mascotas son: " + Object.const_get(var).new.animales
#ahora utilizando una string, opcion B (Ruby)
puts "utilizando module_eval las mascotas son: " + Object.module_eval(var).new.animales
#ahora utilizando una string, opcion C (unicamente Rails)
puts "utilizando constantize las mascotas son: " + var.constantize.new.animales
Lo dicho esto debería estar en el manual del lenguaje, y no en los grupos de google, donde tuve que recurrir.

Personalized Lip Butter referenció
Today's Updates
[...] While surfing aimlessly today I came across this site: [...]
26 Abril 2007 | 11:31 PM