1 升级到 Rails 6.0
如果你要升级现有的应用程序,在升级之前拥有良好的测试覆盖率是一个好主意。你还应该先升级到 Rails 5.2(如果你还没有),并确保你的应用程序在尝试升级到 Rails 6.0 之前能够按预期运行。升级时需要注意的事项列表可以在 升级 Ruby on Rails 指南中找到。
2 主要功能
2.1 Action Mailbox
Action Mailbox 允许你将传入的电子邮件路由到类似控制器的邮箱。你可以在 Action Mailbox 基础 指南中了解更多关于 Action Mailbox 的信息。
2.2 Action Text
Action Text 为 Rails 带来了富文本内容和编辑功能。它包含 Trix 编辑器,可以处理从格式化到链接、引号、列表、嵌入图像和画廊的所有内容。Trix 编辑器生成的富文本内容保存在它自己的 RichText 模型中,该模型与应用程序中任何现有的 Active Record 模型相关联。任何嵌入的图像(或其他附件)都会自动使用 Active Storage 存储,并与包含的 RichText 模型相关联。
你可以在 Action Text 概述 指南中了解更多关于 Action Text 的信息。
2.3 并行测试
并行测试 允许你将测试套件并行化。虽然默认方法是派生进程,但也支持线程。并行运行测试可以减少整个测试套件的运行时间。
2.4 Action Cable 测试
Action Cable 测试工具 允许你测试 Action Cable 功能的各个级别:连接、通道、广播。
3 Railties
有关详细的变更,请参阅 变更日志。
3.1 移除
移除插件模板中已弃用的
after_bundle
助手。(提交)移除对使用应用程序类作为
run
的参数的config.ru
的已弃用支持。(提交)移除 rails 命令中已弃用的
environment
参数。(提交)移除生成器和模板中已弃用的
capify!
方法。(提交)移除已弃用的
config.secret_token
。(提交)
3.2 弃用
弃用将 Rack 服务器名称作为常规参数传递给
rails server
的做法。(拉取请求)弃用使用
HOST
环境变量来指定服务器 IP 的做法。(拉取请求)弃用通过非符号键访问
config_for
返回的哈希表。(拉取请求)
3.3 显著变更
为
rails server
命令添加了显式选项--using
或-u
,用于指定服务器。(拉取请求)添加了在扩展格式下查看
rails routes
输出的能力。(拉取请求)使用内联 Active Job 适配器运行种子数据库任务。(拉取请求)
添加了
rails db:system:change
命令,用于更改应用程序的数据库。(拉取请求)添加了
rails test:channels
命令,用于仅测试 Action Cable 通道。(拉取请求)引入了针对 DNS 重绑定攻击的防护机制。(拉取请求)
添加了在运行生成器命令时,在失败时中止的能力。(拉取请求)
使 Webpacker 成为 Rails 6 的默认 JavaScript 编译器。(拉取请求)
为
rails db:migrate:status
命令添加了多个数据库支持。(拉取请求)添加了在生成器中从多个数据库使用不同迁移路径的能力。(拉取请求)
添加了对多环境凭据的支持。(拉取请求)
在测试环境中将
null_store
作为默认缓存存储。(拉取请求)
4 Action Cable
有关详细的变更,请参阅 变更日志。
4.1 移除
- 将
ActionCable.startDebugging()
和ActionCable.stopDebugging()
替换为ActionCable.logger.enabled
。(拉取请求)
4.2 弃用
- Rails 6.0 中 Action Cable 没有弃用。
4.3 显著变更
为
cable.yml
中的 PostgreSQL 订阅适配器添加了对channel_prefix
选项的支持。(拉取请求)允许将自定义配置传递给
ActionCable::Server::Base
。(拉取请求)添加了
:action_cable_connection
和:action_cable_channel
加载钩子。(拉取请求)添加了
Channel::Base#broadcast_to
和Channel::Base.broadcasting_for
。(拉取请求)在
ActionCable::Connection
中调用reject_unauthorized_connection
时,关闭连接。(拉取请求)将 Action Cable JavaScript 包从 CoffeeScript 转换为 ES2015,并在 npm 分发中发布源代码。(拉取请求)
将 WebSocket 适配器和日志适配器的配置从
ActionCable
的属性移动到ActionCable.adapters
。(拉取请求)为 Redis 适配器添加了
id
选项,以区分 Action Cable 的 Redis 连接。(拉取请求)
5 Action Pack
有关详细的变更,请参阅 变更日志。
5.1 移除
移除已弃用的
fragment_cache_key
助手,转而使用combined_fragment_cache_key
。(提交)移除 `ActionDispatch::TestResponse` 中已弃用的方法:将 `#success?` 替换为 `#successful?`,将 `#missing?` 替换为 `#not_found?`,将 `#error?` 替换为 `#server_error?`。 (提交)
5.2 已弃用功能
将 `ActionDispatch::Http::ParameterFilter` 弃用,推荐使用 `ActiveSupport::ParameterFilter`。 (拉取请求)
将控制器级别的 `force_ssl` 弃用,推荐使用 `config.force_ssl`。 (拉取请求)
5.3 重要变更
将 `ActionDispatch::Response#content_type` 返回值更改为 Content-Type 头部值。 (拉取请求)
如果资源参数包含冒号,则抛出 `ArgumentError`。 (拉取请求)
允许 `ActionDispatch::SystemTestCase.driven_by` 使用代码块定义特定浏览器功能。 (拉取请求)
添加 `ActionDispatch::HostAuthorization` 中间件,用于防御 DNS 重绑定攻击。 (拉取请求)
允许在 `ActionController::TestCase` 中使用 `parsed_body`。 (拉取请求)
当在同一上下文中存在多个根路由且未指定 `as:` 命名规范时,抛出 `ArgumentError`。 (拉取请求)
允许使用 `#rescue_from` 处理参数解析错误。 (拉取请求)
添加 `ActionController::Parameters#each_value` 用于遍历参数。 (拉取请求)
对 `send_data` 和 `send_file` 中的 Content-Disposition 文件名进行编码。 (拉取请求)
公开 `ActionController::Parameters#each_key`。 (拉取请求)
在签署/加密的 Cookie 中添加目的和过期元数据,以防止将 Cookie 的值复制到彼此之间。 (拉取请求)
对于冲突的 `respond_to` 调用,抛出 `ActionController::RespondToMismatchError`。 (拉取请求)
添加一个显式错误页面,用于处理请求格式缺失模板的情况。 (拉取请求)
引入 `ActionDispatch::DebugExceptions.register_interceptor`,一种在渲染前挂钩到 DebugExceptions 并处理异常的方法。 (拉取请求)
每个请求只输出一个 Content-Security-Policy nonce 头部值。 (拉取请求)
添加一个专门用于 Rails 默认头配置的模块,可以显式地包含在控制器中。 (拉取请求)
添加 `#dig` 到 `ActionDispatch::Request::Session`。 (拉取请求)
6 Action View
有关详细更改,请参阅 变更日志。
6.1 移除功能
6.2 已弃用功能
将 `ActionView::Template.finalize_compiled_template_methods` 弃用,没有替换方案。 (拉取请求)
将 `config.action_view.finalize_compiled_template_methods` 弃用,没有替换方案。 (拉取请求)
将从 `options_from_collection_for_select` 视图辅助方法调用私有模型方法的行为弃用。 (拉取请求)
6.3 重要变更
仅在开发模式下,当文件发生更改时清除 Action View 缓存,从而加快开发模式的速度。 (拉取请求)
将所有 Rails npm 包移至 `@rails` 命名空间。 (拉取请求)
将分配添加到模板和部分渲染的服务器输出。 (拉取请求)
为 `date_select` 标签添加 `year_format` 选项,使其能够自定义年份名称。 (拉取请求)
为 `javascript_include_tag` 辅助方法添加 `nonce: true` 选项,以支持自动为内容安全策略生成 nonce。 (拉取请求)
添加 `action_view.finalize_compiled_template_methods` 配置,用于禁用或启用 `ActionView::Template` 终结器。 (拉取请求)
将 JavaScript `confirm` 调用提取到 `rails_ujs` 中的独立且可覆盖的方法。 (拉取请求)
添加 `action_controller.default_enforce_utf8` 配置选项,用于处理强制 UTF-8 编码。默认值为 `false`。 (拉取请求)
为提交标签添加对区域设置键的 I18n 键样式支持。 (拉取请求)
7 Action Mailer
有关详细更改,请参阅 变更日志。
7.1 移除功能
7.2 已弃用功能
将 `ActionMailer::Base.receive` 弃用,推荐使用 Action Mailbox。 (提交)
将 `DeliveryJob` 和 `Parameterized::DeliveryJob` 弃用,推荐使用 `MailDeliveryJob`。 (拉取请求)
7.3 重要变更
添加 `MailDeliveryJob` 用于发送普通邮件和参数化邮件。 (拉取请求)
允许自定义电子邮件发送作业与 Action Mailer 测试断言一起使用。 (拉取请求)
允许为具有代码块的多部分电子邮件指定模板名称,而不仅仅是使用操作名称。 (拉取请求)
将 `perform_deliveries` 添加到 `deliver.action_mailer` 通知的消息负载中。 (拉取请求)
当 `perform_deliveries` 为 false 时,改进日志消息,以指示邮件发送已跳过。 (拉取请求)
允许在不使用代码块的情况下调用 `assert_enqueued_email_with`。 (拉取请求)
在 `assert_emails` 代码块中执行排队的邮件发送作业。 (拉取请求)
允许 `ActionMailer::Base` 取消注册观察者和拦截器。 (拉取请求)
8 Active Record
有关详细更改,请参阅 变更日志。
8.1 移除功能
移除事务对象中已弃用的 `#set_state`。 (提交)
移除数据库适配器中已弃用的 `#supports_statement_cache?`。 (提交)
移除数据库适配器中已弃用的 `#insert_fixtures`。 (提交)
移除已弃用的 `ActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type?`。 (提交)
移除在传递代码块时向 `sum` 传递列名的支持。 (提交)
移除在传递代码块时向 `count` 传递列名的支持。 (提交)
移除将关系中缺失的方法委托给 Arel 的支持。 (提交)
移除将关系中缺失的方法委托给类中私有方法的支持。 (提交)
移除为 `#cache_key` 指定时间戳名称的支持。 (提交)
移除已弃用的 `ActiveRecord::Migrator.migrations_path=`。 (提交)
移除已弃用的 `expand_hash_conditions_for_aggregates`。 (提交)
8.2 已弃用功能
将不匹配的大小写敏感排序规则比较用于唯一性验证器的情况弃用。 (提交)
如果接收者范围已泄漏,则将使用类级别查询方法的行为弃用。 (拉取请求)
将 `config.active_record.sqlite3.represent_boolean_as_integer` 弃用。 (提交)
将向 `connection.assume_migrated_upto_version` 传递 `migrations_paths` 的行为弃用。 (提交)
将 `ActiveRecord::Result#to_hash` 弃用,推荐使用 `ActiveRecord::Result#to_a`。 (提交)
将 `DatabaseLimits` 中的方法弃用:`column_name_length`、`table_name_length`、`columns_per_table`、`indexes_per_table`、`columns_per_multicolumn_index`、`sql_query_length` 和 `joins_per_query`。 (提交)
将 `update_attributes` / `!` 弃用,推荐使用 `update` / `!`。 (提交)
8.3 重要变更
将 `sqlite3` gem 的最低版本升级至 1.4。 (拉取请求)
添加 `rails db:prepare` 用于在数据库不存在时创建数据库并运行其迁移。 (拉取请求)
添加 `after_save_commit` 回调作为 `after_commit :hook, on: [ :create, :update ]` 的快捷方式。 (拉取请求)
添加 `ActiveRecord::Relation#extract_associated` 用于从关系中提取关联记录。 (拉取请求)
添加 `ActiveRecord::Relation#annotate` 用于向 ActiveRecord::Relation 查询添加 SQL 注释。 (拉取请求)
添加对在数据库上设置优化器提示的支持。 (拉取请求)
添加 `insert_all` / `insert_all!` / `upsert_all` 方法用于执行批量插入操作。 (拉取请求)
添加 `rails db:seed:replant` 命令,该命令将截断当前环境中每个数据库的表并加载种子数据。(Pull Request)
添加 `reselect` 方法,它是 `unscope(:select).select(fields)` 的简写。(Pull Request)
为所有枚举值添加负作用域。(Pull Request)
添加 `#destroy_by` 和 `#delete_by` 方法用于条件删除。(Pull Request)
添加自动切换数据库连接的功能。(Pull Request)
添加阻止块执行期间防止写入数据库的功能。(Pull Request)
添加用于切换连接以支持多个数据库的 API。(Pull Request)
使具有精度的 timestamps 成为迁移的默认值。(Pull Request)
支持 `:size` 选项在 MySQL 中更改文本和 Blob 的大小。(Pull Request)
在 `dependent: :nullify` 策略上,将多态关联的外部键和外部类型列都设置为 NULL。(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)
使 `ActiveRecord::StatementInvalid` 错误的 SQL 成为其自己的错误属性,并将 SQL 绑定作为单独的错误属性包含在内。(Pull Request)
在 `create_table` 中添加 `:if_not_exists` 选项。(Pull Request)
在 `rails db:schema:cache:dump` 和 `rails db:schema:cache:clear` 中添加对多个数据库的支持。(Pull Request)
在 `ActiveRecord::Base.connected_to` 的数据库哈希中添加对哈希和 URL 配置的支持。(Pull Request)
添加对 MySQL 的默认表达式和表达式索引的支持。(Pull Request)
在 `change_table` 迁移助手添加 `index` 选项。(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)
允许 `remove_foreign_key` 的 `:to_table` 选项可逆。(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?` 在存在时使用加载的关联 ID。(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` / `!` 来处理 `ActiveRecord::Base.find_or_create_by` / `!` 中的 SELECT/INSERT 竞争条件,方法是依赖于数据库中的唯一约束。(Pull Request)
添加 `Relation#pick` 作为单值提取的简写。(Pull Request)
9 Active Storage
请参阅 变更日志 以获取详细的更改。
9.1 删除
9.2 弃用
弃用 `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)
弃用 Active Storage 的 ImageProcessing 变换器中的 `:combine_options`,没有替代。(Commit)
9.3 值得注意的更改
添加支持生成 BMP 图像变体。(Pull Request)
添加支持生成 TIFF 图像变体。(Pull Request)
添加支持生成渐进式 JPEG 图像变体。(Pull Request)
添加 `ActiveStorage.routes_prefix` 用于配置 Active Storage 生成的路由。(Pull Request)
当请求的文件在磁盘服务中丢失时,在 `ActiveStorage::DiskController#show` 上生成 404 未找到响应。(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`,该方法将 Blob 下载到磁盘上的临时文件并生成该临时文件。(Commit)
支持从 Google Cloud Storage 流式下载。需要版本 1.11+ 的 `google-cloud-storage` gem。(Pull Request)
对 Active Storage 变体使用 `image_processing` gem。这取代了直接使用 `mini_magick`。(Pull Request)
10 Active Model
请参阅 变更日志 以获取详细的更改。
10.1 删除
10.2 弃用
10.3 值得注意的更改
添加一个配置选项来自定义 `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` 来修复 `BigDecimal` 和 `Float` 的数字相等性验证。(Pull Request)
修复在转换多参数时间哈希时年的值。(Pull Request)
将布尔属性上的虚假布尔符号类型转换为 false。(Pull Request)
在 `ActiveModel::Type::Date` 的 `value_from_multiparameter_assignment` 中转换参数时,返回正确的日期。(Pull Request)
在回退到 `:errors` 命名空间之前,回退到父语言环境以获取错误翻译。(Pull Request)
11 Active Support
请参阅 变更日志 以获取详细的更改。
11.1 删除
从 `Inflections` 中删除弃用的 `#acronym_regex` 方法。(Commit)
删除弃用的 `Module#reachable?` 方法。(Commit)
删除 `Kernel#`,没有任何替代。(Pull Request)
11.2 弃用
弃用 `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)
11.3 值得注意的变更
添加对并行测试的支持。 (Pull Request)
确保
String#strip_heredoc
保留字符串的冻结状态。 (Pull Request)添加
String#truncate_bytes
用于将字符串截断到最大字节数,而不会破坏多字节字符或字素集群。 (Pull Request)在
delegate
方法中添加private
选项,用于委托到私有方法。该选项接受true/false
作为值。 (Pull Request)添加对
ActiveSupport::Inflector#ordinal
和ActiveSupport::Inflector#ordinalize
的 I18n 国际化翻译支持。 (Pull Request)在
Date
、DateTime
、Time
和TimeWithZone
中添加before?
和after?
方法。 (Pull Request)修复了
URI.unescape
在混合 Unicode/转义字符输入时会失败的错误。 (Pull Request)修复了
ActiveSupport::Cache
在启用压缩时会导致存储大小大幅膨胀的错误。 (Pull Request)Redis 缓存存储:
delete_matched
不会再阻塞 Redis 服务器。 (Pull Request)修复了
ActiveSupport::TimeZone.all
在ActiveSupport::TimeZone::MAPPING
中定义的任何时区缺少 tzinfo 数据时会失败的错误。 (Pull Request)添加
Enumerable#index_with
,它允许使用传递的代码块或默认参数从枚举器创建哈希。 (Pull Request)允许
Range#===
和Range#cover?
方法使用Range
参数。 (Pull Request)支持 RedisCacheStore 的
increment/decrement
操作中的键过期。 (Pull Request)在日志订阅者事件中添加 CPU 时间、空闲时间和分配功能。 (Pull Request)
在 Active Support 通知系统中添加对事件对象的支持。 (Pull Request)
通过为
ActiveSupport::Cache#fetch
引入新选项skip_nil
添加对不缓存nil
条目的支持。 (Pull Request)添加
Array#extract!
方法,该方法删除并返回代码块返回真值的元素。 (Pull Request)在切片后保持 HTML 安全字符串的 HTML 安全状态。 (Pull Request)
添加对通过日志跟踪常量自动加载的支持。 (Commit)
将
unfreeze_time
定义为travel_back
的别名。 (Pull Request)将
ActiveSupport::TaggedLogging.new
更改为返回一个新的日志记录器实例,而不是修改作为参数接收的实例。 (Pull Request)将
#delete_prefix
、#delete_suffix
和#unicode_normalize
方法视为非 HTML 安全方法。 (Pull Request)修复了
ActiveSupport::HashWithIndifferentAccess
的#without
在使用符号参数时会失败的错误。 (Pull Request)将
Module#parent
、Module#parents
和Module#parent_name
重命名为module_parent
、module_parents
和module_parent_name
。 (Pull Request)添加
ActiveSupport::ParameterFilter
。 (Pull Request)修复了在将浮点数添加到持续时间时持续时间被舍入到整秒的问题。 (Pull Request)
在
ActiveSupport::HashWithIndifferentAccess
中将#to_options
设为#symbolize_keys
的别名。 (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)在
CurrentAttributes
中添加before_reset
回调,并为对称性定义after_reset
作为resets
的别名。 (Pull Request)修改
ActiveSupport::Notifications.unsubscribe
以正确处理正则表达式或其他多模式订阅者。 (Pull Request)添加使用 Zeitwerk 的新自动加载机制。 (Commit)
添加
Array#including
和Enumerable#including
以方便地扩展集合。 (Commit)将
Array#without
和Enumerable#without
重命名为Array#excluding
和Enumerable#excluding
。保留旧方法名作为别名。 (Commit)添加对向
transliterate
和parameterize
提供locale
的支持。 (Pull Request)修复了
Time#advance
在处理 1001-03-07 之前日期时的问题。 (Pull Request)更新
ActiveSupport::Notifications::Instrumenter#instrument
以允许不传递代码块。 (Pull Request)在子类跟踪器中使用弱引用,允许匿名子类进行垃圾回收。 (Pull Request)
使用
with_info_handler
方法调用测试方法,以允许 minitest-hooks 插件工作。 (Commit)在
ActiveSupport::SafeBuffer#*
上保留html_safe?
状态。 (Pull Request)
12 Active Job
有关详细的变更,请参阅 Changelog。
12.1 移除
- 删除对 Qu gem 的支持。 (Pull Request)
12.2 弃用
12.3 值得注意的变更
添加对 Active Job 参数的自定义序列化器的支持。 (Pull Request)
添加对在 Active Job 入队时的时区中执行 Active Job 的支持。 (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 断言助手程序为
only
关键字接受 Proc。 (Pull Request)从断言助手程序的作业参数中删除微秒和纳秒。 (Pull Request)
13 Ruby on Rails 指南
有关详细的变更,请参阅 Changelog。
13.1 值得注意的变更
添加了使用 Active Record 的多个数据库指南。 (Pull Request)
添加了关于自动加载常量故障排除的部分。 (Commit)
添加了 Action Mailbox 基础指南。 (Pull Request)
添加了 Action Text 概述指南。 (Pull Request)
14 贡献者
查看 Rails 贡献者完整列表,以了解为 Rails 投入大量时间,使其成为稳定而强大的框架的许多人。向他们致敬。