2022 年 8 月 5 日,星期五

严格的模板局部变量、检测未使用的路由和改进的 find_or_create_by

由 p8 发布

嗨,我是 Petrik,我来介绍一下上周 Rails 和相关项目的一些活动更新。

允许模板设置严格的局部变量

默认情况下,模板会接受任何局部变量作为关键字参数。要定义模板接受哪些局部变量,请添加一个 locals 魔术注释

<%# locals: (message:) -%>
<%= message %>

如果 find_or_create_by 命中唯一性约束,请尝试第二次查找对于大多数情况下预期记录存在的场景,如果 createActiveRecord::RecordNotUnique 失败,find_or_create_by 可以通过重新尝试 find 来避免竞争条件。这假定表具有正确的唯一性约束,如果没有,find_or_create_by 仍会导致记录重复。

添加对在删除检查约束时 if_exists 选项的支持

remove_check_constraint 方法现在接受一个 if_exists 选项。如果设为 true,则在检查约束不存在时不会引发错误。

添加 CHANGELOG 格式化 linter如果要添加或移除功能、提交错误修复或添加不赞成使用通知,则向 Rails 提出的 PR 应该包括一个 CHANGELOG 条目。为防止 CHANGELOG 中出现不一致,已添加了一个 linter。

添加适用于 PostgreSQL 的 drop_enum 迁移命令这与 create_enum 相反。在删除枚举之前,请确保已经删除了依赖于它的列。将指南的现有 Kindle 版本从 .mobi 更新到 .epub由于 Kindle 停止支持 .mobi 格式,因此可以将指南作为 .epub 提供。

添加 –unused 选项到 routes 命令以检测无关的路由

随着时间的推移,Rails 应用可能会变得启动很慢,仅仅是因为它有太多的路由。routes 命令的这个新选项可用于检测已绘制但实际上无效的路由。

24 人自上次以来对 Rails 做出了贡献。

本周 Hotwired 世界里也有许多活动。

发布 Turbo v7.2.0-beta.2此版本建立在 v7.2.0-beta.1 发布版本之上,该版本带来了大量新功能和错误修复。

引入 turbo:frame-missing_ 事件

当来自某个框架内的响应缺少匹配的框架时,turbo:frame-missing 事件被触发。例如,如果框架缺失的原因是访问(例如,会话过期),则对 visit() 的调用可以通过 { action: “replace” } 来移除 Turbo 的页面历史记录中的当前页面。

在 Turbo 流中激活 <script>

当<turbo-stream> 元素连接到文档时,所有包含的 <script> 元素都会被激活。

在缓存中保留<select> 值

此更改将在创建快照时保存 <select> 标签的值,以便在历史记录中向前或向后导航时,表单字段不会被重置。

本周就到此为止。下次再见!