Czego użyć do ...?
Młodzi programiści często stają przed problemem jakiego gemu użyć do rozwiązania danego problemu. Praktycznie do wszystkiego znajdziemy po kilka narzędzi, a małe obeznanie z Railsowym środowiskiem sprawia, że wybór jest trudny i może być dziełem przypadku. Dlatego przygotowałem tę listę. Nie chcę pokazywać wszystkich możliwości. Chcę pokazać jedną z popularniejszych (często najpopularniejszą), najaktywniej rozwijaną. Jeśli kilka bibliotek jest porównywalnych, to wybór jest czysto subiektywny. Jednym słowem chcę ograniczyć wybór. Poniższe gemy zostały wielokrotnie użyte w środowisku produkcyjnym i jeśli nie wiesz co wybrać wybierz właśnie je. Nie gwarantuje, że jest to najlepszy wybór, ale na pewno jest to wybór dobry.
Jak samemu znaleźć właściwy gem?
Całkiem pokaźna lista kategorii i rozwiązań jest zgromadzona na ruby-toolbox.com. Warto zwrócić uwagę na liczbę osób, które danego rozwiązania używają. Przy szukaniu odpowiedniego gemu warto kierować się:
- dostępnymi funkcjami - nie wymaga komentarza.
- dokumentacją - nawet najlepszy gem będzie na nic, jeśli nie będziemy potrafili z niego skorzystać. Chociaż w ostateczności można zawsze zajrzeć do kodu.
- jakoś kodu (testy) - im ważniejsza jest dla nas jakaś biblioteka, tym ważniejsze jest, by przyjrzeć się jak jest napisana. Pozwoli nam to zorientować się, czy można twórcom zaufać i czy będziemy w stanie coś w niej poprawić lub zmienić, gdy zajdzie taka potrzeba.
- rozszerzalność - jak wyżej.
- czy projekt żyje - głupio by było, gdyby się okazało, że rozwój użytego gemu zatrzymał się wiele miesięcy temu. Bardzo ważna jest możliwość otrzymania pomocy, gdy znajdziemy bug, lub będziemy mieli z czymś problem.
Zawsze można również zadać pytanie na blipie z tagiem #ruby lub forum.
Uwierzytelnianie
Devise jest obecnie najprostszym rozwiązaniem, jego jedyną wadą (zaletą?) jest to, że bardzo dynamicznie się zmienia.
Wyszukiwanie
Thinking Sphinx. Kropka.
Przechowywanie plików i obrazków
Paperclip. Warto zajrzeć również do innych projektów ze stajni thoughtbot, bo są to zawsze produkcje warte polecenia.
Testowanie
Użyj Rspeca, Cucumbera i Capybary. Ponieważ można ten zestaw uznać za standardowy, warto się nimi pobawić i ewentualnie dopiero gdy zauważymy jego wady, poszukać alternatywy. Warto się również zaprzyjaźnić z factory girl.
Layouty
Erb jest brzydki i passe. Haml jest ładny i dżezi.
Inherited resources
Kiedy już zostaniesz fanatykiem REST'u, dobrze zacząć się rozglądać za czymś w stylu Inherited Resources i zacząć pisać kontrolery w bardziej deklaratywnym stylu.
Continuous Integration
Chyba nikogo nie trzeba przekonywać do korzyści jakie daje CI. Najprościej postawić serwer continous integration można z użyciem Integrity.
Deploy
Mam nadzieję, że nie wrzucasz kodu na serwer poprzez FTP? Do tego służy Capistrano. I tyle w tym temacie.
Obsługa błędów
Instalacja Hoptoadapp sprowadza się do kilku komend, dzięki którym dostaniesz email z każdym błędem, który się pojawił na produkcji i jedno miejsce, w którym tymi błędami możesz zarządzać. Jeśli wystarczy Ci jeden użytkownik i projekt, to jest również plan darmowy.
Mierzenie wydajności
Sposób w jaki New Relic zbiera i prezentuje informacje o obciążeniu jest imponujący. Często jeden rzut oka wystarczy, by zorientować się, co powoduje problemy z wydajnością. W wersji podstawowej daje podgląd ostatnich 30 minut.
Serwer www
Użyj Nginxa z mod_rails. Zużywa trochę mniej zasobów niż Apache, jest banalny w instalacji i konfiguracji i napisany przez człowieka z naszej wschodniej granicy (w sumie północnej).
Paginacja
Na koniec niepodważalny kanon służący do paginacji: Will Paginate.
Na koniec
Jeśli uważasz że do czegoś istnieje lepsze rozwiązanie napisz w komentarzu (flame! flame!) A jeśli uważasz, że ta lista jest przydatna i myślisz, że warto, by było regularnie aktualizowana, to napisz tym bardziej.