Rails 7 (RC1)
И так, 6 декабря 2021 года представлен релиз-кандидат Rails 7. И команда разработки готова в скором времени готова объявить о завершении работы над новой версией Rails 7. С момента альфа версии было исправлено множество проблем.
Если все пойдет по плану, то мы увидим финальный релиз Rails 7 уже в этом, 2021 году.
Frontend
Около пяти лет для работы с JavaScript использовался Webpacker. Теперь настало время двигаться дальше. Стимулом для перехода стали лучшая поддержка браузерами ES6/ESM, широкого внедрения HTTP/2.
Вместе с заменой Turbolinks и Rails UJS на Hotwire и Turbo, теперь будет доступна новая конфигурация для написания современных приложений на Rails. Как обещается, без тысяч зависимостей в node_modules
и борьбы с конфигурацией сборщика.
В то же время улучшена интеграция между Rails и сборщиками JavaScript+CSS, если это необходимо. Созданы два новых гема - jsbundling-rails и cssbundling-rails, с ними вы получаете легкий доступ к использованию esbuild
, rollup.js
, webpack
, tailwind
, postcss
, dart-sass
и bootstrap
.
Шифрование ActiveRecord
В ActiveRecord добавлено шифрование атрибутов. На практике это добавляет дополнительный уровень безопасности при работе с конфиденциальными данными. Например, если злодей получил доступ к базе данных, её резервной копии или журналу приложения, он не сможет использовать зашифрованную информацию. Если не говорить о взломах, то даже при санкционированном доступе к просмотру журналов приложения, конфиденциальная и личная информация клиентов должна быть скрыта.
Важно, что с помощью Active Record Encryption на уровне кода определяется какая информация может считаться конфиденциальной. Это позволяет контролировать доступ и создавать службы.
Отслеживание запросов с использованием тегов
Пакет Marginalia добавлен в ActiveRecord как QueryLogs.
Асинхронные запросы
Если в действии контроллера необходимо выполнить два несвязанных запроса, теперь можно сделать это одновременно с Realtaion#load_async. Теперь запросы можно выполнять параллельно.
Zeitwerk
Zeitwerk теперь является исключительным методом автозагрузки. Это может вызвать проблемы в работе старых приложений. Руководство по обновлению.
Что еще
- Spring больше не включен по умолчанию. Он больше не актуален для современных быстрых компьютеров, разве что только для самых больших приложений
- ActionController::Live#send_stream упрощает потоковую передачу файлов
- При параллельном тестировании будет сравниваться количество ядер CPU с количеством тестов и масштабировать выполнение.
- ActiveStorage по-умолчанию использует
libvips