2008年11月14日,星期五

本周 Edge Rails 动态

发布者 Mike Gunderloy

本周边缘 Rails 的重要新闻是 Rails 2.2.1 即将发布——也就是 Rails 2.2 RC2。为此次发布做准备确实为 Rails 代码库带来了一些重大的改变。

首先,你很可能需要升级 rubygems 才能运行 RC2:要求的 rubygems 版本现在是 1.3.1,它是在昨天刚刚发布的。这个依赖是持续努力使 vendorized gems 有用且稳定的工作的一部分。你可能会发现更新 rubygems 的过程并不那么顺利,具体取决于你当前的 rubygems 版本;如果遇到任何问题,请查看这篇文章提交

Rails 的路由引擎在过去一周也进行了大量的改进。首先,Jeremy Kemper 为核心路由引擎提交了多项修复,减少了对象的创建和正则表达式的创建,从而降低了内存使用。提交 提交现在,map.resources 提供了新的 :only:except 选项,如果你有大量的资源路由,这有助于减少内存使用——有关详细信息,请参阅这些 文章(尽管在这些文章发布后,嵌套的有限路由的工作方式发生了一些调整)。提交 提交 提交

新的 ActiveRecord 连接池代码也得到了一些优化,使其在开发模式下更有效率,并避免了一些 Oracle 适配器的问题。提交

当多态 URL 的参数之一为 nil 时,其行为现在更加直观。例如,当 `project` 和 `@issue` 存在而 `filter` 为 nil 时,对 `polymorphic_path([project, filter, @issue])` 的调用现在返回 `project_issue_url` 而不是 NoMethodError。提交

Rails 中的请求伪造保护功能得到了加强,现在仅适用于 HTML 格式的内容请求。关于导致此更改的Lighthouse 票证有大量的讨论,但关键在于旧的实现存在一些错误,特别是使得通过 XML 无法访问 destroy 操作。其他类型的请求由其他方式保护——例如,AJAX 请求的同源策略在这些请求中起到了请求伪造保护的作用。提交