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.