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

通过 concurrent-ruby gem 中的 Concurrent::CountDownLatch 替换了 ActiveSupport::Concurrency::Latch

这替换了 AS 中杂乱的并发相关代码,并且将其卸载到 concurrent-ruby gem 中,它拥有许多并发实用工具以及针对运行时进行的特别优化。

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

这是为了简化关联 API,因为我们可以对关联代理或父对象调用重新加载以获取相同的结果。

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

另请参阅 此邮件列表线程 以了解更多背景信息。

修复

测试运行器现在可以在引擎内正确运行

现在已将 bin/rails test 扩展为在引擎中也能正常运行,但之前需要执行 rake test

ActionController::Parameters 不再继承 HashWithIndifferentAccess

继承自 HashWithIndifferentAccess 允许用户对 Parameters 对象调用任何可枚举的方法,这会导致 permitted? 状态丢失,或者返回一个纯 Hash 对象,而不是带有正确消毒的 Parameters 对象.

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

结束了

这是本周 Rails 的全部内容。一如既往,有很多更改,无法在这里涵盖,但请随时 自行检查

您是否想过为我们撰稿,但是害怕自己无法脱颖而出?别担心,您可以通过深思熟虑的批评和一般的语法监督来帮助我们的编辑改进他们的写作.

您是否愿意?今天就告诉 Godfrey