2024年11月15日,星期五

Rails 8 演示、Rails World 重新编辑的视频、NotificationAssertions 等!

由 vipulnsward 发布

大家好,周五快乐!

Vipul 在这里为您带来本周 Rails 的最新动态。让我们开始吧!

Rails 8:演示
如果您错过了,Rails 8 已于上周发布。DHH 发布了一个新的演示 Rails 8:演示,展示了它的用法。视频涵盖了通过构建一个基础博客、添加 WYSIWYG 编辑器、进行身份验证、将其制作成 PWA 并部署到生产环境来开始使用 Rails 8。整个过程仅需 30 分钟!

Rails World 重新编辑的视频!
所有 Rails World 视频都已重新编辑,并在 YouTube 上发布!由于 Happy Scribe(一个基于 Rails 构建的转录平台)的支持,它们现在还提供了日语、巴西葡萄牙语和西班牙语字幕。

添加 ActiveSupport::Testing::NotificationAssertions 测试助手模块
通过此添加,我们现在可以使用各种通知断言的测试助手方法

assert_notification("post.submitted", title: "Cool Post") do
  post.submit(title: "Cool Post") # => emits matching notification
end

assert_notifications_count("post.submitted", 1) do
  post.submit(title: "Cool Post") 
end

assert_no_notifications("post.submitted") do
  post.destroy
end

notifications = capture_notifications("post.submitted") do 
  post.submit(title: "Cool Post") # => emits matching notification
end

在开发环境中恢复 quiet assets 配置
此配置在 移除 Sprockets 时被删除。它仍然受 propshaft 支持,并且没有此配置,终端会被资产请求日志弄得杂乱无章。此更改将此配置带回,默认情况下可以在开发环境中静默这些日志。

允许 SilenceRequest 中间件使用路径正则表达式
Rails::Rack::SilenceRequest 中间件现在支持路径过滤中的正则表达式。例如

config.middleware.insert_before Rails::Rack::Logger,
                                Rails::Rack::SilenceRequest, path: /up$/

将静默以“up”结尾的路径的日志。

允许 hidden_field(_tag) 接受自定义 autocomplete 值
以前,一项更改引入了 对 Rails 生成的所有隐藏输入强制执行 autocomplete=”off”,以修复 Firefox 浏览器的一个 bug。

但指定一个带有“username”值等 autocomplete 值以及隐藏输入的值也是一个合法的用例。这会提示浏览器(在此示例中)密码重置表单的用户名是我们提供的值,密码管理器可以将其存储为这样。

此提交仅在未提供其他 autocomplete 值时才设置 autocomplete=”off”。

使用 :number_of_processors 的并行测试使用 cgroups 感知的可用处理器计数
使用 :number_of_processors 的并行测试使用 cgroups 感知的可用处理器计数,现在可以通过 Concurrent.available_processor_count 正确使用。

确保 nil 和规范化 nil 的规范化属性查询一致
此更改确保 nil 和规范化 nil 的规范化属性查询一致。例如

class Aircraft < ApplicationRecord
  normalizes :name, with: -> name { name.presence&.titlecase }
end

# With this change, these queries are now consistent:
Aircraft.where(name: nil).to_sql  === Aircraft.where(name: "").to_sql

修复调用 sum 进行分组计算时的回归问题
此更改修复了 sum 在执行分组计算时出现的回归问题。例如 User.group(:friendly).sum 不再工作,现在已修复。

如果 Gemfile 中没有 thruster,则不添加 bin/thrust
升级到 Rails 8.0.0 后运行 app:update 会导致添加 bin/thrust,即使 Gemfile 中没有 thruster

通过在运行 app:update 命令中的生成器时检查 thruster 是否在 Gemfile 中以设置 --skip-thruster 选项来解决此问题。

您可以在此处 查看所有更改的完整列表 上周,Rails 代码库有 37 位贡献者

下次再见!

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