2021 年 5 月 28 日,星期五

活动记录加密、若干性能优化,还有更多精彩!

发布人:zzak

大家好,我是 zzak!お久しぶりです!这次我将给大家回顾一下过去一个月左右的 Rails。坚持住!有很多内容需要跟进!

活动记录加密

该特性源自 HEY,它向活动记录模型添加了加密属性。您可以在 指南 中了解更详细的内容。

优化 Cache::Entry 编码器

经过长期等待,Active Support 的缓存获得了显着提升。

优化 Active Model 生成的属性方法

此优化应减少内存开销并加快启动时间。

为 ActiveRecord::Base.logger 加速 7 倍

通过将 AR::Base.logger 转换为 class_attribute,我们的性能获得了显着提升。

允许为引擎嵌套区域设置

这为使用 i18n 的大型应用提供了更好的组织方式。例如,config/locales/en/models.yml 与 config/locales/models.en.yml

在 Active Job 中支持范围对象

此更改为 Ruby 中的范围对象添加了一个 Active Job 序列化器。

向 Active Support 中添加 Enumerable#sole

此方法基于 ActiveRecord::FinderMethods#sole,返回可枚举的唯一项目。如果没有项目或有多个项目,它将引发异常。

弃用 Enumerable#sum 和 Array#sum

由于 Ruby 2.4 包含了这些方法,Rails 可以开始使用本机版本来大幅提高性能。

提高 #one? 和 #many? 的活动记录性能

通过限制生成的计数查询,此优化可以显著提高多行操作的性能。

在生产环境中运行 SQLite 时记录警告

现在,当在生产环境中尝试使用 SQLite 时,将发出警告,可以通过将 config.active_record.sqlite3_production_warning 设置为 false 来禁用此功能。

向 has_one 关联添加 disable_joins 选项

此选项解决了 has_one…属于关联问题,这些关联的表位于不同的数据库集群中。

添加对 require-trusted-types-for 和 trusted-types 的支持

此特性支持这两个 Content-Security-Policy 头,您可以在 MDN 上了解更多相关信息。

移除和弃用 Rack::Runtime

仍然依赖此中间件的任何应用都可以手动激活它,否则将发送弃用警告并用一个虚拟的中间件替换它。

允许访问 Rails.application.credentials 中的嵌套机密

现在,Rails.application.credentials.aws.access_key_id 将返回与 Rails.application.credentials.aws[:access_key_id] 相同的内容。

添加 ActionController::Live#send_stream

添加了将二进制数据实时传输到浏览器的功能,就像 send_data 对静态文件所做的那样。

提取 ActiveStorage::Streaming

这允许您在任何控制器中从云存储中传输 Blob。

向 ActiveSupport::TestCase#assert_no_changes 添加 from: 选项

此功能向 assert_no_changes 提供一个可选关键字参数,用于指定预期的初始值。

61 人在本月对 Rails 做出贡献。查看公开问题以参与并提供帮助。下周见!