10 błędów w programowaniu Common Rails, których powinieneś unikać

Opublikowany: 2023-08-22

Ruby on Rails, powszechnie określany jako „Rails”, rzeczywiście zmienił paradygmat tworzenia aplikacji internetowych, kładąc nacisk na zasady „konwencja ponad konfiguracją” (CoC) i „nie powtarzaj się” (DRY). Ponad 3,7 miliona aktywnych witryn internetowych wykorzystuje Ruby on Rails jako framework.

Dzięki temu frameworkowi każda firma zajmująca się rozwojem Ruby on Rails mogła tworzyć mocne, skalowalne aplikacje z większą prostotą. Jednak biorąc pod uwagę mnogość funkcji oferowanych przez Rails, nawet najbardziej biegli programiści mogą czasami się potknąć.

Oto 10 typowych niedopatrzeń w programowaniu Railsowym i sposobów ich zaradzenia:

1. Nadużywanie wywołań zwrotnych

Błąd : Railsy wyposażają programistów w niezawodne funkcje wywołania zwrotnego. Ułatwia to automatyzację określonych zdarzeń podczas podróży życiowej obiektu. Chociaż usprawniają niektóre procesy, nadmierna zależność może stworzyć labiryntowe modele.

Jak tego uniknąć : Przeplatanie wielu wywołań zwrotnych w ramach jednego modelu może generować konflikty lub sporadyczne aktywacje. W miarę wzrostu złożoności utrzymanie modelu staje się trudnym zadaniem.

Idealne podejście? Przestrzegaj zasady pojedynczej odpowiedzialności, upewniając się, że każda klasa ma jeden powód zmiany. Jeśli wywołanie zwrotne odbiega od głównej funkcji modelu, być może jest bardziej odpowiednie dla obiektu usługi lub dekoratora.

2. Ignorowanie bazy danych

Błąd : Railsy mogą poszczycić się nienaganną integracją baz danych, przez co podstawowe operacje często wydają się niewidoczne. Jednak to płynne działanie może czasami prowadzić do niezoptymalizowanych zapytań lub zmniejszenia szybkości.

Jak tego uniknąć : Chociaż Railsy zajmują się łączeniem specyfiki baz danych, zrozumienie zaplecza pozostaje kluczowe. Uważaj na pułapki, takie jak zapytania N+1.

Narzędzia takie jak klejnot typu „kula” mogą pomóc w sygnalizowaniu takich problemów. Ponadto zapoznaj się z mechaniką indeksowania baz danych. Okresowo przeszukuj dzienniki pod kątem powolnych zapytań, aby dostroić wydajność bazy danych.

3. Nie pisanie testów lub ignorowanie testów zakończonych niepowodzeniem

Błąd : Testy w Railsach oferują plan funkcjonalności aplikacji, zapewniając poduszkę podczas przekształcania zadań. Jednak czasami może się zdarzyć lekceważenie testów lub przymykanie oczu na awarie.

Jak tego uniknąć : chociaż tworzenie aplikacji bez testów może początkowo wydawać się celowe, w przyszłości stwarza potencjalne wyzwania. Wykorzystaj narzędzia testowe, takie jak RSpec i MiniTest, w celu uzyskania wyczerpującego zasięgu testów. Wykorzystaj narzędzia takie jak SimpleCov do oceny i traktuj priorytetowo naprawianie nieudanych testów.

4. Omijanie walidacji

Błąd : Solidny mechanizm sprawdzania poprawności Railsów jest często sprzymierzeńcem programisty. Jednak metody takie jak update_attribute mogą ominąć tę weryfikację, potencjalnie powodując anomalie danych.

Jak tego uniknąć : Świętość danych nie podlega negocjacjom. Walidacja Railsów zapewnia spójność danych, zanim zostaną one umieszczone w bazie danych. W pełni zrozum niuanse metod takich jak update i update_attribute. O ile omijanie walidacji nie jest jednoznacznie konieczne, trzymaj się konwencjonalnej ścieżki i rygorystycznie dokumentuj wyjątki.

5. Niezrozumienie potoku aktywów

Błąd : Potok zasobów Railsów został zaprojektowany tak, aby optymalizować zasoby, takie jak CSS i JavaScript. Błędna konfiguracja może utrudnić dostawę zasobów lub negatywnie wpłynąć na wydajność.

Jak tego uniknąć : Zagłęb się w działanie potoku zasobów, aby uniknąć problemów z wdrażaniem. Zapewnij rygorystyczny schemat prekompilacji na etapie produkcji. Pomocnicy Harness Rails, tacy jak image_tag, umożliwiają bezproblemowe łączenie zasobów po optymalizacji.

6. Niewykorzystywanie zadań w tle do czasochłonnych zadań

Błąd : trzymanie użytkowników w oczekiwaniu podczas wykonywania zadań w czasie rzeczywistym, takich jak wysyłanie wiadomości e-mail, nie jest najlepszym doświadczeniem dla użytkownika.

Jak tego unikać : Aplikacje internetowe powinny być synonimem responsywności. Odciąż wymagające zadania, takie jak obliczanie danych lub wysyłanie wiadomości e-mail do zadań w tle. Narzędzia takie jak Sidekiq lub Resque są dostosowane do tych operacji, dzięki czemu Twoja główna aplikacja pozostaje elastyczna i zorientowana na użytkownika.

7. Przesadzanie z klejnotami

Błąd : chociaż ekosystem Railsów może poszczycić się bogatym zestawem perełek, bezkrytyczne ich dodawanie może rozdęć aplikację i wprowadzić potencjalne zagrożenia bezpieczeństwa.

Jak unikać : Klejnoty są fantastyczne i oferują skróty do rozwiązywania irytujących problemów. Ale więcej nie zawsze znaczy lepiej. Każdy klejnot, który wsuwasz do kieszeni aplikacji, jest jak dodawanie kolejnego ogniwa do łańcucha – może to być to słabe.

Zanim zdecydujesz się użyć klejnotu, zatrzymaj się i pomyśl. Sprawdź, jak często jest aktualizowany, jaką ma społeczność wsparcia i jak dobrze jest utrzymywany.

Jeśli szukasz pomocy w wykrywaniu luk w zabezpieczeniach, możesz skorzystać z narzędzi takich jak Bundler-audit.

8. Brak indeksowania kolumn bazy danych

Błąd : Aby uzyskać optymalną wydajność, kolumny bazy danych biorące udział w wyszukiwaniach lub łączeniach wymagają indeksowania. Zignorowanie tego może drastycznie spowolnić działanie.

Jak tego uniknąć : w miarę dojrzewania aplikacji i gromadzenia danych niezwykle ważne jest, aby baza danych pozostawała elastyczna. Pomyśl o indeksowaniu jako o udostępnieniu swojej bazie danych mapy, zamiast sprawiać, że błąka się zagubiona.

Nadaj priorytet kolumnom biorącym udział w operacjach łączenia lub wyszukiwania. A jeśli kiedykolwiek będziesz mieć wątpliwości, możesz skorzystać z narzędzi takich jak Rails_db, które pozwolą Ci zobaczyć, jak działają Twoje zapytania z lotu ptaka.

9. Korzystanie z domyślnych stron błędów

Błąd : chociaż domyślne strony błędów Railsów są przydatne w środowisku programistycznym, mogą ujawnić niepotrzebne informacje w środowisku produkcyjnym i nie są przyjazne dla użytkownika.

Jak tego uniknąć : W prawdziwym świecie produkcji chodzi o zrównoważenie doświadczenia użytkownika z bezpieczeństwem. Strony błędów Standard Rails mogą w sposób niezamierzony wyświetlać niektóre wrażliwe informacje o systemie.

Poza tym nie są one zbyt pocieszające dla użytkowników, którzy się na nie natkną. Zmień wygląd swojej aplikacji, projektując strony błędów na zamówienie. Powinny one być przydatne, dyskretne i uspokajające, pomagając użytkownikom w nawigacji bez powodowania niepokoju.

10. Ignorowanie najlepszych praktyk w zakresie bezpieczeństwa

Błąd : Rails jest jak forteca z wieloma wbudowanymi funkcjami bezpieczeństwa. Ale jeśli nie użyjesz ich właściwie, możesz po prostu zostawić bramę szeroko otwartą.

Jak unikać : Zagrożenia internetowe mają różne kształty i rozmiary — od podstępnych wstrzyknięć kodu SQL po złośliwe skrypty między witrynami. Chociaż Railsy wyposażają Cię w narzędzia takie jak parametryzacja SQL i tokeny CSRF, które pozwalają odeprzeć wiele z tych zagrożeń, niewielka pomyłka może narazić Cię na niebezpieczeństwo.

Narzędzia takie jak Brakeman mogą być Twoimi zaufanymi zwiadowcami, wskazującymi potencjalne zagrożenia bezpieczeństwa. Bezpieczeństwo powinno być zawsze najwyższym priorytetem, a regularne audyty i przeglądy mogą pomóc w utrzymaniu solidnego poziomu bezpieczeństwa.

Wniosek

Ruby on Rails, choć niezwykle potężny i przyjazny dla programistów, nie jest pozbawiony zawiłości. Unikanie powyższych błędów postawi Cię na ścieżce do tworzenia wydajniejszych, łatwiejszych w utrzymaniu i bezpieczniejszych aplikacji Railsowych. Pamiętaj, że kluczem do opanowania Railsów jest nie tylko zrozumienie jego funkcji, ale także rozpoznawanie i unikanie potencjalnych pułapek.