До Ruby on Rails (или Rails) и до MVC получение и отправка данных из базы данных SQL требовало создания функции, которая передавала строки в соединение, привязывала результаты к функции обратного вызова и, наконец, возвращала результаты. Акт посылки струны казался неприятным и неправильным - даже грязным. Опечатка приведет к ошибке, не говоря уже о том, что вы в основном пишете код на двух разных языках, для двух разных парадигм, чтобы получить один результат. Весь процесс казался незавершенным: как будто это была поспешная попытка решить проблему, с которой столкнулись многие разработчики. Как вы эффективно связываете свое приложение с вашими данными?

Rails использует архитектурный паттерн модель-представление-контроллер (MVC), который отделяет данные и логику от ввода и вывода, эффективно создавая гибкие миграции данных и ускоряя процесс разработки. Но, как отмечает один разработчик, «мы застряли в голосе ООП, наследования и метапрограммирования, которые поощряют ленивое мышление и ленивое программное обеспечение». Возможно, такой самоуверенный объектно-ориентированный язык программирования, как Ruby или Rails, нуждается в капитальном ремонте.

Rails - это старая технология

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

Неоднозначный, похожий на английский синтаксис Ruby, который делает рельсы такими простыми, именно поэтому он непростой.

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

Хуже того, со зрелостью возникает риск застоя. Рубиновое сообщество, а именно создание и использование драгоценных камней, далеко не так близко к чудовищу, как NPM, и теперь, когда NPM объединился с GitHub², они будут только расти.

RubyGems в настоящее время имеет в общей сложности более 55,6 миллиардов загрузок драгоценных камней.

В среднем NPM скачивает около 88 миллиардов пакетов в месяц.

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

По крайней мере, пару лет Ruby больше не интересует. И этого не должно быть - в долгосрочной перспективе я не ожидаю, что языки программирования будут интересными, я хочу, чтобы они были зрелыми, стабильными и надежными. Именно таким я вижу Ruby в 2019 году. С каждым годом все меньше областей, в которых мне нужно обращаться к языкам, отличным от Ruby. Это не так, и я сомневаюсь, что это когда-нибудь станет настоящей «корпоративной» технологией, но когда вам нужно двигаться быстро и быть гибкими, Ruby останется отличным выбором на ближайшие годы.

Филип Теппер, старший инженер, Castle Intelligence

Rails обеспечивает быструю и последовательную разработку

Тем не менее, Ruby и Rails по-прежнему остаются очень популярным фреймворком. Создатель Ruby, «Matz», даже имеет планы относительно того, как Ruby будет выглядеть в следующие 25 лет, поэтому он намерен обеспечить поддержку в течение некоторого времени. Некоторые из крупнейших и влиятельных компаний перешли на Rails. GitHub недавно преобразовал весь свой код в Rails - на это ушли годы. Конкурент GitHub, GitLab, также написал свой код на Rails, отметив, что «экосистема Ruby on Rails позволяет вам формировать большую функциональность с высоким качеством ... Поскольку есть все эти передовые практики, которые находятся на вашем счастливом пути, это также способ сохраняйте последовательность кода, когда вы отправляете что-то вроде GitLab. Вас как бы направляют на то, чтобы поступать правильно ».³

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

«Ruby был оптимизирован для разработчиков, а не для запуска в производственной среде», - говорит Сид, генеральный директор GitLab. В этом и заключается суть Rails: в руках опытного разработчика Rails может стать мощным фреймворком. Как и все фреймворки, языки или парадигмы, Rails имеет свои сильные и слабые стороны (масштабируемость - одна из самых больших слабостей Rails); но где и когда он наиболее силен, он значительно опережает конкурентов. Например, гигант электронной коммерции Shopify решил использовать Rails из-за простоты разработки.

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

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

Что ждет рельсы в будущем?

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

Две новые функции Rails, поставляемые с v6, - это ActionMailbox и ActionText:

  • ActionMailbox предоставляет инструменты, которые позволяют приложениям интегрироваться с электронной почтой новыми прогрессивными способами. Электронные письма могут обмениваться между платформами и могут автоматически превращаться в тикеты или запросы к базе данных.
  • ActionText объединяет текстовый редактор Trix от Basecamp (основателя Ruby on Rails) и использует онлайн-редактирование форматированного текста.

Выводы

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

Тем не менее, может быть способ получше.

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

Источники

  1. https://medium.com/@deathdisco/today-i-accept-that-rails-is-yesterday-s-software-b5af35c9af39
  2. https://github.blog/2020-04-15-npm-has-joined-github/
  3. https://about.gitlab.com/blog/2018/10/29/why-we-use-rails-to-build-gitlab/