大家好,周一快乐!我是 Vipul,带来本周 Rails 的最新更新(稍晚了些 😅)。让我们开始吧。
Rails 7.2 已发布
Rails 7.2 已发布!
请前往 发布说明 查看更多详情,简而言之,它提供了更好的生产环境默认设置、开发容器、新的指南设计等等!
新的指南 Pull Request 待审核
两个新的指南 Pull Request 现已开放社区审核。如果您精通 Rails Routing、Active Record Associations,请在此处进行审核并提交您的反馈:
Rails 8 默认使用 Thruster
Thruster 是一个资产压缩和缓存代理,具有 X-Sendfile 加速功能,可以加速简单的生产就绪型 Rails 应用程序部署。它与 Puma 一起运行,通常位于 Kamal 2 代理后面,该代理提供 HTTP/2 和 SSL 自动证书,以帮助您的应用程序在开放的 Internet 上高效安全地运行。
此更改从 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 中该值的冗余动态设置。
改进默认 Action Mailer 配置
此 Pull Request 对默认的 Action Mailer 配置设置进行了一些改进:
production.rb 的注释中建议了默认的 SMTP 服务器配置。使 Puma 默认配置中的处理器计数自动检测成为可选且非默认
在 puma.rb 模板中默认使用 Concurrent.available_processor_count 辅助方法可能会在某些具有共享 CPU 的云主机或 CPU 计数报告不准确的平台上导致错误的配置。
此 Pull Request 将此默认配置更改为可选且非默认。
允许 allow_browser 允许机器人allow_browser 功能会阻止用户代理不匹配特定浏览器版本集的请求。这可能会阻止网站被某些搜索引擎抓取。
此更改修复了此行为,以便在某些爬虫和机器人情况下绕过这些版本限制。
允许 disable_extension 使用模式限定名称调用以用于 PostgreSQL
此更改允许 disable_extension 使用模式限定名称调用以用于 PostgreSQL。
这增加了与 enable_extension 的对等性,disable_extension 方法可以使用模式限定名称调用(例如 disable_extension "myschema.pgcrypto")。请注意,PostgreSQL 的 DROP EXTENSION 实际上不接受模式名称(与 CREATE EXTENSION 不同),因此生成的 SQL 语句将仅命名扩展名,例如 DROP EXTENSION IF EXISTS "pgcrypto"。
您可以在此处查看所有更改的完整列表:here。
上周,Rails 代码库有 36 位贡献者!
下次再见!
订阅以通过邮件获取这些更新。