大家好,我是Wojtek。让我们一起看看本周 Rails 的更新内容。
一年两度的 Rails 社区调查正在进行中!
您的意见非常宝贵,将帮助 Planet Argon 的团队深入了解 Rails 社区的现状。在此填写调查问卷。(也欢迎分享给您的团队)。调查将于 2024 年 8 月 2 日截止,调查结果将在之后不久发布。
Ruby Central 活动新纪元
Ruby Central 宣布,2025 年将是 *RailsConf* 的最后一年,并邀请社区投票决定最后一届大会的举办地点。在此阅读完整公告,并投下您宝贵的一票。
修复 index_errors 并提供 :nested_attributes_order 模式
根据嵌套属性设置器接收的顺序对关联验证错误进行索引,并遵循 *reject_if* 配置。这使得 API 能够向前端提供足够的信息,以便将验证错误映射回相应的表单字段。
添加标志以加快多进程测试运行速度
添加 *ENV[“SKIP_TEST_DATABASE_TRUNCATE”]* 标志,以便在大型数据库上运行多进程测试时加快速度,前提是所有测试都在默认事务中运行。这可以为 HEY 的测试运行节省约 10 秒,当通过 24 个进程针对 178 个表运行时,因为可以跳过约 4000 次表截断。
在请求日志中用 GC 时间替换分配计数
分配计数通常是衡量性能的一个有趣指标,但未必是请求日志中最相关的部分,因为它们不是每个线程的指标,所以在多线程环境中报告的结果可能非常不准确。
自 Ruby 3.1 起,有了 *GC.total_time*,这是一个单调递增的 GC 耗时计数器。它仍然不是一个真正的每个线程指标,但它更有意义,因为它使用的单位与响应时间相同,可以更好地查看 GC 暂停对性能的影响。
解释默认 Dockerfile 适用于生产环境
如果用户想在开发环境中使用 Docker,他们需要一种完全不同的设置,而且很可能更适合使用开发容器。
除非设置了 RAILS_ENV,否则不要修改 Minitest
Minitest 会自动扫描所有已安装的 gem 并加载来自这些 gem 的插件。我们应该检测是否在 Rails 应用的上下文中运行,并且只在此情况下更改 MT 的行为。
警告关于更改“query_constraints”行为
为 *query_constraints:* 关联选项添加了弃用警告。此选项在 Rails 的未来版本中将改变行为,因此建议应用程序切换到 *foreign_key:* 以保持当前行为。
在 Active Job 中一致使用所需的测试适配器
所有测试现在都遵守 *active_job.queue_adapter* 配置,而以前并非总是如此。
您可以在此处查看所有更改列表。 上周,我们有20 位贡献者为 Rails 代码库做出了贡献!
下次再见!
订阅以通过邮件获取这些更新。