大家好,我是 zzak。让我们一起来看看本周 Rails 代码库的改动。
来自 Rails 基金会的消息
尽管今年的 Rails World 门票很快就售罄了,但在此友情提醒,本次会议的录像将很快发布到 YouTube 上——开幕和闭幕主题演讲将立即发布,所有其他会议将在不久后发布。
如果您未能抢到门票,这是一个绝佳的机会,可以关注今年举办的其他 Ruby 会议:https://rubyconferences.org/
添加 ActiveRecord::Result#affected_rows
调用 exec_query 返回的结果现在提供了一个方法来获取受影响的行数。
# Get the number of rows affected by the query:
result = ActiveRecord::Base.lease_connection.exec_query <<~SQL.squish
INSERT INTO posts (title, body)
VALUES ("title_1", "body_1"), ("title_2", "body_2")
SQL
result.affected_rows
# => 2
移除内嵌 Trix 文件,改用“action_text-trix”gem
此更改不应对应用程序产生影响,但可以使 Rails 团队的维护工作更加轻松。这意味着 Trix 的错误修复或安全补丁不再需要等待 Rails 发布才能供应用程序开发人员使用。
Trix 更新至 v2.1.15
顺带一提,CVE-2025-46812 已在最新版本的 Trix 中修复。请尽快更新您的应用程序。
Ruby 3.5 时仅在需要时从 CGI 加载
通过淘汰 CGI 作为 Ruby 标准库捆绑 gem,Rails 已更新为加载 cgi/escape,该 gem 中的其他部分仍然受支持且不会发出警告。
添加对 Cache-Control 请求指令的支持
此 PR 添加了对请求中各种缓存控制指令的支持,以控制 HTTP 客户端如何处理缓存。基于 RFC-9111,该标准详细介绍了 max-age、max-stale、min-fresh 和 no-cache 的策略。
def show
if request.cache_control_directives.only_if_cached?
@article = Article.find_cached(params[:id])
return head(:gateway_timeout) if @article.nil?
else
@article = Article.find(params[:id])
end
render :show
end
您可以在此处查看完整的更改列表。 上周,我们有 22 位贡献者为 Rails 代码库做出了贡献!
下次再见!
订阅以通过邮件获取这些更新。