2024 年 1 月 12 日,星期五

更新了 Puma 配置,Object#with 块支持,还有更多!

作者:vipulnsward

嗨!Vipul 在此带来 2024 年 Rails 这周的第二版!

第二周继续着繁忙的活动,增加了 140 多个更改。

让我们深入了解其中一些更改!

更新默认 Puma 配置
在过去几天有关 设置 Puma 线程数新默认值的此问题中进行了广泛讨论,阅读它可以从社区中各个成员那里获得有关延迟与吞吐量权衡以及 Puma 配置中线程数的详细信息。基于此讨论,Puma 配置中的默认线程数现已从 5 更新为 3。

向 Object#with 块生成实例
引入块自变量意味着 Object#with 现在可以实现类似如下内容的任务

client.with(timeout: 5_000) do |c|
  c.get("/commits")
end

为 last、pluck 和 count 等方法添加解释支持
explain 返回的对象现在会响应 pluckfirstlastaveragecountmaximumminimumsum。这些新方法对相应查询运行 EXPLAIN,例如

User.all.explain.count
# EXPLAIN SELECT COUNT(*) FROM `users`

User.all.explain.maximum(:id)
# EXPLAIN SELECT MAX(`users`.`id`) FROM `users`

不在生产环境中生成服务器 pidfile
如果 Rails 应用程序使用 Docker 容器且应用程序崩溃时(例如由于 OOM)可能无法重新启动,因为 /rails/tmp/pids/server.pid 文件已存在。为了避免这种情况,现在的新应用程序避免生成此 pid 文件。

在 #set_callback 中支持 :on
引入了 ActiveRecord::Transactions::ClassMethods#set_callback,它的行为类似于 ActiveSupport::Callbacks::ClassMethods#set_callback,并且支持 #after_commit#after_rollback 回调中的 :on 选项。例如

class User
  set_callback :commit, :after, :do_some_work, on: :update
end

为 ActiveSupport::CurrentAttributes.attribute 添加 default:
此更改扩展了 .attribute 类方法,使其接受其属性列表的 :default 选项

class Current < ActiveSupport::CurrentAttributes
  attribute :counter, default: 0
end 

在使用 bun 生成应用程序时,将 oven-sh/setup-bun 添加到 GitHub CI
这是 为新应用程序默认添加 GitHub CI 工作流 的后续更改。在使用 bun 生成应用时,它将 oven-sh/setup-bun 添加到 GitHub CI,以进行合理的 CI 环境设置。

防止在开发中进行不必要的应用程序重新加载
此 PR 通过确保应用程序根据 Rails.autoloaders.main.dirs 正确重新加载来修复此问题,从而防止不必要的重新加载,例如:编辑 app/README.md 时将触发重新加载。

您可以在 此处 查看完整更改列表。 过去一周,有 28 位贡献者 为 Rails 代码库做出贡献!

下次再见!

订阅 以接收通过邮件发送的这些更新。