2024 年 10 月 25 日,星期五

Active Job 配置 `enqueue_after_transaction_commit` 已被弃用

作者:zzak

大家好,我是 zzak。让我们一起探索本周 Rails 代码库中的变更。

弃用在提交后延迟作业排队行为的设置
active_job.enqueue_after_transaction_commit 设置已被弃用。此行为并非旨在全局更改,而是在每个作业的基础上更改。

添加对在生成的 devcontainer 中使用 Kamal 的支持
正如标题所示,您现在可以在 devcontainer 中运行 Rails 时使用 Kamal。

修复枚举标签以接受关键字参数
现在您可以使用关键字参数定义枚举,而无需使用额外的括号。

# Before
enum :status, { default: 0, scopes: 1, prefix: 2, suffix: 3 }

# After
enum :status, default: 0, scopes: 1, prefix: 2, suffix: 3

允许重命名枚举以接受两个 from/to 位置参数,类似于重命名表
此更改使 rename_enum 的 API 与 rename_table 更一致。

在使用 JSON 编码的 CIDR 编码的 IPAddr 时添加前缀地址
如果您使用带 CIDR 符号的 IPaddr,则使用 ActiveSupport::JSON 编码时将包含前缀。

使内部 query() 可重试
此更改利用了延迟连接验证,以减少单个请求中必须验证连接的次数。

修复 Current Attributes 的“attributes”方法以每次都返回新对象
现在每次调用 Current.attributes 时都将返回一个新对象。

将“没有与服务器的连接”视为 ConnectionNotEstablished
此 PR 更新了 PostgreSQL 适配器,以将 PG::UnableToSend: no connection to the server 错误视为 ConnectionNotEstablished 错误。

即使不使用语句缓存,也能修复严格加载传播
现在,即使不使用语句缓存,也会引发 StrictLoadingViolationError

减少 Active Support Duration 的“since”和“ago”中的分配
此更改减少了极少量分配,但如果您正在学习优化和基准测试,则很有趣。

修复在测试中将内容类型设置为 nil 时出现的“NoMethodError”
这可能看起来是一个很小的更改,但此 PR 解决在测试中设置 request.content_type = nil 时的 NoMethodError。这似乎可能是一个容易掉入的陷阱。

您可以在 此处 查看完整变更列表。 过去一周,我们有 22 位贡献者 为 Rails 代码库贡献了代码!

下次再见!

订阅 以接收这些更新的邮件。