2023 年 5 月 26 日星期五

本周 Rails 资讯 - 2023 年 5 月 26 日

作者:zzak

嘿!以下是 zzak 为你们带来的另一期本周 Rails 资讯。

提示:Rails World CFP 接收征稿至 6 月 16 日。
无论你是经验丰富的资深人士还是 Rails 生态系统的新人,我们都鼓励你提交提案,展示富有前瞻性的想法并突破 Rails 中的可能性边界。

Rails 7.0.5 已发布
万一你错过了,已完成 Rails 7.0 系列的错误修复版本。

提高 MemoryStore 性能
此 PR 优化了 MemoryStore::DupCoder 内部 API,以避免在写入和读取复杂对象时进行不必要的工作。

重构错误高亮检测
在此提交之前,某些对 render 的调用将错误高亮硬编码为“不可用”。这导致某些错误页面显示“你应安装错误高亮”消息,而即使已安装正确版本的错误高亮也一样。

对命名空间使用短格式固定宽度 RDoc 形式
一些工作致力于用 RDoc 支持的较短的“+…+”语法替换“Some::Namespace::Thing”这些出现。
这只是提醒编写文档的人们,此语法可用于所有固定宽度代码,前提是不包含括号、空格或原始“字符串”。对于直接查看代码(和编写代码)的读者来说,这在视觉上更加友好。

在引擎中自动将 “test/fixtures” 添加到 “fixture_paths”
此 PR 利用最近添加的 TestFixtures#fixture_paths 特性,以便应用程序使用固定装置的任何引擎也将自动加载。

修复二进制序列化列的 “change_in_place?”
当给存储在 blob 列中的序列化属性提供 unicode 字符时,发生了一个错误,这将始终显示该属性上发生了更改。

使用 “app:template” 命令运行 “after_bundle” 块
应用程序模板可能包含在运行 bundle install 后在模板执行后应运行的 after_bundle 块。例如

gem "devise"

after_bundle do
  generate "devise:install"
end

“ERB::Util.html_escape_once” 现在始终返回 “html_safe” 字符串
此方法以前在返回值上维护了字符串的 html_safe? 属性。但是,由于此字符串已转义,因此未将其标记为 html_safe,从而导致实体被双重转义。在此更改之前,将被双重转义并呈现为

<p>this &amp;amp; that &amp;amp; the other</p>

在此更改之后,可以正确呈现为

<p>this &amp; that &amp; the other</p>

弃用 “SafeBuffer#clone_empty”
由于 2014 年(Rails 4.2.0)中删除了最后一个调用者,此内部方法已不再在 Rails 代码库中使用。

添加 “Arel::Nodes::Cte” 以在 WITH 表达式中使用
虽然 Arel 仍然是私人 API,但此 PR 仍然值得关注。此项添加给 with 方法提供了接受通用表表达式 (CTE) 的能力,该表达式可为生成的 SQL 语句添加 MATERIALIZEDNOT MATERIALIZED 提示。
Postgres 和 SQLite 都支持 CTE 语法的非标准扩展,以表示应具体化 CTE 子查询,即不将其折叠到主查询中而是单独评估。当查询计划程序在其他情况下做出错误决策时,这会很有用。

在 “assert_enqueued_email_with” 中通过 “:args” 使 params 弃用。
在使用 assert_enqueued_email_with 测试 Action Mailer 时,你应使用 :params kwarg 将选项哈希传递给邮件程序。例如

assert_enqueued_email_with MyMailer, :my_method, params: { my_param: "value" }

修复带分隔符授权头的空值问题
此处的错误发生在包含空格(例如 ,,,)的分隔 Authorization 头部值会产生 ArgumentError,从而导致 500 错误响应。

添加 “ActiveRecord.disconnect_all!” 以关闭所有连接
这基本上是 ActiveRecord::Base.connection.disconnect! 的多数据库感知版本。它还避免在尚未连接到数据库的情况下进行连接。这有助于在使用 establish_connection 后重置状态。

改进应用生成器的 JS 和 CSS 选项
使用 --javascript--css 标志生成新 Rails 应用时的 UX 在此处得到了改进。查看 PR 中的表格,该表格更详细地解释了行为更改。

模型生成器源路径应允许自定义
此 PR 复活了时间流逝中遗失的较旧 PR,通过添加测试和消除警告。很高兴看到能够解决自己问题的人,并从较早的 PR 中循环利用代码。无需重新发明一切!

更新所有三个 en.yml 文件中与布尔值相关的注释
我特意提出这一点,因为这是 @justinperkins 对 Rails 的第一个 PR!他们已经修复了为生成的区域设置文件编写的注释。恭喜!

使测试环境在响应中显示可抢救的异常
本周的最后一个 PR 更改 config.action_dispatch.show_exceptions 选项的行为,改为使用新的 “可抢救”选项,它仅会在测试环境中显示可抢救的异常(例如 ActiveRecord::RecordNotFound)。

你可以在这里查看完整的更改列表 here
**上周 Rails **代码库有 26 位贡献者参与了此代码库**

我们下次见!

订阅,即可通过邮件收到这些更新。