2008 年 12 月 19 日星期五

本周的 Edge Rails

Mike Gunderloy 发布

2008 年 12 月 13 日至 12 月 19 日版

本周 Rails 团队不冬眠:50 条提交从各个开发者那里提交到了 edge 分支。以下是本周最令人感兴趣且重要的核心新代码选项。

Rails Metal

如果您一直都跟上 Rails 的动态,您本周一定听说过 Metal:突破路由限制并绕过 Action Controller 的 Rails 应用中超高速端点,可提供原始速度(当然要以牺牲所有 Action Controller 的功能为代价)。这是在所有近期基础性工作(使 Rails 成为具有公开中间件堆栈的 Rack 应用程序)的基础上构建的。与其更详细地解释 Metal,不如让您也了解它

基于 Rack 的会话存储

一个重大更改将 Action Controller 会话存储的基础设施下推到 Rack 级别。这涉及代码中大量的处理工作,尽管这对您的 Rails 应用程序来说应该是完全透明的(作为一个奖励,旧的CGI会话处理程序中的一些令人讨厌的修补程序已删除)。然而,由于一个简单的原有,它仍然很重要:非 Rails Rack 应用程序可以访问与 Rails 应用程序相同的会话存储处理程序(因此是相同的会话)。此外,会话现在是惰性加载的(符合对框架其余部分的加载改进)。提交

与之相关的更改是为 Cookie 会话提供持久的会话标识符,并且API与服务器端存储兼容。 提交

MIME类型处理

对 Rails 中用于处理MIME类型的代码进行了一些更改。首先,MIME::Type现在实现了=~运算符,当您需要检查具有同义词的类型的存在时,可以更加清晰


if content_type && Mime::JS =~ content_type
  # do something cool
end

Mime::JS =~ "text/javascript"        => true
Mime::JS =~ "application/javascript" => true

另一处更改是框架现在在多个位置检查 javascript 时使用Mime::JS,使其可以清晰地处理这些替代项。 提交 提交

Active Record 清理

尽管 Active Record 实际上一直是 Rails 的核心部分,但人们总能在各个方面对其进行性能和可用性优化。本周的提交内容包括停止生成某些无用的查询,尤其是在处理“has_many”关联 (commit) 时,修复“find_by_foo!”调用失败时的错误消息(commit),解决一些关联预加载问题(commitcommit)以及提高 MySQL 适配器的性能(commit)。

琐事

还记得前几周 edge 中的日志文件噪音清理工作吗?在此基础上,我们现在为后缀中的任何 Gem 输出提供了更漂亮的打印方式。commit

如果您在 edge 上,那么 Rails 现在强制要求使用 Mocha 0.9.3 或更高版本,以运行测试。commit

ETag 处理已得到一定程度的清理:现在,当响应中没有正文或使用“send_file”发送文件时,Rails 将跳过发送 ETag 头。commit

如果您想追踪过去是谁为 Rails 工作的,那么现在变得更容易了,这得益于 Xavier Noria 的庞大数据收集和修补工作:他遍历了所有的变更日志,并标准化了作者名,这样我们就不再需要这堆名字、句柄和电子邮件地址的混搭了。commit