2022年12月30日,星期五

今年的 Rails,2022 年总结!

由 gregmolnar 发布

嘿!

我是Emmanuel,这是GregWojciech,为您带来过去一年Rails的总结。这是忙碌的一年,有3131次提交,来自491位贡献者,以及31个发布!我们仔细挑选了最重要的拉取请求进行收录,但由于需要保持新闻通讯的简洁性,我们可能遗漏了一些。尽管如此,Emmanuel正在编译一份今年Rails的完整拉取请求列表

隆重推出:Rails基金会 如果您错过了,Rails已经成立了Rails基金会,有八位创始成员!创始成员总共捐款1,000,000美元,将用于支持基金会改善我们生态系统的文档、教育、营销和活动的使命。更多信息请点击此处

Stimulus增加了Outlets API 在Hotwire方面,这个拉取请求受到了热烈欢迎。我联系了作者Marco Roth,他写了一份文档,完美地总结了Outlet API。

Outlets API允许您通过CSS选择器在另一个Stimulus Controller中引用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用户且无密码。

停止自动关闭PR 虽然通过发送过时消息提醒审阅者并关闭未及时获得审阅的PR以清理PR列表的想法对维护者来说可能有效,但实际上它会阻碍贡献者提交贡献。

在应用程序生成器中添加 --name 选项 --name 选项将覆盖应用程序名称,使其与文件夹名称不同。

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

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

允许选择退出SameSite cookie 您现在可以通过传递 same_site: nil 来选择不使用SameSite on your cookies。

开箱即用支持公共表表达式 您现在可以使用模型上的.with查询方法构建复杂的公共表表达式查询。.with方法允许使用Active Record关系,而无需手动构建Arel::Nodes::As节点。

允许在安全密码验证中传递Hash 您现在可以向 _has_secure_password 传递一个选项哈希,其中包含:if / :unless / :on键,以控制何时执行验证。

为PostgreSQL添加drop_enum迁移命令 这是create_enum的逆向操作。在删除enum之前,请确保已删除依赖于它的列。

添加ActiveRecord::Base::normalizes 此方法可用于声明属性值的规范化。当属性被分配或更新时,将应用规范化,并且规范化后的值将被持久化到数据库。规范化也适用于查找方法的匹配关键字参数。这允许使用未规范化的值创建并随后查询记录。

到此结束!祝您新年快乐,明年再见!

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