2009年3月13日,星期五

本周 Edge Rails 动态

发布者 Mike Gunderloy

2009年3月6日 – 2009年3月13日

Rails 2.3 RC2 发布以来,开发方面一直非常忙碌。核心团队正在认真审查所有未解决的 bug 和补丁,力求推出一个稳定可靠的版本。目前,新功能的门槛设定得相当高,但即便如此,RC2 发布后一周内仍有令人难以置信的 94 次提交——主要是为了确保预期的行为和稳定性而进行的修复。以下是一些亮点。

XMLmini 的可替换解析器

ActiveSupport 中的 XML 解析支持通过允许您切换不同的解析器而变得更加灵活。默认情况下,它使用标准的 REXML 实现,但您可以轻松地为自己的应用程序指定更快的 LibXML 或 Nokogiri 实现,前提是您已安装相应的 gem。


XmlMini.backend = 'LibXML'
XmlMini.backend = 'Nokogiri'

提交 提交

rake gem 任务重写

各种 `rake gem` 任务的内部机制已得到实质性修改,以使该系统在各种情况下都能更好地工作。gem 系统现在能够区分开发依赖和运行时依赖,拥有更强大的解压系统,在查询 gem 状态时提供更丰富的信息,并且在从头开始搭建项目时,更不容易出现“鸡生蛋,蛋生鸡”的依赖问题。此外,还修复了在 JRuby 下使用 gem 命令的问题,以及依赖项尝试引入已供应商化 gem 的外部副本的问题。

提交 提交 提交

路由修复

对路由引擎进行了一些小的修复。首先,带有要求的成员路由现在可以正常工作(以前这些要求被忽略了)。


map.resources :orders, 
  :requirements => { :id => %r([^/;,?]+) }, 
  :member => { :accept => :get }

提交

此外,浅层路由现在可以与命名空间正确配合使用(提交),并且您现在可以在路由条件中使用 `OPTIONS` 动词(提交)。

客户端缓存改进

`expires_in`、`stale` 和 `fresh_when` 方法现在接受 `:public` 选项,以便与代理缓存更好地配合使用。


expires_in 10.minutes, :public => true
fresh_when :last_modified => @user.updated_at.utc, 
  :public => true
fresh_when :etag => @user, :public => true

提交

杂项

`String#parameterize` 方法现在接受可选的分隔符字符。


"My big duck".parameterize =>      "my-big-duck"
"My big duck".parameterize('_') => "my_big_duck"

提交

`ActiveRecord::Base#invalid?` 方法现在可以作为 `ActiveRecord::Base#valid?` 的反向操作。(提交

`ActiveSupport::Json.decode` 方法现在可以处理 `\u0000` 风格的转义序列。(提交

您现在可以在 Action Mailer 中设置 `multipart/mixed` 等内容类型。(提交

Rails 2.3 将内置一个 Rack 的打包版本,但如果您已将 Rack 1.0 作为 gem 安装,它将改用 gem 版本。(提交