星期五,2024 年 5 月 10 日

Rails 社区调查、改进关联验证错误等等

发布人:Wojtek

嗨,Wojtek 在此。让我们了解本周 rails 中的变化。

两年一度的 Rails 社区调查正在进行中!
您的意见非常宝贵,将帮助 Planet Argon 团队深入了解 Rails 社区的当前状态。 点击此处填写调查。(请随意与您的团队分享)。调查将持续到 2024 年 8 月 2 日,调查结果将在调查结束之后不久发布。

Ruby Central 活动的新纪元
Ruby Central 宣布,2025 年将是RailsConf 的最后一年,并邀请社区投票选出最后一次活动的地点。 在此处阅读完整公告并参与投票。

修复索引错误并提供 :nested_attributes_order 模式
根据嵌套属性设置器接收的顺序对关联验证错误建立索引,并遵循reject_if 配置。API 得以在此基础上为前端提供足够的信息,以便将验证错误映射回各自的表单字段。

添加标志以加快多进程测试运行
添加 ENV[“SKIP_TEST_DATABASE_TRUNCATE”] 标志以加快针对大型数据库的多进程测试运行,方法是在默认事务中运行所有测试。当通过 24 个进程针对 178 个表运行 HEY 时,此标志可以将测试运行时间缩短大约 10 秒,因为可以跳过大约 4,000 个表截断。

在请求日志中将分配计数替换为 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 代码库!

下次见!

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