2021 年 11 月 21 日星期日

自动分片交换中间件、标准化错误报告接口,以及更多!

作者 gregmolnar

嗨,我是Greg,为您带来有关 Ruby on Rails 的最新消息。

支持不带 [action] 的 <form> 元素默认情况下,当声明了一个没有 action 特性的 form 时,浏览器会将表单的字段编码到当前的 URL 中。在此提交之前,没有一个 form 构造变化支持在不带 action 特性的情况下声明一个 formform_withform_forform_tag 在省略了 urlaction 选项时都默认为 url_for({}),但有了此更改,当将其设置为 false 时,表单将在没有 action 特性的情况下呈现。

button_to 帮助器中支持 authenticity_token 选项此公关添加了向 button_to 传递 authenticity_token 选项的支持,方法与 form_withform_for 调用中的相同。

引入 field_name 视图帮助器field_name 帮助器和相应的 FormBuilder#field_name 方法提供了一种符合 Action View 的方式来覆盖一个元素的 name 特性。例如,您可以执行以下操作

text\_field\_tag :post, :tag, name: field\_name(:post, :tag, multiple: true) # =\> \<input type="text" name="post[tag][]"\>

自动分片交换中间件此公关添加了一个可用于自动分片交换中间件。该设计类似于数据库选择器中间件,因为解析器由应用程序提供以确定要切换到的分片。选择器还采用选项(目前仅支持 lock)来更改中间件的默认行为。

标准化错误报告界面Rails.error 是一种新的错误报告界面,带有两种基于块的方法。handle,它吞咽错误并将它们转发给订阅者

Rails.error.handle do 1 + '1' # raises TypeError end 1 + 1 # This will be executed

record,它将错误转发给订阅者,但允许它继续回绕调用堆栈

Rails.error.record do 1 + '1' # raises TypeError end 1 + 1 # This won't be executed.

对于基于阻塞的 API 不合适的情况,可以使用低级别的 report 方法

Rails.error.report(error, handled: true / false)

使用 debug 过滤 SQL 日志中的特性当 Rails 日志级别设置为 :debug 时记录 SQL 查询,并且在此情况下,过滤器特性以前并未在日志中屏蔽。通过此更改,过滤器特性将在日志中作为 [FILTERED] 屏蔽,但是仅当启用了 prepared_statement 时才会应用筛选。

提高集合呈现速度,并增加对 jbuilder 中多重提取集合处理的支持 此 PR 通过利用动作视图中现有的集合渲染器来提高集合呈现速度,并且通过增加对多重提取集合处理的支持来提高效率。

33 人自上次以来为 Rails 做出了贡献。我们无法涵盖所有更改,但您可以在此处查看所有内容。下期再见!