Interfejsy ruby

Mam pytanie w jaki sposób "udajecie " interfejsy.

Tzn mam pewien moduł chciałbym żeby przy includowaniu modułu w danej klasie wymusić implementacje pewnych atrybutów bądź metod. Jak to zrobić??

cały sęk w tym, że nie udajemy :wink:
poczytaj o duck typingu, powinno Ci to troszkę rozjaśnić dlaczego jest to zrobione tak a nie inaczej :wink:

[quote=mich]Mam pytanie w jaki sposób "udajecie " interfejsy.

Tzn mam pewien moduł chciałbym żeby przy includowaniu modułu w danej klasie wymusić implementacje pewnych atrybutów bądź metod. Jak to zrobić??[/quote]
Ja z reguły daję:

def foo raise NotImplemented end
ale o tym się dowiesz dopiero jak zainludujesz i będziesz chciał uzyć foo :wink:

W railsach jest coś takiego jak ActiveModel::Lint, czyli testy, które sprawdzają kompatybilność klasy z ActiveModel, może w tę stronę? Inaczej musiałbyś w jakiś sposób sprawdzać przy includowaniu czy metody są zaimplementowane, co później może Cię ugryźć jak będziesz chciał część metod dorzucić w innym module, albo później, albo zrobić coś innego o czym teraz nie pomyślisz (a przy dynamiczności rubiego nie jest o taką sytuację ciężko :wink: ).