2009 年 3 月 13 日,星期五

本周 Edge Rails 动态

发布者:Mike Gunderloy

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

Rails 2.3 RC2 发布以来,开发方面一直忙个不停。核心团队一直在努力审查所有开放缺陷和补丁,目的是为我们提供一个稳定的版本。此时,新功能的门槛已经定得很高,即便如此,自 RC2 发布以来的一周内,仍然出现了难以置信的 94 次提交——主要是确保预期行为和稳定性的修复。以下是部分亮点。

XMLmini 的可交换解析器

通过允许更换不同的解析器,提高了 ActiveSupport 中对 XML 解析的支持的灵活性。默认情况下,它使用标准的 REXML 实现,但只要已安装相应的 gem,可以轻松为自己的应用程序指定速度更快的 LibXML 或 Nokogiri 实现


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

提交 提交

rake gem 任务重写

各种 rake gem 任务的内部已经被大幅度修改,以使系统能够更好地处理各种情况。gem 系统现在了解开发依赖项和运行时依赖项之间的差异,拥有更稳定的解包系统,在查询 gem 的状态时提供更好的信息,在从头开始执行操作时不太容易出现“先有鸡还是先有蛋”的依赖项问题。还修复了在 JRuby 下使用 gem 命令的问题,以及尝试从外部引入已经交付的 gem 的副本的依赖项的问题。

提交 提交 提交

路由修复

路由引擎的两个小修复。首先,带有 requirement 的成员路由现已生效(之前 requirement 被忽略)


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

提交

此外,浅表路由现在可以与命名空间正常配合使用 (提交),现在还可以在路由条件中使用 OPTIONS 动词 (提交)。

客户端缓存改进

expires_instalefresh_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 版本。(提交)