edge
更多信息请访问 rubyonrails.org: 更多 Ruby on Rails

Ruby on Rails 6.0 发布说明

Rails 6.0 的亮点:

这些发布说明仅涵盖了主要更改。要了解各种错误修复和更改,请参考更改日志或查看 GitHub 上 Rails 主存储库中的提交列表

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.logger.enabled替换ActionCable.startDebugging()ActionCable.stopDebugging()。 (拉取请求)

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的值复制到另一个cookie中。 (拉取请求)

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

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

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

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

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

  • #dig添加到ActionDispatch::Request::Session中。 (Pull Request)

6 Action View

请参考Changelog以获取详细的更改信息。

6.1 移除

  • 移除已弃用的image_alt辅助方法。 (Commit)

  • record_tag_helper gem中移除空的RecordTagHelper模块。 (Commit)

6.2 弃用

  • 弃用ActionView::Template.finalize_compiled_template_methods,无替代方法。 (Pull Request)

  • 弃用config.action_view.finalize_compiled_template_methods,无替代方法。 (Pull Request)

  • 弃用从options_from_collection_for_select视图助手调用私有模型方法。 (Pull Request)

6.3 显著更改

  • 在开发模式下,只在文件更改时清除Action View缓存,加快开发模式。 (Pull Request)

  • 将所有的Rails npm包移动到@rails作用域下。 (Pull Request)

  • 仅接受已注册MIME类型的格式。 (Pull Request, Pull Request)

  • 在模板和局部渲染服务器输出中添加分配。 (Pull Request)

  • date_select标签添加year_format选项,使年份名称可自定义。 (Pull Request)

  • javascript_include_tag辅助方法添加nonce: true选项,支持自动生成Content Security Policy的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键样式支持。 (Pull Request)

7 Action Mailer

请参考Changelog以获取详细的更改信息。

7.1 移除

7.2 弃用

  • 弃用ActionMailer::Base.receive,推荐使用Action Mailbox。 (Commit)

  • 弃用DeliveryJobParameterized::DeliveryJob,推荐使用MailDeliveryJob。 (Pull Request)

7.3 显著更改

  • 添加MailDeliveryJob,用于发送常规和参数化邮件。 (Pull Request)

  • 允许自定义的电子邮件传递作业与Action Mailer测试断言一起使用。 (Pull Request)

  • 允许在多部分邮件中使用块指定模板名称,而不仅仅使用动作名称。 (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)

8 Active Record

请参考Changelog以获取详细的更改信息。

8.1 移除

  • 从事务对象中移除已弃用的#set_state。 (Commit)

  • 从数据库适配器中移除已弃用的#supports_statement_cache?。 (Commit)

  • 从数据库适配器中移除已弃用的#insert_fixtures。 (Commit)

  • 移除已弃用的ActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type?。 (Commit)

  • 当传递块时,移除对sum中的列名的支持。 (Commit)

  • 当传递块时,移除对count中的列名的支持。 (Commit)

  • 移除将关系中的缺失方法委托给Arel的支持。 (Commit)

  • 移除将关系中的缺失方法委托给类的私有方法的支持。 (Commit)

  • 移除为#cache_key指定时间戳名称的支持。 (Commit)

  • 移除已弃用的ActiveRecord::Migrator.migrations_path=。 (Commit)

  • 移除已弃用的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。 (拉取请求)

  • 将具有精度的时间戳设置为迁移的默认值。 (拉取请求)

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

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

  • 允许将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= (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_keyto_table选项可逆 (Pull Request)

  • 修复指定精度的MySQL时间类型的默认值 (Pull Request)

  • 修复touch选项与Persistence#touch方法一致的行为 (Pull Request)

  • 在迁移中对重复的列定义引发异常 (Pull Request)

  • 将最低SQLite版本提升至3.8 (Pull Request)

  • 修复父记录不会保存重复的子记录 (Pull Request)

  • 如果存在加载的关联id,则确保Associations::CollectionAssociation#sizeAssociations::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/!以处理ActiveRecord::Base.find_or_create_by/!中的SELECT/INSERT竞争条件,依赖数据库中的唯一约束 (Pull Request)

  • 添加Relation#pick作为单值pluck的简写 (Pull Request)

9 Active Storage

详细更改请参阅Changelog

9.1 移除

9.2 弃用

  • 弃用config.active_storage.queue,改用config.active_storage.queues.analysisconfig.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 Not Found响应 (Pull Request)

  • 当请求的文件对于ActiveStorage::Blob#downloadActiveStorage::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 下载到磁盘上的临时文件并返回该临时文件。 (提交记录)

  • 支持从 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 配置属性名称。 (拉取请求)

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

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

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

  • 修复 numericality 验证器在除了 Active Record 之外仍然使用类型转换之前的值的问题。 (拉取请求)

  • 通过在验证的两端都将其转换为 BigDecimal 来修复 BigDecimalFloat 的 numericality 相等性验证问题。 (拉取请求)

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

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

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

  • 在获取错误翻译时,先回退到父区域设置,然后再回退到 :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/转义字符输入时失败的 bug。 (拉取请求)

  • 修复启用压缩时 ActiveSupport::Cache 导致存储大小大幅膨胀的 bug。 (拉取请求)

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

  • 修复 ActiveSupport::TimeZone.all 在任何时区定义在 ActiveSupport::TimeZone::MAPPING 中的时区缺失时失败的 bug。 (拉取请求)

  • 添加 Enumerable#index_with 方法,允许从可枚举对象中创建一个哈希,该哈希的值来自传递的块或默认参数。 (拉取请求)

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

  • 在RedisCacheStore的increment/decrement操作中支持键过期。 (Pull Request)

  • 在日志订阅事件中添加CPU时间、空闲时间和分配功能。 (Pull Request)

  • 在Active Support通知系统中添加对事件对象的支持。 (Pull Request)

  • 通过引入ActiveSupport::Cache#fetch的新选项skip_nil来支持不缓存nil条目。 (Pull Request)

  • 添加Array#extract!方法,该方法删除并返回块返回true值的元素。 (Pull Request)

  • 在切片后保持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#parentModule#parentsModule#parent_name重命名为module_parentmodule_parentsmodule_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_valuesHash#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#includingEnumerable#including,以便方便地扩大集合。 (Commit)

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

  • 添加对transliterateparameterize提供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 删除

12.2 弃用

12.3 重要更改

  • 为Active Job参数添加自定义序列化器的支持。 (Pull Request)

  • 添加对在排队时使用的时区执行Active Jobs的支持。 (Pull Request)

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

  • 允许在没有块的情况下调用assert_enqueued_withassert_enqueued_email_with。 (Pull Request)

  • enqueueenqueue_at的通知包装在around_enqueue回调中,而不是after_enqueue回调中。 (Pull Request)

  • 允许在没有块的情况下调用perform_enqueued_jobs。 (Pull Request)

  • 允许在没有块的情况下调用assert_performed_with。 (Pull Request)

  • 在作业断言和辅助函数中添加:queue选项。 (拉取请求)

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

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

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

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

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

13 Ruby on Rails指南

请参考变更日志以获取详细的更改信息。

13.1 显著变更

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

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

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

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

14 贡献者

请参阅Rails的完整贡献者列表,感谢所有为Rails付出了许多时间的人们,使其成为一个稳定和强大的框架。

反馈

欢迎您帮助改进本指南的质量。

如果您发现任何拼写错误或事实错误,请贡献您的意见。 要开始,请阅读我们的 文档贡献 部分。

您还可能会发现不完整的内容或过时的内容。 请为主要内容添加任何缺失的文档。请先检查 Edge 指南,以验证问题是否已经修复或尚未修复。 请参阅 Ruby on Rails 指南准则 以了解样式和规范。

如果您发现需要修复但无法自行修复的问题,请 提交问题

最后但同样重要的是,欢迎您在 官方 Ruby on Rails 论坛 上讨论有关 Ruby on Rails 文档的任何问题。