Cześć
Piszę aplikację dla webdeveloperów, która polega na tworzeniu paczki plików źródłowych i niezbędnych plików gotowej do wgrania na serwer.
Właściwie to dopiero zacząłem ją pisać. Na razie wygląda tak:
I następnie chciałbym wprowadzić funkcje obsługi plików SASS, JS, obrazków, fontów i tak dalej, ale w taki sposób, żeby każda z tych funkcji była traktowana jako osobny moduł, a jednocześnie wszystko było zwarte z klasą Beavero.
Tylko… jak?
Mogę stworzyć moduł Module, który będzie nastepnie include’owany do klasy Beavero.
Tylko w jaki sposób nastepnie miałbym wywołać metody (wewnątrz metody build), które mi dostarczy moduł? Bo chcę uniknąć modyfikowania kodu klasy, a jedynie w pliku konfiguracyjnym wybieranie modułów, które mają być aktywne.
Najprościej byłoby stworzyć wszystko jako jedną klasę, ale osobiście wolałbym odseparować od siebie te funkcje/moduły obsługi poszczególnych formatów.
EDIT:
Okej, natrafiłem na trop: metodę “included”, która będzie automatycznie odpalana po dołączeniu modułu.
EDIT2:
Ostatecznie będę ładował moduły przy pomocy wyciągnięcia listy nazw modułów i przy pomocy
Object.const_get(“ModuleName”)
stworzę tablicę Modułów, na których już będę normalnie pracował (include’ował [w kontekście class_eval, bo inaczej się nie uda], a także przy pomocy ustandaryzowanego nazewnictwa wywoływał metody z wykorzystaniem send).