Inicjowanie zmiennych instancji w Mixins

Czy jest jakiś czysty sposób na zainicjowanie zmiennych instancji w module przeznaczonym do użycia jako Mixin? Na przykład mam następujące:

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

Zauważ, że muszę sprawdzać raz po raz, jeśli każdy@member został poprawnie zainicjowany w każdej funkcji - jest to lekko irytujące. Wolałbym raczej napisać:

module Example

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

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

I nie trzeba wielokrotnie sprawdzać, czy wszystko jest poprawnie zainicjowane. Jednak z tego, co mogę powiedzieć, nie jest to możliwe. Czy jest jakiś sposób na to, oprócz dodaniainitialize_me metoda doExample i wołanieinitialize_me z rozszerzonej klasy? widziałemten przykład, ale nie ma sposobu, by wplatać małpy w rzeczyClass aby to osiągnąć.

questionAnswers(4)

yourAnswerToTheQuestion