大家好,我是 zzak。✈️ RailsConf 现已落下帷幕,日本的黄金周也即将来临。本周 Rails 要闻回顾有很多内容值得关注。
许多文档改进以增强我们的 SEO 态势
备受尊敬的 @p8 一直在努力改善 Rails 文档在搜索引擎中的表现。
关于文档,PostgreSQL 指南新增了关于 INCLUDE、UNIQUE 和 EXCLUDE 的新章节。
仅展开第一层以保留 Enumerable#in_order_of 中的嵌套内容
这是一个很好的例子,一位开发者在用 Rails 主分支积极测试他们的应用程序时发现了这个 bug,甚至还提交了一个补丁!干得漂亮!
修复 pg 1.5.0 弃用警告
使用最近发布的 pg gem 版本 1.5.0 时会出现此警告。此 PR 已向后移植,因此下一个次要版本应该会解决这个问题!
如果 ActiveSupport::Cache 键为空,则始终引发 ArgumentError
例如:
@cache.read(nil) #=> ArgumentError
此 PR 确保我们对所有存储实现中的空键都始终引发异常。
使 Rails cookies 符合 RFC6265 标准,使用 domain: :all
当存在 domain: :all 选项时,Rails 错误地在 Set-Cookie 标头中为 cookie 域值添加了前导点。
根据 RFC 2965(2000 年 10 月)中的规定,cookie 需要此前导点,但 RFC 6265(2011 年 4 月)改变了行为,使得前导点严格不正确。如今的浏览器在 cookie 方面力求符合 RFC6265。Rails 中 domain: :all 功能的出现早于 RFC6265。
允许符号作为 Active Job 测试断言中的队列名称
此 PR 允许 assert_enqueued_with 和 assert_performed_with 同时接受符号和字符串。
assert_enqueued_jobs 和 assert_performed_jobs 的变体已经接受了两者。
config.load_defaults = 7.0 #=> NoMethodError
应该是:
config.load_defaults(7.0)
之前,第一个示例会被静默接受,但不会产生任何效果。
为 ActiveRecord::ConnectionAdapters::Mysql2Adapter 添加加载钩子
现在您可以使用以下钩子自由扩展 MySQL 适配器
ActiveSupport.on_load(:active_record_mysql2adapter) do
# change some behavior
end
此 PR 使 MySQL 适配器与 PostgreSQL 和 SQLite3 同步。
修复 before_update 回调中 updated_at 未更新的问题
如所述,此 PR 确保在所有 update 回调运行后,updated_at 时间戳会得到更新,无论发生何种变异,包括 before_update。
使用 StringIO 的 Rack::Test::UploadedFile.new 会导致异常
此 PR 修复了 Active Storage 中 Rack::Test::UploadedFile 和 Attached::Changes::CreateOne#upload 的一个问题。
PostgreSQL 可接受 TableDefinition#references 的延迟外键选项
Rails 7.0 为延迟外键约束添加了支持(通过 add_foreign_key 方法),此 PR 也为 t.references 添加了支持。
弃用“deferrable: true”选项,改为使用“deferrable: :immediate”
因为 deferrable: true 和 deferrable: :deferred 难以理解。
使用 add_foreign_key 时的 deferrable: true 已弃用,取而代之的是 deferrable: :immediate,并将在 Rails 7.2 中移除。
为 ActiveRecord::Relation 添加 Array#intersects? 支持
Ruby 3.1 添加了 intersects?,它等同于 (a & b).any?。
此 PR 将 intersects? 的委托添加到 Relation 中,这修复了 Rubocop 在 CollectionProxy 上出现误报的问题。
为 join 添加 CTE 支持
最后但同样重要的是,当使用 .with 查询方法创建公共表表达式 (CTE) 时,您现在可以使用 joins 和 left_outer_joins。
您可以在 这里查看所有更改。
上周,有 30 位贡献者为 Rails 代码库做出了贡献!
下次再见!
订阅以通过邮件获取这些更新。