2011 年 12 月 20 日星期二

Rails 3.2 RC1:更快的开发模式及路由,解释查询,标记记录器,存储

大卫发布

一旦你登上 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

活动记录存储

键值存储非常棒,但你不必总是为了一个小型变量键操作而动用大量空间。因此,我们推出了活动记录存储

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 阶段,但请通过 报告错误 来打破这个计划。

像往常一样,你可以通过 gem install rails --pre 安装候选版本。