Módulos parte IV - Callbacks
Thursday, 13 December , 2007
Callbacks y hooks
Para continuar, vamos a ver el tema “callbacks” relacionado con los módulos, los callbacks y los hooks son una técnica de metaprogramación bastante común. Estos métodos son invocados cada vez que ocurre un evento particular durante la ejecución del programa, por ejemplo:
- Un método inexistente es llamado en un objeto
- Una clase es “mixineada” en un módulo
- El “subclaseado” de una clase
- Un método de instancia es agregado a una clase
Atrapando las operaciones de include con Module#included
Cuando un módulo es incluido (Mixed in) dentro de una clase, si se define un método llamado included para ese módulo, entonces este método se ejecuta. El método recibe el nombre de la clase como argumento.
module A
def self.included(clase)
puts "He sido incluido en #{clase}."
end
end
class B
include A
end
salida:
=> He sido incluido en la clase B.
Usando el callback included para agregar métodos de clase
Podemos atrapar la operación de include para agregar métodos de clase a la clase que estamos incluyendo el módulo:
module A
def self.included(clase)
def clase.metodo_de_clase
puts "Agrego un metodo de clase."
end
end
def metodo_de_instancia
puts "Agrego un metodo de instancia."
end
end
class B
include A
end
b = B.new
b.metodo_de_instancia
B.metodo_de_clase
salida:
=> Agrego un metodo de instancia. => Agrego un metodo de clase
Bueno como vemos Module#included es una manera muy útil para agregar cosas a las clases/módulos de nuestros programas.
Esto fue todo, hasta el próximo post.

Leave a Reply