Vipul 发来问候。
这周很繁忙,许多变更已提交到 master 分支。
我们实施了许多性能改进,修复了错误并新增了一些功能和增强。
我还以为每个人现在都在玩Pokemon Go呢。
没错,Kasper 拥有了一张卡通头像!
Kasper 帮助进行了许多变更,也帮助其他人进行了许多变更。
他不断做出实质性个人贡献,比如新的部分集合缓存 方案、通配符模板依赖项和测试运行器的重大改进。
本周有 30 位杰出开发者做出了贡献。其中 2 位开发者的提交首次合并到 Rails 中。
非常感谢你们所有人!❤️如果您希望在下周看到自己的名字,不妨看看当前问题列表?对文档进行改进也是一个不错的起点!
String#blank? 现在使用 Regex#match?,这是在引入Regex#match? 的反向兼容添加之后做出的。
借助 Ruby 2.4 中新的正则表达式改进,这有助于将性能提升 2 倍!
ActiveSupport::TestCase 得到增强,可以使用assert_difference 以及更通用的用法。
借助这种方便的比较,我们现在可以执行类似如下内容的操作 -
user = User.start_registration
assert_changes ‘user.token’,from: nil,to: /\w{32}/ do
user.finish_registration
end
对在操作之前和之后的各州进行封装。
可调用自定义缓存键的支持已重新添加到视图缓存中。这支持我们执行如下操作
<%= render partial: ‘projects/project’,collection: @projects,cached: -> project { [project,current_user] } %>
并传递基于可调用代码块的键,该代码块支持我们基于调用的结果依赖缓存及缓存过期。在上述情况下,缓存将随着project 和 current_user 对象的变更而过期。
这一更改在 CollectionProxy 中添加了 exists? 和 update_all 以遵循关联作用域。
在 Rails 的最新版本中,当对集合对象(如 user.references.update_all(…))调用 update_all 或 exists? 时,都会引发问题。
在此项更改之前,在启用 AR 的 time_zone_aware_attributes 时,使用无效参数进行多参数属性的转换会引发问题,因为这会导致转换无效。
现在,新更改仅在具有有效值时,才会尝试进行转换,以确保安全转换。
之前,将合并用作构建作用域的第一个方法会导致错误 -
作用域 :unsafe_chaining -> { 合并(Comment.newest) } #=> NoMethodError
现在,此项更改允许我们克服此问题,并构建如下所示的作用域 -
作用域 :_chaining ->{ 合并(Comment.newest).joins(:comments) } # => OK_
此项更改允许 MessageEncryptor 现在支持 经过身份验证的加密模式。
aes-256-gcm 等 AEAD 模式可同时提供机密性和数据真实性,无需使用 MessageVerifier 检查加密数据是否被篡改。这加快了加密/解密速度,并缩短了密文长度。
此项更改删除了创建 config/initializers/session_store.rb,该文件通过初始化程序定义会话存储,并在内部设置默认会话存储。
默认情况下,会话存储将设置为使用应用程序名称作为会话密钥的 cookie 存储。
Rails 本周更新内容已全部结束!还有许多其他重大贡献,不一一列举,但欢迎 查看!
我们下周见!