嗨,我是 Petrik,我为您带来来自 Rails 世界的最新新闻。
Rails 7.0.2 已发布
虽然这看起来像一次常规补丁发布,但有一些值得注意的更改。
首先,7.0.0 中引入的一个功能已被移除:将 service_name 参数传递给 DirectUploadsController 的能力。在从 Rails 6.1 升级时,此功能会导致重大问题,因此 Rails 团队决定在他们进行向后兼容更改时将其移除。他们不会轻易做出这个决定,并且通常不会在发布后在没有适当的弃用周期的情况下删除功能,但在此时他们决定优先让用户更轻松地升级。
最后,出于同样的目标,Rails 7.0.2 引入了一项新功能,基于 Rails 版本控制数据库架构的能力。此新功能将使现有应用程序仍然能够加载在 Rails 6.1 中生成的数据库架构,并保持与之前相同的行为,使其与生产数据库架构相匹配。
Fiber 安全连接池
当 ActiveSupport::IsolatedExecutionState.isolation_level 设置为 :fiber 时,连接池现在支持同一线程中的多个 Fiber 从池中检出连接。
将 #to_fs 设置为 #to_s(:format) 的默认替换项
由于 Ruby 3.1 优化了插值,#to_s(:format) 最近已弃用,以支持 #to_formatted_s。#to_formatted_s 对于一个经常使用的函数来说是一个相对较长的名称。此更改使得 #to_fs 成为 Rails 内部和文档中的默认项。#to_formatted_s 仍然是 #to_fs 的别名。
将 ActiveSupport::MessageEncryptor 序列化器默认设置为 JSON
使用 JSON 提供了一种比当前的 Marshal 序列化器更安全的替代方案。
如升级指南中所述,现有的应用程序提供了迁移到 JSON 的升级路径。
根据新默认值转储 datetime 列的精度
从 Rails 7.0 开始,datetime 列精度默认为 6。这意味着没有设置 :precision 选项的 t.datetime 调用将把其精度设置为 6。这影响了 PostgreSQL 和 SQLite3。现在,转储器将为没有精度的列生成精度为 0,并在精度为 6 时省略它。
向 ActiveJob 重试/放弃日志记录添加作业 ID 和异常消息
已在已执行作业的日志消息中包含作业 ID 和异常消息。但与 ActiveJob::Exceptions 中的重试/放弃行为相关的日志消息不包含作业 ID 或异常消息。我们现已按照与其他现有消息一致的格式包含它们。
反转 structure.sql 转储中的 INSERT 语句的顺序
这应降低发生合并冲突的可能性。新的迁移现在将添加到列表的顶部。
对于现有的应用,下次生成 structure.sql 时,会有很大的差异。