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支持
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
当使用Docker容器运行Rails应用程序时,如果容器崩溃(例如,由于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添加默认值:支持
此更改扩展了.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代码库做出了贡献!

下次再见!

订阅以通过邮件获取这些更新。