Devolución de llamada cuando se carga una clase

¿Existe una devolución de llamada que se pueda ejecutar cuando se carga una clase? Estoy pensando en algo como esto.

register_callback('Foo', :debug_message)

def debug_message
 puts "Foo has been loaded"
end

require 'foo'

preguntado el 27 de agosto de 11 a las 15:08

1 Respuestas

No no hay. Y ahí no puedo ser, por la sencilla razón de que las clases en Ruby son abiertas: son nunca completamente "cargado", puede Siempre hay agregar, eliminar, renombrar y sobrescribir métodos en cualquier momento posterior.

Por ejemplo, ¿cuándo se "carga" la siguiente clase?

# foo.rb
class Foo
  def some_method
  end
end

# bar.rb
class Foo
  def some_other_method
  end
end

# baz.rb
class Foo
  def some_method
  end
end

require 'foo'
require 'bar'

require 'baz' if rand > 0.5

Respondido 27 ago 11, 19:08

Sin embargo, en la práctica y la convención, si nombrara un archivo baz y tuviera la clase Foo allí, el PR sería rechazado. - baash05

Claro, pero ¿qué pasa con un PR que tenía un archivo llamado core_ext/foo.rb ¿en eso? Es decir común y es exactamente lo mismo. - Jörg W Mittag

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.