更多内容请访问 rubyonrails.org:

1. 升级到 Rails 6.0

如果您正在升级现有应用程序,最好在开始之前进行充分的测试覆盖。如果您尚未升级到 Rails 5.2,则应首先升级到 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_toChannel::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_datasend_file 上编码 Content-Disposition 文件名。(拉取请求)

  • 公开 ActionController::Parameters#each_key。(拉取请求)

  • 在签名/加密 cookie 中添加目的和过期元数据,以防止将 cookie 值相互复制。(拉取请求)

  • 对于冲突的 respond_to 调用,引发 ActionController::RespondToMismatchError。(拉取请求)

  • 为请求格式缺少模板时添加一个显式错误页面。(拉取请求)

  • 引入 ActionDispatch::DebugExceptions.register_interceptor,一种在渲染异常之前,连接到 DebugExceptions 并处理异常的方式。(拉取请求)

  • 每个请求仅输出一个 Content-Security-Policy nonce 标头值。(拉取请求)

  • 添加一个专门用于 Rails 默认标头配置的模块,该模块可以显式包含在控制器中。(拉取请求)

  • ActionDispatch::Request::Session 添加 #dig。(拉取请求)

6. Action View

有关详细更改,请参阅变更日志

6.1. 移除

  • 删除已弃用的 image_alt 辅助方法。(提交)

  • 删除空的 RecordTagHelper 模块,其功能已移至 record_tag_helper gem。(提交)

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 范围。(拉取请求)

  • 仅接受注册的 MIME 类型格式。(拉取请求, 拉取请求)

  • 将分配添加到模板和局部渲染服务器输出。(拉取请求)

  • 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。(提交)

  • 弃用 DeliveryJobParameterized::DeliveryJob,改用 MailDeliveryJob。(拉取请求)

7.3. 显著变更

  • 添加 MailDeliveryJob 用于发送常规邮件和参数化邮件。(拉取请求)

  • 允许自定义电子邮件发送作业与 Action Mailer 测试断言一起使用。(拉取请求)

  • 允许为带有块的多部分电子邮件指定模板名称,而不是仅使用动作名称。(拉取请求)

  • deliver.action_mailer 通知负载添加 perform_deliveries。(拉取请求)

  • 改进当 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。(提交)

  • 弃用将 migrations_paths 传递给 connection.assume_migrated_upto_version。(提交)

  • 弃用 ActiveRecord::Result#to_hash,改用 ActiveRecord::Result#to_a。(提交)

  • 弃用 DatabaseLimits 中的方法:column_name_lengthtable_name_lengthcolumns_per_tableindexes_per_tablecolumns_per_multicolumn_indexsql_query_lengthjoins_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,它截断当前环境中每个数据库的表并加载种子。(拉取请求)

  • 添加 reselect 方法,它是 unscope(:select).select(fields) 的简写。(拉取请求)

  • 为所有枚举值添加负作用域。(拉取请求)

  • 添加 #destroy_by#delete_by 用于条件删除。(拉取请求)

  • 添加自动切换数据库连接的功能。(拉取请求)

  • 添加在块持续时间内防止写入数据库的功能。(拉取请求)

  • 添加用于切换连接以支持多个数据库的 API。(拉取请求)

  • 使带精度的时间戳成为迁移的默认值。(拉取请求)

  • 支持 :size 选项以更改 MySQL 中文本和 blob 大小。(拉取请求)

  • 将多态关联的外键和外类型列都设置为 NULL,采用 dependent: :nullify 策略。(拉取请求)

  • 允许将 ActionController::Parameters 的允许实例作为参数传递给 ActiveRecord::Relation#exists?。(拉取请求)

  • #where 中添加对 Ruby 2.6 中引入的无限范围的支持。(拉取请求)

  • ROW_FORMAT=DYNAMIC 设置为 MySQL 的默认创建表选项。(拉取请求)

  • 添加禁用 ActiveRecord.enum 生成的作用域的功能。(拉取请求)

  • 使列的隐式排序可配置。(拉取请求)

  • 将 PostgreSQL 的最低版本提高到 9.3,放弃对 9.1 和 9.2 的支持。(拉取请求)

  • 使枚举的值冻结,尝试修改它们时会引发错误。(拉取请求)

  • ActiveRecord::StatementInvalid 错误的 SQL 作为其自身的错误属性,并将 SQL 绑定作为单独的错误属性包含在内。(拉取请求)

  • create_table 添加 :if_not_exists 选项。(拉取请求)

  • rails db:schema:cache:dumprails db:schema:cache:clear 添加多数据库支持。(拉取请求)

  • ActiveRecord::Base.connected_to 的数据库哈希中添加对哈希和 URL 配置的支持。(拉取请求)

  • 为 MySQL 添加默认表达式和表达式索引支持。(拉取请求)

  • change_table 迁移辅助方法添加 index 选项。(拉取请求)

  • 修复迁移的 transaction 回滚。之前,回滚迁移中 transaction 内部的命令未反转运行。此更改修复了这个问题。(拉取请求)

  • 允许使用符号哈希设置 ActiveRecord::Base.configurations=。(拉取请求)

  • 修复计数器缓存,使其仅在记录实际保存时才更新。(拉取请求)

  • 为 SQLite 适配器添加表达式索引支持。(拉取请求)

  • 允许子类重新定义关联记录的自动保存回调。(拉取请求)

  • 将 MySQL 的最低版本提高到 5.5.8。(拉取请求)

  • MySQL 默认使用 utf8mb4 字符集。(拉取请求)

  • 添加在 #inspect 中过滤敏感数据的能力。(拉取请求, 拉取请求)

  • ActiveRecord::Base.configurations 更改为返回对象而不是哈希。(拉取请求)

  • 添加数据库配置以禁用咨询锁。(拉取请求)

  • 更新 SQLite3 适配器 alter_table 方法以恢复外键。(拉取请求)

  • 允许 remove_foreign_key:to_table 选项可逆。(拉取请求)

  • 修复 MySQL 时间类型带指定精度的默认值。(拉取请求)

  • 修复 touch 选项,使其行为与 Persistence#touch 方法一致。(拉取请求)

  • 对迁移中的重复列定义引发异常。(拉取请求)

  • 将 SQLite 的最低版本提高到 3.8。(拉取请求)

  • 修复父记录不与重复的子记录一起保存的问题。(拉取请求)

  • 确保 Associations::CollectionAssociation#sizeAssociations::CollectionAssociation#empty? 在存在已加载关联 ID 时使用它们。(拉取请求)

  • 添加对预加载多态关联的关联的支持,当并非所有记录都具有请求的关联时。(提交)

  • ActiveRecord::Relation 添加 touch_all 方法。(拉取请求)

  • 添加 ActiveRecord::Base.base_class? 谓词。(拉取请求)

  • ActiveRecord::Store.store_accessor 添加自定义前缀/后缀选项。(拉取请求)

  • 添加 ActiveRecord::Base.create_or_find_by/!,通过依赖数据库中的唯一约束来处理 ActiveRecord::Base.find_or_create_by/! 中的 SELECT/INSERT 竞争条件。(拉取请求)

  • 添加 Relation#pick 作为单值提取的简写。(拉取请求)

9. Active Storage

有关详细更改,请参阅变更日志

9.1. 移除

9.2. 弃用

  • 弃用 config.active_storage.queue,改用 config.active_storage.queues.analysisconfig.active_storage.queues.purge。(拉取请求)

  • 弃用 ActiveStorage::Downloading,改用 ActiveStorage::Blob#open。(提交)

  • 弃用直接使用 mini_magick 生成图像变体,改用 image_processing。(提交)

  • 弃用 Active Storage 的 ImageProcessing 转换器中的 :combine_options,没有替代。(提交)

9.3. 显著变更

  • 添加对生成 BMP 图像变体的支持。(拉取请求)

  • 添加对生成 TIFF 图像变体的支持。(拉取请求)

  • 添加对生成渐进式 JPEG 图像变体的支持。(拉取请求)

  • 添加 ActiveStorage.routes_prefix 用于配置 Active Storage 生成的路由。(拉取请求)

  • 当请求的文件在磁盘服务中丢失时,在 ActiveStorage::DiskController#show 上生成 404 Not Found 响应。(拉取请求)

  • 当请求的文件在 ActiveStorage::Blob#downloadActiveStorage::Blob#open 中丢失时,引发 ActiveStorage::FileNotFoundError。(拉取请求)

  • 添加一个通用的 ActiveStorage::Error 类,Active Storage 异常从该类继承。(提交)

  • 在保存记录时(而不是立即)将分配给记录的上传文件持久化到存储。(拉取请求)

  • 在分配给附件集合时(例如 @user.update!(images: [ … ])),可选地替换现有文件而不是添加它们。使用 config.active_storage.replace_on_assign_to_many 控制此行为。(拉取请求, 拉取请求)

  • 添加使用现有 Active Record 反射机制反映已定义附件的功能。(拉取请求)

  • 添加 ActiveStorage::Blob#open,它将 blob 下载到磁盘上的临时文件并生成临时文件。(提交)

  • 支持从 Google Cloud Storage 流式下载。需要 google-cloud-storage gem 的 1.11+ 版本。(拉取请求)

  • 使用 image_processing gem 处理 Active Storage 变体。这取代了直接使用 mini_magick。(拉取请求)

10. Active Model

有关详细更改,请参阅变更日志

10.1. 移除

10.2. 弃用

10.3. 显著变更

  • 添加配置选项以自定义 ActiveModel::Errors#full_message 的格式。(拉取请求)

  • 添加对配置 has_secure_password 的属性名称的支持。(拉取请求)

  • ActiveModel::Errors 添加 #slice! 方法。(拉取请求)

  • 添加 ActiveModel::Errors#of_kind? 以检查特定错误的存在。(拉取请求)

  • 修复 ActiveModel::Serializers::JSON#as_json 方法的时间戳问题。(拉取请求)

  • 修复数值验证器,使其在 Active Record 之外仍使用类型转换前的值。(拉取请求)

  • 通过在验证的两端转换为 BigDecimal 来修复 BigDecimalFloat 的数值相等性验证。(拉取请求)

  • 修复多参数时间哈希类型转换时的年份值。(拉取请求)

  • 将虚假布尔符号在布尔属性上转换为 false。(拉取请求)

  • ActiveModel::Type::Datevalue_from_multiparameter_assignment 中转换参数时返回正确的日期。(拉取请求)

  • 在获取错误翻译时,回退到父语言环境,然后再回退到 :errors 命名空间。(拉取请求)

11. Active Support

有关详细更改,请参阅变更日志

11.1. 移除

  • Inflections 中删除已弃用的 #acronym_regex 方法。(提交)

  • 删除已弃用的 Module#reachable? 方法。(提交)

  • 删除 Kernel#`,没有替代。(拉取请求)

11.2. 弃用

  • 弃用将负整数参数用于 String#firstString#last。(拉取请求)

  • 弃用 ActiveSupport::Multibyte::Unicode#downcase/upcase/swapcase,改用 String#downcase/upcase/swapcase。(拉取请求)

  • 弃用 ActiveSupport::Multibyte::Unicode#normalizeActiveSupport::Multibyte::Chars#normalize,改用 String#unicode_normalize。(拉取请求)

  • 弃用 ActiveSupport::Multibyte::Chars.consumes?,改用 String#is_utf8?。(拉取请求)

  • 弃用 ActiveSupport::Multibyte::Unicode#pack_graphemes(array)ActiveSupport::Multibyte::Unicode#unpack_graphemes(string),分别改用 array.flatten.pack("U*")string.scan(/\X/).map(&:codepoints)。(拉取请求)

11.3. 显著变更

  • 添加并行测试支持。(拉取请求)

  • 确保 String#strip_heredoc 保留字符串的冻结性。(拉取请求)

  • 添加 String#truncate_bytes 以将字符串截断为最大字节大小,而不会破坏多字节字符或字素簇。(拉取请求)

  • delegate 方法添加 private 选项,以便委托给私有方法。此选项接受 true/false 作为值。(拉取请求)

  • 添加通过 I18n 为 ActiveSupport::Inflector#ordinalActiveSupport::Inflector#ordinalize 提供翻译支持。(拉取请求)

  • DateDateTimeTimeTimeWithZone 添加 before?after? 方法。(拉取请求)

  • 修复 URI.unescape 在混合 Unicode/转义字符输入时失败的错误。(拉取请求)

  • 修复 ActiveSupport::Cache 在启用压缩时会大幅增加存储大小的错误。(拉取请求)

  • Redis 缓存存储:delete_matched 不再阻塞 Redis 服务器。(拉取请求)

  • 修复当 ActiveSupport::TimeZone::MAPPING 中定义的任何时区的 tzinfo 数据丢失时,ActiveSupport::TimeZone.all 会失败的错误。(拉取请求)

  • 添加 Enumerable#index_with,它允许从枚举中创建一个哈希,其值来自传入的块或默认参数。(拉取请求)

  • 允许 Range#===Range#cover? 方法与 Range 参数一起使用。(拉取请求)

  • 支持 RedisCacheStore 的 increment/decrement 操作中的键过期。(拉取请求)

  • 向日志订阅者事件添加 CPU 时间、空闲时间和分配功能。(拉取请求)

  • 向 Active Support 通知系统添加事件对象支持。(拉取请求)

  • 通过引入 ActiveSupport::Cache#fetch 的新选项 skip_nil,添加对不缓存 nil 条目的支持。(拉取请求)

  • 添加 Array#extract! 方法,该方法删除并返回块返回真值的元素。(拉取请求)

  • 切片后,保持 HTML 安全字符串的 HTML 安全性。(拉取请求)

  • 添加通过日志记录跟踪常量自动加载的支持。(提交)

  • unfreeze_time 定义为 travel_back 的别名。(拉取请求)

  • ActiveSupport::TaggedLogging.new 更改为返回新的日志记录器实例,而不是更改作为参数接收的日志记录器。(拉取请求)

  • #delete_prefix#delete_suffix#unicode_normalize 方法视为非 HTML 安全方法。(拉取请求)

  • 修复 ActiveSupport::HashWithIndifferentAccess#without 在使用符号参数时失败的错误。(拉取请求)

  • Module#parentModule#parentsModule#parent_name 重命名为 module_parentmodule_parentsmodule_parent_name。(拉取请求)

  • 添加 ActiveSupport::ParameterFilter。(拉取请求)

  • 修复当浮点数添加到持续时间时,持续时间四舍五入到整秒的错误。(拉取请求)

  • #to_options 作为 ActiveSupport::HashWithIndifferentAccess#symbolize_keys 的别名。(拉取请求)

  • 如果同一块多次包含在 Concern 中,不再引发异常。(拉取请求)

  • 保留传递给 ActiveSupport::CacheStore#fetch_multi 的键顺序。(拉取请求)

  • 修复 String#safe_constantize 不会因为大小写错误的常量引用而抛出 LoadError。(拉取请求)

  • 添加 Hash#deep_transform_valuesHash#deep_transform_values!。(提交)

  • 添加 ActiveSupport::HashWithIndifferentAccess#assoc。(拉取请求)

  • CurrentAttributes 添加 before_reset 回调,并将 after_reset 定义为 resets 的别名以保持对称。(拉取请求)

  • 修订 ActiveSupport::Notifications.unsubscribe 以正确处理 Regex 或其他多模式订阅者。(拉取请求)

  • 添加使用 Zeitwerk 的新自动加载机制。(提交)

  • 添加 Array#includingEnumerable#including 以方便地扩大集合。(提交)

  • Array#withoutEnumerable#without 重命名为 Array#excludingEnumerable#excluding。旧方法名称保留为别名。(提交)

  • 添加对向 transliterateparameterize 提供 locale 的支持。(拉取请求)

  • 修复 Time#advance 以在 1001-03-07 之前的日期上工作。(拉取请求)

  • 更新 ActiveSupport::Notifications::Instrumenter#instrument 以允许不传递块。(拉取请求)

  • 在后代跟踪器中使用弱引用,以允许匿名子类被垃圾回收。(拉取请求)

  • 使用 with_info_handler 方法调用测试方法,以使 minitest-hooks 插件能够工作。(提交)

  • 保留 ActiveSupport::SafeBuffer#* 上的 html_safe? 状态。(拉取请求)

12. Active Job

有关详细更改,请参阅变更日志

12.1. 移除

12.2. 弃用

12.3. 显著变更

  • 添加对 Active Job 参数的自定义序列化程序支持。(拉取请求)

  • 添加对在 Active Jobs 排队的时区执行 Active Jobs 的支持。(拉取请求)

  • 允许将多个异常传递给 retry_on/discard_on。(提交)

  • 允许在没有块的情况下调用 assert_enqueued_withassert_enqueued_email_with。(拉取请求)

  • enqueueenqueue_at 的通知包装在 around_enqueue 回调中,而不是 after_enqueue 回调中。(拉取请求)

  • 允许在没有块的情况下调用 perform_enqueued_jobs。(拉取请求)

  • 允许在没有块的情况下调用 assert_performed_with。(拉取请求)

  • 向作业断言和辅助方法添加 :queue 选项。(拉取请求)

  • 在重试和丢弃周围添加 Active Job 钩子。(拉取请求)

  • 添加一种在执行作业时测试参数子集的方法。(拉取请求)

  • 将反序列化参数包含在 Active Job 测试辅助方法返回的作业中。(拉取请求)

  • 允许 Active Job 断言辅助方法接受 only 关键字的 Proc。(拉取请求)

  • 从断言辅助方法中的作业参数中删除微秒和纳秒。(拉取请求)

13. Ruby on Rails 指南

有关详细更改,请参阅变更日志

13.1. 值得注意的更改

  • 添加带有 Active Record 的多个数据库指南。(拉取请求)

  • 添加关于自动加载常量故障排除的部分。(提交)

  • 添加 Action Mailbox 基础知识指南。(拉取请求)

  • 添加 Action Text 概述指南。(拉取请求)

14. 鸣谢

请参阅Rails 贡献者完整列表,感谢许多人花费大量时间使 Rails 成为一个稳定而健壮的框架。向他们所有人致敬。



回到顶部