10.6. Śledzenie zmian dokonywanych w danej klasie

Podziękowania dla Phila Thomsona

Problem

Chcemy być powiadamiani o każdej zmianie dokonanej w ramach klasy: zdefiniowaniu nowej metody, anulowaniu lub zmodyfikowaniu definicji istniejącej metody oraz włączeniu do klasy modułu-domieszki.

Rozwiązanie

Należy w odnośnej klasie zdefiniować metody klasowe o nazwach method_added, method_ removed i method_undefined. Będą one wywoływane każdorazowo, gdy w klasie zostanie (odpowiednio) zdefiniowana nowa metoda, usunięta definicja metody lub anulowana definicja metody.

W poniższym przykładzie dodanie, usunięcie lub anulowanie definicji metody kwitowane jest odpowiednim komunikatem; gdy zmiana dotyczy metody important, generowany jest wyjątek: ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.