2021年5月28日,星期五

Active Record 加密、多项性能优化以及更多!

作者:zzak

大家好,我是 zzak!お久しぶりです! 这次我将回顾过去一个月左右的 Rails 更新。请做好准备!有很多内容需要了解!!

Active Record 加密

此功能最初从 HEY 中提取,为 Active Record 模型添加了加密属性。您可以在 指南中了解更多信息。

优化 Cache::Entry coder

Active Support 的缓存获得了期待已久的显著速度提升。

优化 Active Model 生成的属性方法

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

ActiveRecord::Base.logger 加速 7 倍

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

允许 Engines 嵌套 locales

这为使用 i18n 的大型应用程序提供了更好的组织方式。例如:config/locales/en/models.yml 而不是 config/locales/models.en.yml

在 Active Job 中支持 Range 对象

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

向 Active Support 添加 Enumerable#sole

基于 ActiveRecord::FinderMethods#sole,此方法返回可枚举对象中的唯一项。如果不存在项或存在多个项,它将引发异常。

弃用 Enumerable#sum 和 Array#sum

由于 Ruby 2.4 包含了这些方法,Rails 可以开始使用原生版本以显著提高性能。

提高 Active Record 的 #one? 和 #many? 性能

通过限制生成的计数查询,此优化为多行操作提供了显著的性能提升。

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

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

为 has_one 关系添加 disable_joins 选项

这解决了 has_one…through 关系中表位于不同数据库集群的问题。

添加对 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 做出了贡献。查看 未解决的问题 来参与并提供帮助。下周再见!