2022 年 12 月 30 日,星期五

本年度的 Rails 总结,2022 年的摘要!

作者 gregmolnar

嗨!

我是EmmanuelGregWojciech,我来总结过去一年中 Rails 发生了什么。这一年事情很多,3131 个提交来自491 个贡献者,并发布了 31 个版本!我们仔细挑选了最重要的拉取请求纳入其中,但由于需要让时事通讯保持简洁,我们可能忽略了一些。也就是说,Emmanuel 正在编制今年 Rails 的拉取请求的全面清单

Introducing: The Rails Foundation 万一你错过了,Rails 已经创建了 Rails 基金会,拥有八个创始成员!创始成员共同捐赠了 1,000,000 美元,这将帮助基金会完成改善我们生态系统中的文档、教育、营销和活动的任务。更多在此

Stimulus 获取了一个 Outlet API关于 Hotwire,这个拉取请求收到了热烈欢迎。我联系了作者Marco Roth,他洋洋洒洒地写了一份文档,完美地总结了 Outlet API

Outlet API 允许您通过使用 CSS 选择器在另一个 Stimulus 控制器中引用 Stimulus Controller 实例及其控制器元素。Outlet 的使用有助于跨控制器通信和协调,作为在控制器元素上分发自定义事件的替代方案。

允许按每个属性设置 YAML 序列化选项此拉取请求添加了按每个属性设置 YAML 序列化选项的功能,以及当前的应用程序范围设置。

Docked Rails CLI对于初学者来说,第一次使用所有必需的依赖项设置 Rails 可能是一项艰巨的任务。Docked Rails CLI 使用 Docker 镜像使其变得更加容易,只需要安装 Docker 即可。

添加默认 Dockerfile此拉取请求默认将 Docker 文件添加到新应用:Dockerfile、.dockerignore、bin/docker-entrypoint。这些文件可以使用 –skip-docker 跳过。它们旨在作为应用程序生产部署的起点。不适用于开发(为此使用上面提到的 Docked Rails)。您可以在拉取请求中看到关于使用它的更多详细信息。

使用 error_highlight gem 来找出引发错误的列 Ruby 3.1 添加了 error_highlight gem 以显示错误发生位置的细化位置。Rails 现在将在错误页面中使用 error_highlight 来显示错误发生处的列范围。

通过 has_secure_password 支持密码挑战

这样便可以像实现密码确认一样轻松地实施密码挑战,在视图和控制器中重复使用相同的错误处理逻辑。

在创建 mysql 数据库时自动创建用户并授予权限 每当你需要在本地计算机上设置 Rails 时,都得创建数据库用户并授予其权限,这可能很繁琐。这一更改将其添加到 MySQL 构建 Rake 任务中,使用的是没有密码的root 用户。

停止自动关闭公关 虽然通过无聊信息催促审阅者并关闭在规定时间内没有得到审阅的公关来清理公关列表的想法能对维护者奏效,但实际上它会 discourage 贡献者提交贡献内容。

向应用生成器添加 –name 选项–name 选项会覆盖应用名称,使其与文件夹名称不同。

如果唯一字段没有更改且由唯一索引支持,则避免对其进行验证

先前,在保存记录时,Active Record 会执行额外的查询来检查每个具有唯一性验证的属性的唯一性,即使该属性没有更改。如果数据库具有相应的唯一索引,那么对于持久的记录,此验证永远不会失败,我们可以安全地跳过它。

允许退出 SameSite cookie 你现在可以通过传递same_site: nil 来选择退出在你的 cookie 上使用 SameSite

普通表表达式支持“开箱即用 你现在可以通过在模型中使用.with 查询方法,利用普通表表达式来构建复杂查询。.with 方法支持使用 Active Record 关联关系,而无需手动构建 Arel::Nodes::As 节点。

允许在安全密码验证中传递哈希 你现在可以向 _has_secure_password 传递一个选项哈希(带有 :if / :unless / :on 键),以控制何时执行验证。

为 PostgreSQL 添加 drop_enum 迁移命令 这是 create_enum 的反向操作。在删除枚举之前,确保你已经删除了依赖于该枚举的列。

添加 ActiveRecord::Base::normalizes 该方法可用于为属性值声明规范化。当分配或更新属性时应用规范化,并且规范化的值将持久存在于数据库中。规范化还应用于查找器方法的匹配关键字参数。这允许创建记录,并使用未规范化的值进行后续查询。

再见!祝您度过一个愉快的除夕,并期待我们明年的会面!

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