2008 年 11 月 14 日,星期五

本周在 Edge Rails 中

作者 Mike Gunderloy

本周 Edge Rails 中的重要消息是 Edge 2.2.1 的即将发布,即 Rails 2.2 RC2。为此次发布做好准备确实会给 Rails 代码库带来一些显著的变化。

首先,你很有可能需要升级 rubygems 来运行 RC2:现在 rubygems 的必要版本是 1.3.1,而此版本刚刚于昨日发布。此依赖关系属于持续进行的工作的一部分,该项工作目的是让供应商 gem 变得有用且稳定。你可能觉得更新 rubygems 并不会很顺利,这取决于你的当前版本;如果你遇到了什么麻烦,请查看这篇文章提交

Rails 路由引擎在过去一周也出现了一些非常重要的更新。首先,Jeremy Kemper 对核心路由引擎提交了几项修复,从而减少了对象创建和正则表达式创建,进而减少了内存使用量。 提交 提交 此外,map.resources 有了新的 :only:except 选项,如果你有大量资源路由的时候,这会有助于减少内存使用量 — 请查看这些 文章 以了解详情(虽然在这些文章写好后,嵌套限制路由的工作原理有一些调整)。 提交 提交 提交

新的 ActiveRecord 连接池代码也出现了一些调整,这使其在开发模型中变得更为高效,并避免了 Oracle 适配器的一些问题。 提交

如果超态 URL 的其中一个参数为 nil,现在它们的执行将遵循更符合直觉的行为。例如,一个调用 polymorphic_path([project, filter, @issue]),其中的 filter 为 nil,现在将返回 project_issue_url,而不是 NoMethodError。 提交

Rails 中的请求伪造保护功能已被加强,以便它只适用于 HTML 格式的内容请求。导致此更改的 Lighthouse 故障单 上对此进行了大量的讨论,但底线是旧实现有一些错误,特别是无法通过 XML 访问销毁操作。其他类型的请求由其他方式保护 - 例如,AJAX 请求上的相同原点策略在此替代了请求伪造保护。 提交