2011年12月20日,星期二

Rails 3.2 RC1:更快的开发模式和路由、查询解释、标记化日志记录、存储

作者:David

一旦你踏上了 Rails 的列车,你就知道沿途的每一站都会是一段美好的时光。这个发布候选版也不例外,我们为其注入了许多精心设计的改进,而升级过程却不会让你烦恼。

更快的开发模式和路由

最显著的新特性是开发模式的速度得到了极大的提升。受 Active Reload 的启发,我们现在只重新加载你实际更改过的文件的类。对于大型应用程序来说,这种区别是巨大的。

得益于 新的 Journey 引擎,路由识别速度也大大加快,链接生成速度也更快(尤其是在一个页面上有 100 多个链接时,这一点尤为明显)。

解释查询

我们增加了一种 快速简便的方法来解释 ARel 生成的查询。在控制台中,你可以运行类似 puts Person.active.limit(5).explain 的命令,你就能得到 ARel 生成的查询的解释(这样你就能轻松地看到它是否使用了正确的索引)。在开发模式下,甚至还有一个默认阈值,如果查询运行时间超过半秒,它就会自动内联解释——怎么样!

标记日志

当你运行一个多用户、多账户的应用程序时,能够按用户过滤日志会非常有帮助。现在有了 TaggedLogging 包装器。它的工作原理如下:

Logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT)) Logger.tagged(“BCX”) { Logger.info “Stuff” } # 日志输出 “[BCX] Stuff” Logger.tagged(“BCX”) do Logger.tagged(“Jason”) do Logger.info “Stuff” # 日志输出 “[BCX] [Jason] Stuff” end end

Active Record 存储

键值存储很棒,但并不总是需要为了一个小的变量键操作而进行大量的设置。现在有了 Active Record 存储。

class User < ActiveRecord::Base store :settings, accessors: [ :color, :homepage ] end

u = User.new(color: ‘black’, homepage: ‘37signals.com’) u.color # 访问器存储的属性 u.settings[:country] = ‘Denmark’ # 任何属性,即使没有通过访问器指定

这只是其中的几个亮点。完整的 发布说明 详细说明了每一次细微的更改。

鉴于这是一个发布候选版,我们非常期待听到您的反馈。我们希望这是一个快速的 RC 阶段,但请通过 报告 bug 来扰乱这一计划。

一如既往,您可以通过运行 gem install rails --pre 来安装一个发布候选版。