November 2012
Intermediate to advanced
888 pages
54h 46m
Polish
Podziękowania dla Phila Thomsona
Chcemy wykonywać metodę initialize w module dołączanym do klasy każdorazowo, gdy tworzony jest obiekt tej klasy. Nie chcemy jednak obciążać użytkownika modułu obowiązkiem wykonywania instrukcji super w metodzie initialize.
Po pierwsze, musimy wyposażyć klasę w możliwość śledzenia dołączanych do niej modułów, Po drugie, musimy przedefiniować konstruktor Class#new tak, by dla każdego z tych modułów wywołana została jego (modułu) własna metoda initialize. Elastyczność języka Ruby pozwala nam na modyfikację wbudowanej klasy Class (choć nigdy nie należy robić tego pochopnie):
class Class def included_modules @included_modules ||= [] end ...