Здравейте на всички.
Напоследък в няколко проекта, по които работя успоредно, усещам нарастващо отвращение към пъхането на важния код в модели и контролери. Има си и такова нещо като utility classes / functions естествено, но и това може да те докара само донякъде, след което започва да си води своите проблеми -- например спагетификация, защото в един момент пораства до 20 файла, всеки 1 от които разчита на всеки 5 други. Тъпо. :) А и според мен ако [lib/utils/] директорията ти има повече от 15-20 файла, не правиш нещо правилно.
Не ми се спори дали може да се натисне по-екстремно там (или в самия Rails код), за да се реши този конкретен проблем -- не е въпросът в това. Тези от вас които не работят на удобно / топло и с гарантирана заплата, а трябва да вършат нещата бързо и ефикасно и винаги за вчера, знаят това -- става дума да се намери решение което да не иска огромна начална (или нарастваща във времето) инвестиция.
Напълно съм готов и склонен да отделя 2 уикенда подред, за да си реструктурирам проектите, стига да сметна че някой определен подход е good enough.
Преди време бях видял такъв gem в GitHub, но за съжаление така и не успях да го издиря в history-то си. Той deal-ваше с понятия като actions, strategies и др. подобни [по принцип] неприятни ОО багажи. Но самият gem и подходът който предлагаше бяха общо взето най-простият, чист и видимо ефикасен метод.
Та...
(1) Можете ли да препоръчате gem? Или просто определен по-стриктен и неразрешаващ вечни изключения подход? Аз не просто търся добра идея -- такава мога и сам да си генерирам след 2-3 излизания с велосипеда с техно-транс музика докато катеря баира на Борисовата. :) Говорим за нещо което да е вече съградено (доколкото това е възможно въобще за такива по-общи заявки, естествено) и вече да е работило добре за някого.
(2) Как сте го правили вие в дълго-животни и нарастващи Rails проекти? Нещо изцяло специфично за вашия проект също е ценно да се знае, ако сте склонни да споделите.
(3) Дали сте чували определени препоръки, но не сте ги опитвали? Също е useful info.
Отворен съм за feedback, но нека опитаме да скипнем troll / професорски replies като "прочети някоя книга lol" или "ами напиши си по-добре business logic класовете, noob".
Благодаря предварително! =)