10 ошибок программирования Common Rails, которых следует избегать

Опубликовано: 2023-08-22

Ruby on Rails, обычно называемый «Rails», действительно изменил парадигму разработки веб-приложений, подчеркнув принципы «соглашение важнее конфигурации» (CoC) и «не повторяться» (DRY). Более 3,7 миллиона активных веб-сайтов используют Ruby on Rails в качестве фреймворка.

Эта структура позволила каждой компании-разработчику Ruby on Rails создавать мощные, масштабируемые приложения с большей простотой. Тем не менее, учитывая множество функций, предлагаемых Rails, даже самые опытные разработчики могут иногда спотыкаться.

Вот 10 типичных ошибок в программировании на Rails и способы их устранения:

1. Злоупотребление обратными вызовами

Ошибка : Rails снабжает разработчиков надежными функциями обратного вызова. Это облегчает автоматизацию определенных событий во время жизненного пути объекта. Хотя они упрощают некоторые процессы, чрезмерная зависимость может создавать запутанные модели.

Как избежать : переплетение нескольких обратных вызовов в рамках одной модели может привести к конфликтам или спорадическим активациям. По мере того, как эта сложность возрастает, поддержание модели становится сложной задачей.

Идеальный подход? Соблюдайте принцип единой ответственности, гарантируя, что у каждого класса есть единственная причина изменения. Если обратный вызов отличается от основной функции модели, возможно, он больше подходит для служебного объекта или декоратора.

2. Игнорирование базы данных

Ошибка : Rails может похвастаться безупречной интеграцией с базой данных, из-за чего базовые операции часто кажутся невидимыми. Но этот бесшовный опыт может иногда приводить к неоптимизированным запросам или снижению скорости.

Как избежать : Хотя Rails выполняет тяжелую работу по объединению особенностей базы данных, понимание серверной части остается критически важным. Следите за ловушками, такими как запросы N+1.

Такие инструменты, как драгоценный камень «пуля», могут помочь выявить такие проблемы. Кроме того, ознакомьтесь с механизмом индексации базы данных. Периодически просматривайте журналы на наличие медленных запросов, чтобы точно настроить производительность базы данных.

3. Не писать тесты или игнорировать неудачные тесты

Ошибка : тесты в Rails предлагают схему функциональности приложения, обеспечивая подушку безопасности при изменении формы задач. Однако иногда случается игнорирование тестирования или закрытие глаз на сбои.

Как избежать : хотя создание приложений без тестов на начальном этапе может показаться целесообразным, в дальнейшем это порождает потенциальные проблемы. Используйте такие инструменты тестирования, как RSpec и MiniTest, стремясь обеспечить исчерпывающий охват тестирования. Используйте такие инструменты, как SimpleCov, для оценки и отдавайте приоритет исправлению неудачных тестов.

4. Обход проверок

Ошибка : Надежный механизм проверки Rails часто является союзником разработчика. Однако такие методы, как update_attribute, могут обойти эти проверки, что может привести к аномалиям данных.

Как избежать : неприкосновенность данных не подлежит обсуждению. Проверки Rails обеспечивают согласованность данных до того, как они попадут в базу данных. Полностью понимать нюансы таких методов, как update и update_attribute. Если обход проверок не является однозначно необходимым, придерживайтесь традиционного пути и строго документируйте исключения.

5. Непонимание конвейера активов

Ошибка : конвейер ресурсов Rails спроектирован для оптимизации таких ресурсов, как CSS и JavaScript. Неправильная конфигурация может затруднить доставку активов или отрицательно повлиять на производительность.

Как избежать : углубитесь в работу конвейера ресурсов, чтобы предотвратить сбои при развертывании. Обеспечьте строгий режим предварительной компиляции на этапе производства. Используйте помощники Rails, такие как image_tag, для беспрепятственного связывания ресурсов после оптимизации.

6. Не используйте фоновые задания для трудоемких задач

Ошибка : заставлять пользователей ждать во время выполнения задач в реальном времени, таких как отправка электронной почты, вряд ли является лучшим пользовательским опытом.

Как избежать : веб-приложения должны быть синонимом скорости реагирования. Перенесите ресурсоемкие задачи, такие как вычисление данных или отправка электронной почты, на фоновые задания. Такие инструменты, как Sidekiq или Resque, специально созданы для этих операций, гарантируя, что ваше основное приложение останется гибким и ориентированным на пользователя.

7. Перебор с драгоценными камнями

Ошибка : хотя экосистема Rails может похвастаться богатым набором драгоценных камней, их безразборное добавление может привести к раздуванию приложения и созданию потенциальных угроз безопасности.

Как избежать : Драгоценные камни — это просто фантастика, они предлагают ярлыки для решения неприятных проблем. Но больше не всегда значит лучше. Каждый драгоценный камень, который вы кладете в карман вашего приложения, подобен добавлению еще одного звена в цепочку — оно может быть слабым.

Прежде чем вы решите использовать драгоценный камень, остановитесь и подумайте. Посмотрите, как часто он обновляется, какое у него сообщество поддержки и насколько хорошо он поддерживается.

Если вы хотите помочь в обнаружении уязвимостей, вам могут пригодиться такие инструменты, как Bundler-audit.

8. Не индексировать столбцы базы данных

Ошибка : для оптимальной производительности столбцы базы данных, участвующие в поиске или объединении, нуждаются в индексировании. Игнорирование этого может существенно замедлить работу.

Как этого избежать : по мере того, как ваше приложение взрослеет и наполняется данными, крайне важно, чтобы база данных оставалась гибкой. Думайте об индексировании как о предоставлении вашей базе данных карты, а не о том, что она теряется.

Установите приоритет столбцов, участвующих в соединениях или операциях поиска. А если вы когда-нибудь не уверены, есть такие инструменты, какrails_db, которые могут дать вам общее представление о том, как выполняются ваши запросы.

9. Использование страниц ошибок по умолчанию

Ошибка : хотя страницы ошибок Rails по умолчанию полезны в среде разработки, они могут предоставлять ненужную информацию в рабочей среде и неудобны для пользователя.

Как избежать : В реальном мире производства все дело в балансе между удобством пользователя и безопасностью. Страницы ошибок Standard Rails могут непреднамеренно отображать некоторую конфиденциальную системную информацию.

Кроме того, они не совсем утешают пользователей, которые на них натыкаются. Преобразите свое приложение, разработав индивидуальные страницы ошибок. Они должны быть полезными, незаметными и обнадеживающими, помогая пользователям ориентироваться, не вызывая тревоги.

10. Игнорирование лучших практик безопасности

Ошибка : Rails похож на крепость со множеством встроенных функций безопасности. Но если вы не используете их должным образом, вы можете просто оставить ворота широко открытыми.

Как избежать : Веб-угрозы бывают самых разных форм и размеров – от скрытых SQL-инъекций до вредоносных межсайтовых сценариев. Хотя Rails снабжает вас такими инструментами, как параметризация SQL и токены CSRF, для отражения многих из этих угроз, небольшая ошибка может сделать вас уязвимым.

Такие инструменты, как Brakeman, могут стать вашими верными разведчиками, указывающими на потенциальные угрозы безопасности. Безопасность всегда должна быть главным приоритетом, а регулярные аудиты и проверки могут помочь поддерживать надежный уровень безопасности.

Заключение

Ruby on Rails, невероятно мощный и удобный для разработчиков, не лишен своих сложностей. Избегая вышеперечисленных ошибок, вы встанете на путь создания более эффективных, удобных в сопровождении и безопасных приложений Rails. Помните, что ключ к освоению Rails заключается не только в понимании его особенностей, но также в распознавании и предотвращении потенциальных ошибок.