Заметки о релизе Ruby on Rails 8.0
Ключевые новинки в Rails 8.0:
Ключевые новинки в Rails 8.0:
- Kamal 2.
- Thruster.
- Solid Cable.
- Solid Cache.
- Propshaft по умолчанию.
- Генератор системы аутентификации.
Эти заметки о релизе покрывают только основные изменения. Чтобы узнать о других обновлениях, различных исправлениях программных ошибок и изменениях, обратитесь к логам изменений или к списку коммитов в главном репозитории Rails на GitHub.
Апгрейд до Rails 8.0
Прежде чем апгрейднуть существующее приложение, было бы хорошо иметь перед этим покрытие тестами. Также, до попытки обновиться до Rails 8.0, необходимо сначала произвести апгрейд до Rails 7.2 и убедиться, что приложение все еще выполняется так, как нужно. Список вещей, которые нужно выполнить для апгрейда доступен в руководстве Апгрейд Ruby on Rails.
Основные особенности
Kamal 2
Rails теперь поставляется с предварительно настроенным Kamal 2 для развёртывания вашего приложения. Kamal берет свежий Linux-сервер и превращает его в сервер приложения или вспомогательный сервер с помощью всего одной команды «kamal setup».
Kamal 2 также включает прокси Kamal Proxy, заменяющий универсальный Traefik, использовавшийся на старте.
Thruster
Dockerfile был обновлен и теперь включает новый прокси Thruster, который располагается перед веб-сервером Puma и обеспечивает X-Sendfile-ускорение, кэширование ассетов и их сжатие.
Solid Cable
Solid Cable заменяет Redis в роли pubsub-сервера для трансляции WebSocket-сообщений от приложения клиентам, подключенным к разным процессам. По умолчанию Solid Cable сохраняет отправленные сообщения в базе данных в течение суток.
Solid Cache
Solid Cache заменяет, в частности, Redis или Memcached для хранения HTML-фрагментов кэша.
Solid Queue
Solid Queue устраняет необходимость в Redis, а также в отдельном фреймворке выполнения заданий вроде Resque, Delayed Job или Sidekiq.
Для высокопроизводительных установок он построен на новом механизме FOR UPDATE SKIP LOCKED, впервые представленном в PostgreSQL 9.5, но теперь доступном также в MySQL 8.0 и более новых версиях. Он также работает с SQLite.
Propshaft
Propshaft теперь является pipeline ассетов по умолчанию, заменяя старую систему Sprockets.
Аутентификация
Генератор системы аутентификации создает основу для системы аутентификации, основанной на сессиях, поддерживающей сброс пароля и отслеживание метаданных.
Railties
За подробностями обратитесь к Changelog.
Удалено
-
Удален устаревший
config.read_encrypted_secrets. -
Удален устаревший файл
rails/console/app. -
Удален устаревший файл
rails/console/helpers. -
Удалена устаревшая поддержка расширения консоли Rails через
Rails::ConsoleMethods.
Устарело
-
Устарело требование
"rails/console/methods". -
Устарело изменение
STATS_DIRECTORIESв пользуRails::CodeStatistics.register_directory. -
Устарел
bin/rake statsв пользуbin/rails stats.
Значимые изменения
Regexp.timeoutустановлен в1s по умолчанию для повышения безопасности от атак Regexp Denial-of-Service.
Action Cable
За подробностями обратитесь к Changelog.
Удалено
Устарело
Значимые изменения
Action Pack
За подробностями обратитесь к Changelog.
Удалено
- Удален
Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality.
Устарело
- Устарело определение маршрутов с несколькими путями для ускорения роутинга.
Значимые изменения
- Введён более безопасный и явный метод обработки параметров
params#expect, так чтоparams.expect(table: [ :attr ])заменяетparams.require(:table).permit(:attr).
Action View
За подробностями обратитесь к Changelog.
Удалено
-
Удалена устаревшая поддержка передачи
nilв аргументmodel:методаform_with. -
Удалена устаревшая поддержка передачи содержимого в void-элементы тегов в
tagbuilder.
Устарело
Значимые изменения
Action Mailer
За подробностями обратитесь к Changelog.
Удалено
Устарело
Значимые изменения
Active Record
За подробностями обратитесь к Changelog.
Удалено
-
Удален устаревший
config.active_record.commit_transaction_on_non_local_return. -
Удален устаревший
config.active_record.allow_deprecated_singular_associations_name. -
Удалена устаревшая поддержка поиска адаптеров баз данных, не зарегистрированных в Active Record.
-
Удалена устаревшая поддержка определения
enumс помощью именованных аргументов. -
Удален устаревший
config.active_record.warn_on_records_fetched_greater_than. -
Удален устаревший
config.active_record.sqlite3_deprecated_warning. -
Удален устаревший
ActiveRecord::ConnectionAdapters::ConnectionPool#connection. -
Удалена устаревшая поддержка передачи имени базы данных в
cache_dump_filename. -
Удалена устаревшая поддержка установки
ENV["SCHEMA_CACHE"].
Устарело
- Устарела опция
retriesуSQLite3Adapterв пользуtimeout.
Значимые изменения
- Запуск
db:migrateна свежей базе данных теперь сначала загружает схему, а затем запускает миграции. Последующие вызовы будут запускать только ожидающие миграции. (Если вам нужно прежнее поведение — запуск миграций с нуля вместо загрузки файла схемы — это можно сделать командойdb:migrate:reset, которая удалит и пересоздаст базу данных перед запуском миграций.)
Active Storage
За подробностями обратитесь к Changelog.
Удалено
Устарело
- Устарел Azure-бэкенд для Active Storage.
Значимые изменения
Active Model
За подробностями обратитесь к Changelog.
Удалено
Устарело
Значимые изменения
Active Support
За подробностями обратитесь к Changelog.
Удалено
-
Удален устаревший
ActiveSupport::ProxyObject. -
Удалена устаревшая поддержка установки
attr_internal_naming_formatс префиксом@. -
Удалена устаревшая поддержка передачи массива строк в
ActiveSupport::Deprecation#warn.
Устарело
-
Устарел
Benchmark.ms. -
Устарели сложение и
sinceмежду двумяTimeиActiveSupport::TimeWithZone.
Значимые изменения
Active Job
За подробностями обратитесь к Changelog.
Удалено
- Удален устаревший
config.active_job.use_big_decimal_serializer.
Устарело
-
Устарел
enqueue_after_transaction_commit. -
Устарел внутренний адаптер
SuckerPunchв пользу адаптера, включенного в гемsucker_punch.
Значимые изменения
Action Text
За подробностями обратитесь к Changelog.
Удалено
Устарело
Значимые изменения
Action Mailbox
За подробностями обратитесь к Changelog.
Удалено
Устарело
Значимые изменения
Ruby on Rails Guides
За подробностями обратитесь к Changelog.
Значимые изменения
Credits
Взгляните на полный список контрибьюторов Rails, на людей, которые потратили много часов, сделав Rails стабильнее и надёжнее. Спасибо им всем.