Zastanawiam się, czy istnieją jakieś najlepsze praktyki dotyczące tego, gdzie umieścić niestandardowe pliki Ruby w aplikacjach Railsowych, te, które nie pasują do żadnego z domyślne katalogi (controllers
/models
itp.).wskazówki, gdzie umieścić klasy w aplikacjach Railsowych, które nie pasują do siebie.
Mówię o klasach, które są używane przez kontrolery/modele itp., Ale nie są podklasami żadnej z klas bazowych Rails. Klasy zawierające funkcje wyodrębnione z modeli, aby zmniejszyć ich wagę. Niektóre z nich wyglądają jak modele, ale nie są modelami AR, niektóre wyglądają bardziej jak "usługi", niektóre są czymś pośrednim lub czymś innym.
Kilka losowych przykładów:
ćwiczenia- „strategia”, które obsługują uwierzytelniania hasłem, via facebook itp
- „XParams” obiektów, które hermetyzują parametrów lub obiektów „XCreator”, które zajmują się przetwarzaniem params do wykonać pewne złożone działanie, które powoduje tworzenie niektórych modeli AR w klasach, które wysyłają żądania do zewnętrznych interfejsów API lub zawierają te żądania i odpowiedzi:
- fałszywe modele, które można zastąpić rzeczywistym modelem AR (np. er)
- Resque pracy
- klas przechowywać i odczytywać informacje z Redis
- klas wykonujące pewne konkretne działania, takie jak przetwarzanie danych, generowanie raportów itd. i są nazywane od pracy Resque lub zadań kasę
Mam ich już całkiem sporo, niektóre z nich są dodawane do lib
, co kończy się kupą losowych klas i modułów, niektóre wkraczają do app/models
. Chciałbym to jakoś zorganizować, ale nie wiem od czego zacząć.
Czy tylko modele AR mają być oznaczone jako app/models
? Czy można też umieścić tam dowolne modele domen lub pomocników? Jak decydujesz, czy coś jest modelem?
Czy wszystko, co nie pasuje do app
, należy przejść pod lib
? A może powinienem dodać kilka nowych niestandardowych podkatalogów do app
? Jakie podkatalogi i jak podzielić klasy niestandardowe?
Jak sobie z tym poradzić w swoich projektach? Wiem, że każdy projekt jest nieco inny, ale muszą istnieć pewne podobieństwa.
Życzę bardziej wyrazistych odpowiedzi. – carbonr
@carbonr Artykuł CodeClimate był najlepszą rzeczą, jaką znalazłem, oznaczam jako akceptowane teraz. Zasada "MyTurtleFaceSpace" jest całkiem niezła. Napisałam również o tym później artykuł uzupełniający: http://blog.lunarlogic.io/2013/declutter-lib-directory/ –