2018年5月27日,星期日

Enumerable#index_with,事务修复等!

发布者:eugeneius

大家好!我是Eugene,这是过去两周Rails世界活动情况的总结。让我们开始吧!

本周贡献者

在过去的几周里,Rails收到了29个人的贡献,其中包括10位首次贡献者。感谢大家!

如果您也想被包括在内,为什么不看看开放的issue列表呢?

添加 Enumerable#index_with

这个新方法将一个可枚举对象转换为一个哈希,其中键是可枚举对象的元素,值由提供的块或参数确定。

Action Mailer 现在会预加载 mail gem

在启动期间加载 mail gem 可以避免第一个请求承担责任,并且可以方便地绕过作者在他们的应用程序中遇到的死锁。

允许对 Range 使用 Range#===Range#cover?

Active Support 扩展了 Range#=== 以匹配其他范围,但对原生 Ruby 实现的更改破坏了它。此补丁确保该行为在 Ruby 2.6 上可以正常工作,并且为了确保万无一失,还将其添加到了 Range#cover? 中。

xor_byte_strings 的速度提高了 70%

此性能补丁附带的基准测试显示,每次 Rails 生成 CSRF 令牌时,都可以节省大约 5 微秒。🐎

子记录保存失败时回滚父事务

如果记录的关联包含有效但无法保存的数据,现在将正确地无法保存并回滚其事务。

在实际事务后最终确定事务记录状态

当一个记录在同一个事务中被保存多次时,如果该事务后来被回滚,其之前的状态并不总是立即恢复。

为 SQLite3 适配器禁用 alter_table 期间的外键

现在,在使用 SQLite3 适配器时,可以成功修改被外键引用的表。

另外,Rails 6.0 将需要最低 SQLite 版本 3.8.0

一如既往,Rails 代码库发生了许多比我们在此能涵盖的更多的更改 - 如果您感兴趣,可以查看过去两周提交的完整列表。下周再见!