大家好,我是 zzak。让我们一起来看看本周 Rails 代码库的改动。
添加 Active Support Notifications 测试助手模块
此 PR 的创建是因为目前很难测试某个代码块/操作是否会触发 ActiveSupport::Notifications::Event 的发出。理想情况下,应该有一些助手来 断言 这种事件的发出。听说这些助手在 Rails 内部也会很有用。
将“affected_rows”添加到“sql.active_record”事件中
最近添加的 row_count 值对于识别返回大量结果集的查询非常有用,因为大量结果可能会消耗大量内存,甚至被 Vitess 等数据库阻止。
然而,row_count 在不一定将结果返回给客户端的查询方面有所不足。这些影响过多行的查询可能导致自身出现问题,例如压垮复制并导致复制延迟。
允许“hidden_field”标签接受自定义 autocomplete 值
在 #43280 中,为了修复 Firefox 的一个 bug,Rails 生成的所有隐藏输入都强制设置了 autocomplete="off"。不幸的是,为隐藏输入指定带有 username 等值以及 autocomplete 属性也是一个合法的用例。这暗示浏览器(在此示例中)密码重置表单的用户名是我们提供的值,密码管理器可以将其存储为该值。
允许重置多个记录的缓存计数器
通常需要重置多个记录的计数器缓存。以前要实现这一点会生成许多额外的查询。
# Before
response.content_type = "text/html"
# After
response.content_type = :html
并行测试使用 :number_of_processors 会使用 cgroups 感知的可用处理器计数
在使用并行测试时,默认情况下将尝试根据系统可用的总处理器数分配一个工作池。
修复 Mysql2Adapter 对预处理语句的支持
如果您使用的是 Mysql2 适配器并依赖预处理语句,您可能希望在升级到 Rails 8.0 之前等待下一个错误修复版本。
在“app:update”命令期间静默弃用消息
当运行 app:update 命令时,您可能之前会看到由于未采用 new_framework_defaults 而产生的警告。此 PR 会静默这些消息以避免混淆。
重新措辞 NoDatabaseError 的错误消息
此补丁添加了一些关于遇到此错误时该做什么的建议。
重新设计 ActionView::Template::Handlers::ERB.find_offset 以处理边缘情况
此 PR 在改进 ERB 模板错误高亮显示方面付出了卓越的努力,并修复了 多字节字符分词 的一个 bug。
使 column_definitions 查询可重试
以前,当生产环境中的应用程序未使用 schema cache 时,每次加载表时都会为每个表执行一个 ping 查询。
使 Action Dispatch Session#store 方法符合 Rack 规范
Rack 规范 规定,存储在 environment 中键为 rack.session 的类哈希对象必须实现带有 []= 语义的 store/2 方法。
在 ActiveJob 异常处理程序中保留时区和区域设置
此 PR 修复了一个 bug,该 bug 导致 rescue_from 块中的作业区域设置和时区不正确。
您可以在 这里 查看全部更改列表。 上周,我们有 26 位贡献者 为 Rails 代码库做出了贡献!
下次再见!
订阅以通过邮件获取这些更新。