大家好,星期一快乐!Vipul 来介绍一下本周的 Rails 新闻(来自上周😅)。让我们开始吧。
Rails 7.2 已发布
Rails 7.2 已发布!
前往 发布文章 查看更多详情,简而言之,它附带了更好的生产环境默认配置、Dev 容器、新的指南设计,以及更多更多内容!
新的 Guides Pull Requests 正在审核中
现在有两个新的 Guides Pull Requests 开放社区审核。如果您精通 Rails 路由、Active Record 关联,请在此处查看并提交您的反馈
Rails 8 默认使用 Thruster
Thruster 是一种资产压缩和缓存代理,带有 X-Sendfile 加速功能,可以加速 Rails 应用程序的简单生产就绪部署。它与 Puma 并行运行,通常位于 Kamal 2 代理之后,Kamal 2 代理提供 HTTP/2 和 SSL 自动证书,以帮助您的应用程序高效安全地运行在开放互联网上。
从 Rails 8 开始,此更改默认在 Dockerfile 中配置 Thruster 的使用。
加快 ActionDispatch::Routing::Mapper::Scope#[]
的速度,方法是合并帧哈希
在此更改之前,ActionDispatch::Routing::Mapper::Scope#[]
查找正在遍历数组,这意味着访问时间并不恒定,并且实际上没有像哈希一样运行。
此 Pull Request 更改了范围实现,通过将继承的值合并到直接哈希中来加快查找速度。
这有助于避免对深度嵌套路由进行不必要的迭代,从而使其速度提高约 1.2 倍。
删除冗余的 Puma 配置设置
此 Pull Request 删除了 puma.rb
中以下冗余的环境设置
# Specifies the `environment` that Puma will run in.
rails_env = ENV.fetch("RAILS_ENV", "development")
environment rails_env
case rails_env
when "production"
preload_app!
when "development"
# Specifies a very generous `worker_timeout` so that the worker
# isn't killed by Puma when suspended by a debugger.
worker_timeout 3600
end
这些更改解决了最近的 Puma 升级问题,即:
preload_app!
在集群模式下会自动设置。worker_timeout
是集群模式的功能,我们在开发中不会运行它。Puma 的另一个更改是 WEB_CONCURRENCY
会自动从 ENV 中使用,现在直接解析,因此无法在 Puma 配置中用“auto”扩展。
此相关更改 解决了此问题,并删除了 puma.rb
中对该值的冗余动态设置。
改进默认的操作邮件器配置
此 Pull Request 引入了一些对默认操作邮件器配置设置的改进
production.rb
中的注释中建议使用默认的 SMTP 服务器配置。使默认 Puma 配置中处理器数量的自动检测可选且非默认
在 puma.rb
模板中默认使用 Concurrent.available_processor_count
助手可能会导致在某些具有共享 CPU 的云主机或不准确报告 CPU 数量的平台上出现错误配置。
此 Pull Request 将此默认配置更改为可选且非默认。
允许 allow_browser 允许机器人allow_browser
功能会阻止与不匹配特定浏览器版本集的用户代理的请求。这存在阻止某些搜索引擎抓取站点的风险。
此更改修复了此行为,以便在某些爬虫和机器人的情况下绕过这些版本限制。
允许使用带模式限定的名称在 PostgreSQL 中调用 disable_extension
此更改允许使用带模式限定的名称在 PostgreSQL 中调用 disable_extension
。
这与 enable_extension
相一致,disable_extension
方法可以使用带模式限定的名称调用(例如 disable_extension "myschema.pgcrypto"
)。请注意,PostgreSQL 的 DROP EXTENSION
实际上不会采用模式名称(与 CREATE EXTENSION
不同),因此生成的 SQL 语句只会命名扩展,例如 DROP EXTENSION IF EXISTS "pgcrypto"
。
您可以在这里查看整个更改列表 这里。
过去一周,我们有 36 位贡献者 为 Rails 代码库贡献代码!
下周再见!
订阅 以获取这些更新邮件。