Ключевые новинки в Rails 6.0:
Эти заметки о релизе покрывают только основные изменения. Чтобы узнать о других обновлениях, различных исправлениях программных ошибок и изменениях, обратитесь к логам изменений или к списку коммитов в главном репозитории Rails на GitHub.
Прежде чем апгрейднуть существующее приложение, было бы хорошо иметь перед этим покрытие тестами. Также, до попытки обновиться до Rails 6.0, необходимо сначала произвести апгрейд до Rails 5.2 и убедиться, что приложение все еще выполняется так, как нужно. Список вещей, которые нужно выполнить для апгрейда доступен в руководстве Апгрейд Ruby on Rails.
Action Mailbox позволяет направлять входящие письма в подобные контроллерам почтовые ящики. Подробнее об Action Mailbox можно прочитать в руководстве Основы Action Mailbox.
Action Text добавляет возможность хранения и редактирования обогащенного текста в Rails. Это включает редактор Trix, обрабатывающий все от форматирования до ссылок, цитирования, списков, вложенных изображений и галерей. Содержимое обогащенного текста, сгенерированного редактором Trix, сохраняется в собственной модели RichText, которая связывается с существующими моделями Active Record в приложении. Любые встроенные изображения (или другие вложения) автоматически сохраняются с помощью Active Storage и связываются с включающей моделью RichText.
Подробнее об Action Text можно прочитать в руководстве Обзор Action Text.
Параллельное тестирование позволяет распараллелить тестовый набор. Хотя форк процессов является методом по умолчанию, треды также поддерживаются. Запуск тестов параллельно сокращает время, затрачиваемое на запуск всего тестового набора.
Инструменты тестирования Action Cable позволяют тестировать функционал Action Cable на любом уровне: соединения, каналы, трансляции.
За подробностями обратитесь к Changelog.
Удален устаревший хелпер after_bundle
в шаблонах плагинов.
(Commit)
Удалена устаревшая поддержка config.ru
, использующая класс приложения в качестве аргумента для run
.
(Commit)
Удален устаревший аргумент environment
из команд rails.
(Commit)
Удален устаревший метод capify!
в генераторах и шаблонах.
(Commit)
Удален устаревший config.secret_token
.
(Commit)
Устарела передача имени сервера Rack в качестве обычного аргумента в rails server
.
(Pull Request)
Устарела поддержка использования переменной среды HOST
для определения IP сервера.
(Pull Request)
Устарел доступ к кэшам, возвращаемым config_for
, по не символьным ключам.
(Pull Request)
Добавлена явная опция --using
или -u
для указания сервера для команды rails server
.
(Pull Request)
Добавлена возможность увидеть вывод rails routes
в расширенном формате.
(Pull Request)
Запуск задачи заполнения базы данных с помощью встроенного адаптера Active Job. (Pull Request)
Добавлена команда rails db:system:change
для изменения базы данных приложения.
(Pull Request)
Добавлена команда rails test:channels
для тестирования только каналов Action Cable.
(Pull Request)
Представлена защита против атак перепривязывания DNS. (Pull Request)
Добавлена возможность прерваться при неудаче во время запуска команд генератора. (Pull Request)
Webpacker сделан компилятором JavaScript по умолчанию в Rails 6. (Pull Request)
Добавлена поддержка нескольких баз данных для команды rails db:migrate:status
.
(Pull Request)
Добавлена возможность использования различных путей миграции из нескольких баз данных в генераторах. (Pull Request)
Добавлена поддержка учетных данных для нескольких сред. (Pull Request)
null_store
сделан хранилищем кэша по умолчанию в тестовой среде.
(Pull Request)
За подробностями обратитесь к Changelog.
ActionCable.startDebugging()
и ActionCable.stopDebugging()
с помощью ActionCable.logger.enabled
.
(Pull Request)
Добавлена поддержка опции channel_prefix
для адаптеров подписки PostgreSQL в cable.yml
.
(Pull Request)
Разрешена передача произвольной конфигурации в ActionCable::Server::Base
.
(Pull Request)
Добавлены хуки загрузки :action_cable_connection
и :action_cable_channel
.
(Pull Request)
Добавлены Channel::Base#broadcast_to
и Channel::Base.broadcasting_for
.
(Pull Request)
Закрытие соединения при вызове reject_unauthorized_connection
из ActionCable::Connection
.
(Pull Request)
Пакет Action Cable JavaScript преобразован из CoffeeScript в ES2015, и его исходники опубликованы в npm. (Pull Request)
Конфигурация адаптера WebSocket и адаптера logger перемещена из свойств ActionCable
в ActionCable.adapters
.
(Pull Request)
Добавлена опция id
в адаптере Redis для различения Redis-соединений Action Cable.
(Pull Request)
За подробностями обратитесь к Changelog.
Удален устаревший хелпер fragment_cache_key
в пользу combined_fragment_cache_key
.
(Commit)
Удалены устаревшие методы в ActionDispatch::TestResponse
: #success?
в пользу #successful?
, #missing?
в пользу #not_found?
, #error?
в пользу #server_error?
.
(Commit)
Устарел ActionDispatch::Http::ParameterFilter
в пользу ActiveSupport::ParameterFilter
.
(Pull Request)
Устарел force_ssl
на уровне контроллера в пользу config.force_ssl
.
(Pull Request)
Изменен ActionDispatch::Response#content_type
. возвращающий заголовок Content-Type как есть.
(Pull Request)
Вызывается ArgumentError
, если параметр ресурса содержит двоеточие.
(Pull Request)
Разрешено вызывать ActionDispatch::SystemTestCase.driven_by
с блоком для определения специфичных возможностей браузера.
(Pull Request)
Добавлена промежуточная программа ActionDispatch::HostAuthorization
, защищающая от атак перепривязывания DNS.
(Pull Request)
Разрешено использование parsed_body
в ActionController::TestCase
.
(Pull Request)
Вызывается ArgumentError
, когда существуют несколько корневых маршрутов в том же контексте без использования указаний именования as:
.
(Pull Request)
Разрешено использование #rescue_from
для обработки ошибок парсинга параметра.
(Pull Request)
Добавлен ActionController::Parameters#each_value
для перебора параметров.
(Pull Request)
Имена файлов кодируются в Content-Disposition при send_data
и send_file
.
(Pull Request)
Раскрыт ActionController::Parameters#each_key
.
(Pull Request)
Добавлены метаданные назначения и прекращения внутри подписанных/зашифрованных куки для предотвращения копирования значения из одного в другое куки. (Pull Request)
Вызывается ActionController::RespondToMismatchError
для конфликтующих вызовов respond_to
.
(Pull Request)
Добавлена явная страница ошибки когда отсутствует шаблон для формата запроса. (Pull Request)
Представлен ActionDispatch::DebugExceptions.register_interceptor
, способ вклиниться в DebugExceptions и обработать исключение, перед тем, как оно будет отрендерено.
(Pull Request)
Выводится только один заголовок Content-Security-Policy на запрос. (Pull Request)
Добавлен модуль, специальный для конфигурации Rails для заголовков по умолчанию, который может быть явно включен в контроллерах. (Pull Request)
Добавлен #dig
в ActionDispatch::Request::Session
.
(Pull Request)
За подробностями обратитесь к Changelog.
Удален устаревший хелпер image_alt
.
(Commit)
Убран пустой модуль RecordTagHelper
, функционал которого уже был перенесен в гем record_tag_helper
.
(Commit)
Устарел ActionView::Template.finalize_compiled_template_methods
без замены.
(Pull Request)
Устарел config.action_view.finalize_compiled_template_methods
без замены.
(Pull Request)
Устарел вызов приватных методов модели из хелпера вью options_from_collection_for_select
.
(Pull Request)
Кэш Action View очищается в разработке только при изменении файла, что ускоряет режим разработки. (Pull Request)
Все npm-пакеты Rails перемещены в пространстве имен @rails
.
(Pull Request)
Принимаются только форматы из зарегистрированных типов MIME. (Pull Request, Pull Request)
В вывод сервера о рендере шаблона и партиала добавлены allocations. (Pull Request)
В тег date_select
добавлена опция year_format
, позволяющая настроить имена годов.
(Pull Request)
Для хелпера javascript_include_tag
добавлена опция nonce: true
для поддержки автоматической генерации nonce для Политики безопасности контента.
(Pull Request)
Добавлена конфигурация action_view.finalize_compiled_template_methods
, чтобы включить или отключить финализаторы ActionView::Template
.
(Pull Request)
Вызов JavaScript confirm
извлечен в собственный переопределяемый метод в rails_ujs
.
(Pull Request)
Добавлена конфигурационная опция action_controller.default_enforce_utf8
для управления принуждением кодировки UTF-8. По умолчанию false
.
(Pull Request)
Добавлена поддержка ключей локалей I18n для тегов submit. (Pull Request)
За подробностями обратитесь к Changelog.
Устарел ActionMailer::Base.receive
в пользу Action Mailbox.
(Commit)
Устарели DeliveryJob
и Parameterized::DeliveryJob
в пользу MailDeliveryJob
.
(Pull Request)
Добавлен MailDeliveryJob
для отправки и обычных, и параметризованных писем.
(Pull Request)
Позволена работа произвольных заданий доставки с тестовыми утверждениями Action Mailer. (Pull Request)
Позволено указание имени шаблона для multipart писем с блоками вместо просто имени экшна. (Pull Request)
В полезную нагрузку уведомления deliver.action_mailer
добавлены perform_deliveries
.
(Pull Request)
Улучшено сообщение лога, когда perform_deliveries
является false, чтобы указать, что отправка письма была пропущена.
(Pull Request)
Позволен вызов assert_enqueued_email_with
без блока.
(Pull Request)
Выполняются задания доставки писем из очереди в блоке assert_emails
.
(Pull Request)
ActionMailer::Base
позволено отменять регистрацию обсерверов и перехватчиков.
(Pull Request)
За подробностями обратитесь к Changelog.
Убран устаревший #set_state
из объекта транзакции.
(Commit)
Убран устаревший #supports_statement_cache?
из адаптеров базы данных.
(Commit)
Убран устаревший #insert_fixtures
из адаптеров базы данных.
(Commit)
Убран устаревший ActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type?
.
(Commit)
Убрана поддержка передачи имени столбца в sum
, когда передан блок.
(Commit)
Убрана поддержка передачи имени столбца в count
, когда передан блок.
(Commit)
Убрана поддержка делегации отсутствующих методов в relation к Arel. (Commit)
Убрана поддержка делегации отсутствующих методов в relation к приватным методам класса. (Commit)
Убрана поддержка указания имени временной метки для #cache_key
.
(Commit)
Убран устаревший ActiveRecord::Migrator.migrations_path=
.
(Commit)
Убран устаревший expand_hash_conditions_for_aggregates
.
(Commit)
Устарели сопоставительные сравнения с несоответствующей чувствительностью к регистру для валидатора уникальности. (Commit)
Устарело использование запрашивающих методов, если получающий скоуп утек. (Pull Request)
Устарел config.active_record.sqlite3.represent_boolean_as_integer
.
(Commit)
Устарела передача migrations_paths
в connection.assume_migrated_upto_version
.
(Commit)
Устарел ActiveRecord::Result#to_hash
в пользу ActiveRecord::Result#to_a
.
(Commit)
Устарели методы в DatabaseLimits
: column_name_length
, table_name_length
,
columns_per_table
, indexes_per_table
, columns_per_multicolumn_index
,
sql_query_length
и joins_per_query
.
(Commit)
Устарел update_attributes
/!
в пользу update
/!
.
(Commit)
Установлена минимальная версия гема sqlite3
1.4.
(Pull Request)
Добавлена rails db:prepare
, чтобы создать базу данных, если она не существует, и запустить ее миграции.
(Pull Request)
Добавлен колбэк after_save_commit
в качестве сокращения для after_commit :hook, on: [ :create, :update ]
.
(Pull Request)
Добавлен ActiveRecord::Relation#extract_associated
для извлечения связанных записей из relation.
(Pull Request)
Добавлен ActiveRecord::Relation#annotate
для добавления комментариев SQL в запросы ActiveRecord::Relation.
(Pull Request)
Добавлена поддержка для настройки Optimizer Hints на базах данных. (Pull Request)
Добавлены методы insert_all
/insert_all!
/upsert_all
для выполнения массовых вставок.
(Pull Request)
Добавлена rails db:seed:replant
, которая очищает таблицы каждой базы данных для текущего окружения и загружает сиды.
(Pull Request)
Добавлен метод reselect
, являющийся сокращением для unscope(:select).select(fields)
.
(Pull Request)
Добавлены отрицающие скоупы для всех значений enum. (Pull Request)
Добавлены #destroy_by
и #delete_by
для условных удалений.
(Pull Request)
Добавлена возможность автоматически переключать соединения с базой данной. (Pull Request)
Добавлена возможность предотвращать записи в базу данных на протяжении блока. (Pull Request)
Добавлен API для переключения соединений для поддержки нескольких баз данных. (Pull Request)
Временные метки с точностью сделаны по умолчанию в миграциях. (Pull Request)
Поддерживается опция :size
для изменения размера текста и бинарного объекта в MySQL.
(Pull Request)
Столбцы внешнего ключа и внешнего типа устанавливаются NULL для полиморфных связей при стратегии dependent: :nullify
.
(Pull Request)
Разрешенному экземпляру ActionController::Parameters
разрешается быть переданным в качестве аргумента в ActiveRecord::Relation#exists?
.
(Pull Request)
В #where
добавлена поддержка бесконечных диапазонов, представленных в Ruby 2.6.
(Pull Request)
ROW_FORMAT=DYNAMIC
сделан опцией создания таблиц по умолчанию для MySQL.
(Pull Request)
Добавлена возможность отключить скоупы, генерируемые ActiveRecord.enum
.
(Pull Request)
Неявное упорядочивание для столбца сделано настраиваемым. (Pull Request)
Установлена минимальная версия PostgreSQL как 9.3, отброшена поддержка для 9.1 и 9.2. (Pull Request)
Значения перечисления сделаны замороженными, вызывая ошибку при попытке их изменить. (Pull Request)
SQL ошибок ActiveRecord::StatementInvalid
сделан свойством ошибки, и подстановки в SQL отдельным свойством ошибки.
(Pull Request)
В create_table
добавлена опция :if_not_exists
.
(Pull Request)
Добавлена поддержка нескольких баз данных в rails db:schema:cache:dump
и rails db:schema:cache:clear
.
(Pull Request)
Добавлена поддержка хэшей и конфигов url в хэше базы данных ActiveRecord::Base.connected_to
.
(Pull Request)
Добавлена поддержка для выражений по умолчанию и индексов выражений для MySQL. (Pull Request)
Добавлена опция index
для хелперов миграции change_table
.
(Pull Request)
Починен откат transaction
для миграций. Ранее команды внутри transaction
в откатываемой миграции запускались не в обратном порядке. Изменение чинит это.
(Pull Request)
Разрешено настраивать ActiveRecord::Base.configurations=
с помощью символьного хэша.
(Pull Request)
Починен кэш счетчика, чтобы он обновлялся, только когда запись фактически сохраняется. (Pull Request)
Добавлена поддержка индексов выражений для адаптера SQLite. (Pull Request)
Подклассам разрешено переопределять колбэки автоматического сохранения для связанных записей. (Pull Request)
Установлена минимальная версия MySQL как 5.5.8. (Pull Request)
В MySQL используется кодировка по умолчанию utf8mb4. (Pull Request)
Добавлена возможность фильтровать чувствительные данные в #inspect
(Pull Request, Pull Request)
Изменен ActiveRecord::Base.configurations
, чтобы возвращать объект вместо хэша.
(Pull Request)
Добавлена настройка базы данных, чтобы отключать рекомендательные блокировки. (Pull Request)
Обновлен метод адаптера SQLite3 alter_table
, чтобы восстанавливались внешние ключи.
(Pull Request)
Опции :to_table
метода remove_foreign_key
разрешено быть откатанной.
(Pull Request)
Починено значение по умолчанию для типов времени MySQL с указанной точностью. (Pull Request)
Починена опция touch
, чтобы вести себя в соответствии с методом Persistence#touch
.
(Pull Request)
Вызывается исключение для определений дубликата столбца в миграциях. (Pull Request)
Установлена минимальная версия SQLite как 3.8. (Pull Request)
Починено, что родительские записи не сохранялись с дубликатами дочерних записей. (Pull Request)
Гарантируется, что Associations::CollectionAssociation#size
и Associations::CollectionAssociation#empty?
используют загруженные связи, если они присутствуют.
(Pull Request)
Добавлена поддержка предварительной загрузки полиморфных связей, когда не у всех записей имеются требуемые связи. (Commit)
В ActiveRecord::Relation
добавлен метод touch_all
.
(Pull Request)
Добавлен предикат ActiveRecord::Base.base_class?
.
(Pull Request)
Добавлены опции пользовательского префикса/суффикса в ActiveRecord::Store.store_accessor
.
(Pull Request)
Добавлены ActiveRecord::Base.create_or_find_by
/!
, чтобы разобраться с SELECT/INSERT состоянием гонки в ActiveRecord::Base.find_or_create_by
/!
на основе ограничений уникальности в базе данных.
(Pull Request)
Добавлен Relation#pick
в качестве сокращения для pluck одиночного значения.
(Pull Request)
За подробностями обратитесь к Changelog.
Устарел config.active_storage.queue
в пользу config.active_storage.queues.analysis
и config.active_storage.queues.purge
.
(Pull Request)
Устарел ActiveStorage::Downloading
в пользу ActiveStorage::Blob#open
.
(Commit)
Устарело непосредственное использование mini_magick
для генерации вариантов изображения в пользу image_processing
.
(Commit)
Устарела :combine_options
в преобразователе ImageProcessing в Active Storage без замены.
(Commit)
Добавлена поддержка для генерации вариантов изображения BMP. (Pull Request)
Добавлена поддержка для генерации вариантов изображения TIFF. (Pull Request)
Добавлена поддержка для генерации вариантов изображения прогрессивного JPEG. (Pull Request)
Добавлен ActiveStorage.routes_prefix
для настройки генерируемых маршрутов Active Storage.
(Pull Request)
В ActiveStorage::DiskController#show
генерируется отклик 404 Not Found, когда запрашиваемый файл отсутствует на дисковом сервисе.
(Pull Request)
Для ActiveStorage::Blob#download
и ActiveStorage::Blob#open
вызывается ActiveStorage::FileNotFoundError
, когда запрашиваемый файл отсутствует.
(Pull Request)
Добавлен общий класс ActiveStorage::Error
, от которого наследуются исключения Active Storage.
(Commit)
Файлы модели, предназначенные для хранения, сохраняются, когда сохраняется модель, а не немедленно. (Pull Request)
Существующие изображения опционально заменяются вместо добавления к ним при присвоении к коллекции вложений (как в @user.update!(images: [ … ])
). Используйте config.active_storage.replace_on_assign_to_many
для контроля этого поведения.
(Pull Request,
Pull Request)
Добавлена способность отражать на определенных вложениях с помощью существующего механизма отражения Active Record. (Pull Request)
Добавлен ActiveStorage::Blob#open
, который загружает бинарный объект во временный файл на диске, и передает этот временный файл.
(Commit)
Поддержка потоковых загрузок из Google Cloud Storage. Требуется версия 1.11+ гема google-cloud-storage
.
(Pull Request)
Использован гем image_processing
для вариантов Active Storage. Это заменяет непосредственное использование mini_magick
.
(Pull Request)
За подробностями обратитесь к Changelog.
Добавлена конфигурационная опция для настройки формата ActiveModel::Errors#full_message
.
(Pull Request)
Добавлена поддержка настройки имени атрибута для has_secure_password
.
(Pull Request)
В ActiveModel::Errors
добавлен метод #slice!
.
(Pull Request)
Добавлен ActiveModel::Errors#of_kind?
для проверки существования конкретной ошибки.
(Pull Request)
Починен метод ActiveModel::Serializers::JSON#as_json
для временных меток.
(Pull Request)
Починен валидатор численности, чтобы использовать значение до приведения типов, кроме Active Record. (Pull Request)
Починена валидация равенства численности для BigDecimal
и Float
, приводя к BigDecimal
обе стороны валидации.
(Pull Request)
Починено значение года при приведении многопараметрового хэша времени. (Pull Request)
Ложные булевы символы на булевых атрибутах приводятся как false. (Pull Request)
Возвращается правильная дата при конвертировании параметров в value_from_multiparameter_assignment
для ActiveModel::Type::Date
.
(Pull Request)
Берется родительская локаль, перед тем как взять пространство имен :errors
при извлечении переводов ошибки.
(Pull Request)
За подробностями обратитесь к Changelog.
Удален устаревший метод #acronym_regex
из Inflections
.
(Commit)
Удален устаревший метод Module#reachable?
.
(Commit)
Удален Kernel#`
без каких-либо замен.
(Pull Request)
Устарело использование отрицательных числовых аргументов для String#first
и String#last
.
(Pull Request)
Устарел ActiveSupport::Multibyte::Unicode#downcase/upcase/swapcase
в пользу String#downcase/upcase/swapcase
.
(Pull Request)
Устарели ActiveSupport::Multibyte::Unicode#normalize
и ActiveSupport::Multibyte::Chars#normalize
в пользу String#unicode_normalize
.
(Pull Request)
Устарел ActiveSupport::Multibyte::Chars.consumes?
в пользу String#is_utf8?
.
(Pull Request)
Устарели ActiveSupport::Multibyte::Unicode#pack_graphemes(array)
и ActiveSupport::Multibyte::Unicode#unpack_graphemes(string)
в пользу array.flatten.pack("U*")
и string.scan(/\X/).map(&:codepoints)
соответственно.
(Pull Request)
Добавлена поддержка параллельного тестирования. (Pull Request)
Обеспечивается, что String#strip_heredoc
сохраняет замороженность строк.
(Pull Request)
Добавлен String#truncate_bytes
для обрезания строки до максимального байтового размера без разбивания многобайтовых символов или кластеров графемы.
(Pull Request)
В метод delegate
добавлена опция private
, чтобы делегировать к приватным методам. Эта опция принимает значения true/false
.
(Pull Request)
Добавлена поддержка переводов с помощью I18n для ActiveSupport::Inflector#ordinal
и ActiveSupport::Inflector#ordinalize
.
(Pull Request)
В Date
, DateTime
, Time
и TimeWithZone
добавлены методы before?
и after?
.
(Pull Request)
Починена ошибка, когда URI.unescape
мог упасть при смешанном Unicode/escaped символьном вводе.
(Pull Request)
Починена ошибка, когда ActiveSupport::Cache
мог сильно раздуть размер хранилища, когда включено сжатие.
(Pull Request)
Хранилище кэша Redis: delete_matched
больше не блокирует сервер Redis.
(Pull Request)
Починена ошибка, когда ActiveSupport::TimeZone.all
мог упасть, когда отсутствовали данные tzinfo для любой временной зоны, определенной в ActiveSupport::TimeZone::MAPPING
.
(Pull Request)
Добавлен Enumerable#index_with
, позволяющий создать хэш из перечисления с помощью значения из переданного блока или аргумента по умолчанию.
(Pull Request)
Методам Range#===
и Range#cover?
разрешено работать с аргументом Range
.
(Pull Request)
Поддерживается устаревание ключа в операциях increment/decrement
в RedisCacheStore.
(Pull Request)
В события подписчика лога добавлены время cpu, время простоя и особенности аллокаций. (Pull Request)
В систему нотификаций Active Support добавлена поддержка объекта события. (Pull Request)
Добавлена поддержка для отсутствия кэширования вхождений nil
, с помощью новой опции skip_nil
для ActiveSupport::Cache#fetch
.
(Pull Request)
Добавлен метод Array#extract!
, убирающий и возвращающий элементы, для которых блок возвращает истинное значение.
(Pull Request)
HTML-безопасная строка остается HTML-безопасной после нарезки (slice). (Pull Request)
Добавлена поддержка отслеживания автозагрузки констант с помощью логирования. (Commit)
Определен unfreeze_time
в качестве псевдонима для travel_back
.
(Pull Request)
Изменен ActiveSupport::TaggedLogging.new
, чтобы возвращался экземпляр нового логгера вместо мутации полученного в качестве аргумента.
(Pull Request)
Методы #delete_prefix
, #delete_suffix
и #unicode_normalize
трактуются не как HTML-безопасные.
(Pull Request)
Починена ошибка, когда #without
для ActiveSupport::HashWithIndifferentAccess
падал с символьными аргументам.
(Pull Request)
Переименованы Module#parent
, Module#parents
и Module#parent_name
в module_parent
, module_parents
и module_parent_name
.
(Pull Request)
Добавлен ActiveSupport::ParameterFilter
.
(Pull Request)
Починена проблема, когда продолжительность округлялась до полной секунды, когда float добавлялось к продолжительности. (Pull Request)
#to_options
сделан псевдонимом #symbolize_keys
в ActiveSupport::HashWithIndifferentAccess
.
(Pull Request)
БОльше не вызывается ошибка, если тот же самый блок включается несколько раз для Concern. (Pull Request)
Сохраняется порядок ключей, переданных в ActiveSupport::CacheStore#fetch_multi
.
(Pull Request)
Починен String#safe_constantize
, чтобы не вызывалась LoadError
для ссылок на константу в некорректном регистре.
(Pull Request)
Добавлены Hash#deep_transform_values
и Hash#deep_transform_values!
.
(Commit)
Добавлен ActiveSupport::HashWithIndifferentAccess#assoc
.
(Pull Request)
Добавлен колбэк before_reset
в CurrentAttributes
и симметрично определен after_reset
как псевдоним resets
.
(Pull Request)
Пересмотрен ActiveSupport::Notifications.unsubscribe
, чтобы корректно обрабатывать Regex или другие multiple-pattern подписчики.
(Pull Request)
Добавлен новый механизм автозагрузки с помощью Zeitwerk. (Commit)
Добавлены Array#including
и Enumerable#including
для удобства увеличения коллекции.
(Commit)
Переименованы Array#without
и Enumerable#without
в Array#excluding
и Enumerable#excluding
. Старые имена методов оставлены в качестве псевдонимов.
(Commit)
Добавлена поддержка доставления locale
в transliterate
и parameterize
.
(Pull Request)
Починен Time#advance
для работы с датами до 1001-03-07.
(Pull Request)
Обновлен ActiveSupport::Notifications::Instrumenter#instrument
. чтобы позволить не передавать блок.
(Pull Request)
В трекере потомков используются слабые ссылки, чтобы позволить анонимным подклассам быть собранным сборщиком мусора. (Pull Request)
Вызов тестовых методов с помощью метода with_info_handler
, чтобы позволить работать плагинам minitest-hooks.
(Commit)
Сохраняется статус html_safe?
на ActiveSupport::SafeBuffer#*
.
(Pull Request)
За подробностями обратитесь к Changelog.
Добавлена поддержка пользовательских сериализаторов для аргументов Active Job. (Pull Request)
Добавлена поддержка для запуска Active Jobs во временной зоне, в которой они были поставлены в очередь. (Pull Request)
Разрешена передача нескольких исключений в retry_on
/discard_on
.
(Commit)
Разрешен вызов assert_enqueued_with
и assert_enqueued_email_with
без блока.
(Pull Request)
Уведомления для enqueue
и enqueue_at
обернуты в колбэк around_enqueue
вместо колбэка after_enqueue
.
(Pull Request)
Разрешен вызов perform_enqueued_jobs
без блока.
(Pull Request)
Разрешен вызов assert_performed_with
без блока.
(Pull Request)
Добавлена опция :queue
к хелперам и утверждениям задач.
(Pull Request)
Добавлены хуки вокруг попыток и отмен Active Job. (Pull Request)
Добавлен способ тестирования для набора аргументов при выполнении задач. (Pull Request)
В задания, возвращаемых тестовыми хелперами Active Job, включаются десериализованные аргументы. (Pull Request)
Хелперам утверждений Active Job разрешается принимать Proc для ключевого слова only
.
(Pull Request)
В хелперах утверждений отбрасываются микросекунды и наносекунды из аргументов задачи. (Pull Request)
За подробностями обратитесь к Changelog.
Добавлено руководство по нескольким базам данных с Active Record. (Pull Request)
Добавлен раздел о разрешении проблем автозагрузки констант. (Commit)
Добавлено руководство по основам Action Mailbox. (Pull Request)
Добавлено обзорное руководство по Action Text. (Pull Request)
Взгляните на полный список контрибьюторов Rails, на людей, которые потратили много часов, сделав Rails стабильнее и надёжнее. Спасибо им всем.