Cargando clases en orden

Hola,

Tengo un directorio que contiene diversas clases. Estas clases tienen
ciertas dependencias entre ellas. Por ejemplo una clase puede extender
de otra. Estoy tratando de cargarlas con “require” dinamicamente pero
estoy obteniendo:

uninitialized constant

Esto sucede porque estoy tratando de require una clase que extiende de
otra que no he require todavia. Alguien sabe como puede cargarlas
dinamicamente y manejar esas dependencias? (mas o menos como hace rails
al cargar las clases)

Gracias,

Elías

Estimado Elias,

Una cosa que puedes hacer es redefinir el hook const_missing en la clase
module ya que cuando se encuentra una referencia a un simbolo que no
est’e
definido 'este se invoca. Salvando las distancias rails aplica una
convencion de manera que cuando se encuentra un simbolo no definido y se
invoca al hook const-missing, su implementacion hace una carga del
modulo
homonimo al simblo no definido (sustituyendo camel cases por underscores
y
andiamientos ( :: ) por separadores de ruta ( / ).
Es una explicacion un poco rapida. Pero si quieres mas detalles
obtendras
pistas googleando los siguientes t’erminos: ruby metaprogramming
const_missing

Espero que te sirva de algo.

Un saludo,

Miguel
http://miguelfernandez.info
(Desde el m’ovil)

On Apr 3, 2009 10:56 PM, “Elias O.”
[email protected]
wrote:

Hola,

Tengo un directorio que contiene diversas clases. Estas clases tienen
ciertas dependencias entre ellas. Por ejemplo una clase puede extender
de otra. Estoy tratando de cargarlas con “require” dinamicamente pero
estoy obteniendo:

uninitialized constant

Esto sucede porque estoy tratando de require una clase que extiende de
otra que no he require todavia. Alguien sabe como puede cargarlas
dinamicamente y manejar esas dependencias? (mas o menos como hace rails
al cargar las clases)

Gracias,

Elías

Posted via http://www.ruby-forum.com/.

2009/4/3 Elias O. [email protected]:

al cargar las clases)
Si uno esta fuera de Rails la aproximacion es distinta. Si a.rb
necesita tener B definido, pues hace un require

require ‘b’

class A < B

end

Esa es la manera de trabajar en Ruby. Y ya hagas un preloading o no,
eso es lo que resuelve las dependencias.