2015 年 7 月 17 日,星期五

本周 Rails 更新:告别 Rack::Lock,concurrent-ruby,改进 AC::Parameters 等

由 vipulnsward 发布

####

大家好!

我是来自浦那的 Vipul,正翘首以盼即将到来的开斋节,准备与朋友们一同享用美味的 Sheer khurma 和香喷喷的 Biryani

嗯,美味。

本周 Rails 贡献者

本周共有 28 位贡献者,让 Rails 比以往任何时候都更加出色。非常感谢所有这些了不起的人!如果您想贡献一份力量,总有事情可以 帮助处理

新功能

移除 Rack::Lock

这是本周 Rails 众多并发相关工作中的一项。

eager_loadcache_classes 关闭时,不再强制使用 Rack::Lock,此更改仅防止实际的竞态条件。

这是通过 (可重入) 共享-独占锁 实现的。这允许多个并发请求,但能确保任何代码加载活动都在隔离状态下进行。

改进

用 concurrent-ruby 的 Concurrent::CountDownLatch 替换 ActiveSupport::Concurrency::Latch

ActiveSupport::Concurrency::Latch 已被 gem concurrent-ruby 中的 Concurrent::CountDownLatch 替换。

这取代了 AS 中混乱的并发相关代码,并将其转移到 concurrent-ruby gem,该 gem 提供了许多具有运行时特定优化的并发实用工具。

通过传递 true 弃用强制关联重新加载

这是为了简化关联 API,因为我们可以调用关联代理或父对象的 reload 来获得相同的结果。

因此,现在要重新加载,对于集合,将调用 @user.posts.reload 而不是 @user.posts(true);对于单一关联,将调用 @user.reload.profile 而不是 @user.profile(true)

有关更多背景信息,请参阅 此邮件列表线程

修复

测试运行器现在可以在 Engine 中正确工作

bin/rails test 现已扩展,可以在 Engine 中正常工作,而以前我们需要执行 rake test

ActionController::Parameters 不再继承自 HashWithIndifferentAccess

继承自 HashWithIndifferentAccess 允许用户在 Parameters 对象上调用任何枚举方法,这可能导致 permitted? 状态丢失,甚至返回纯 Hash 对象而不是具有正确清理的 Parameters 对象。

此更改修复了此行为,并确保 Parameters 上定义的所有方法都将返回具有正确 permitted? 标志的 Parameters 对象。

本周内容总结

以上就是本周 Rails 的全部内容。与往常一样,还有许多我们未在此详述的更改,但请随时 自行查看

您是否一直在考虑为我们撰稿,但又害怕将自己暴露出来?别担心,您可以通过有建设性的批评和全面的语法纠错来帮助我们的编辑提高写作水平。

您愿意这样做吗?今天就告诉 Godfrey