Cześć,
W pracy odpowiadam za kilka prostych aplikacji Webowych(RoR 4 i 5) do wewnętrznego użytku dla pracowników firmy.
Co to dużo mówić - pojawiają się nowe funkcjonalności, modele strasznie puchną, a sporo operacji po prostu nie pasuje do “lib” czy concerns. Możecie polecić jakieś gemy, pomagające zorganizować kod?
Ja obecnie korzystam z interactorów i dekoratorów.
-
Interactory(https://github.com/collectiveidea/interactor) - rozumiem je jako odpowiedniki serviców. Obawiam się trochę wpływu na wydajność - być może niesłusznie uważam że tworzenie nowych obiektów do zadań nie zawsze ma sens. Czy np. opłaca się zmieniać defaultowe MVC dodając servicy, tak że np. w trakcie save/create większość logiki wykonuje serwisy, a w modelu zostają tylko validatory ? (coś ala schemat Java Spring). I czy stosujecie jakieś alternatywne gemy/praktyki ?
-
Decoratory - z założenia mają chyba pomagać w ogarnięciu helperów (np. zmiana formatu daty itd.). Jakie są najlepsze gemy/biblioteki przeznaczone do odchudzenie modelu z duże liczby callbacków/validatorów? Ja obecnie rozbijam po prostu model na moduły według funkcjonalności i includuję. Czasami wspomagam się Concernami (łatwe deklarowanie callbacków i validatorów) ale to chyba nie jest dobra praktyka.
-
Zależności między modelami - jakieś bardziej globalne rozwiązanie względem callbacków ? Chodzi głównie o sytuację struktury drzew np. rodzica-dzieci wewnątrz jednego modelu. Kiedy rodzić dostaje określonego updata, należy też zaktualizować część kolumn u dzieci. Drugim przykładem mogą być różne modele w relacji jeden do wielu. Gdy “jeden” zostaje zaktualizowany, należy zweryfikować (i ewentualnie zmodyfikować)wszystkie powiązane z nim obiekty. Modyfikacja może być zarówno zwykłą operacją matematyczną, odczytem z pliku tekstowego, jak i GETem do zewnętrznego API.