Inicializando variables de instancia en Mixins

¿Hay alguna forma clara de inicializar las variables de instancia en un módulo que se pretende utilizar como Mixin? Por ejemplo, tengo lo siguiente:

module Example

  def on(...)   
    @handlers ||= {} 
    # do something with @handlers
  end

  def all(...)
    @all_handlers ||= []
    # do something with @all_handlers
  end

  def unhandled(...)
    @unhandled ||= []
    # do something with unhandled
  end

  def do_something(..)
    @handlers     ||= {}
    @unhandled    ||= []
    @all_handlers ||= []

    # potentially do something with any of the 3 above
  end

end

Tenga en cuenta que tengo que comprobar una y otra vez si cada@member se ha inicializado correctamente en cada función, esto es ligeramente irritante. Preferiría mucho escribir:

module Example

  def initialize
    @handlers     = {}
    @unhandled    = []
    @all_handlers = []
  end

  # or
  @handlers  = {}
  @unhandled = []
  # ...
end

Y no tiene que asegurarse repetidamente de que las cosas estén inicializadas correctamente. Sin embargo, de lo que puedo decir esto no es posible. ¿Hay alguna forma de evitar esto, además de agregar uninitialize_me método paraExample y llamandoinitialize_me de la clase extendida? yo víeste ejemplo, pero no hay manera de que me parche las cosas enClass Sólo para lograr esto.

Respuestas a la pregunta(4)

Su respuesta a la pregunta