November 2012
Intermediate to advanced
888 pages
54h 46m
Polish
Chcemy „obudować” pewną metodę dodatkowym kodem, tak aby jej wywołaniu towarzyszyło występowanie dodatkowych efektów.
Używając aliasów i metaprogramowania, możemy ręcznie rozbudować wspomnianą metodę o dodatkowy kod „inicjujący” i „kończący”. Wygodniej będzie to jednak zrobić za pomocą gotowych środków dających identyczny efekt, na przykład gemu glue lub niezależnej biblioteki AspectR. Ta ostatnia umożliwia zdefiniowanie klasy „aspektowej”, której metody wywoływane będą (odpowiednio) przed wywołaniem i po wywołaniu właściwej metody.
Oto przykład klasy aspektowej śledzącej wywołania określonej metody oraz wyniki tych wywołań:
require 'aspectr' class Verbose < AspectR::Aspect ...