自 Rails 2.3 RC2 发布以来,开发方面一直忙个不停。核心团队一直在努力审查所有开放缺陷和补丁,目的是为我们提供一个稳定的版本。此时,新功能的门槛已经定得很高,即便如此,自 RC2 发布以来的一周内,仍然出现了难以置信的 94 次提交——主要是确保预期行为和稳定性的修复。以下是部分亮点。
通过允许更换不同的解析器,提高了 ActiveSupport 中对 XML 解析的支持的灵活性。默认情况下,它使用标准的 REXML 实现,但只要已安装相应的 gem,可以轻松为自己的应用程序指定速度更快的 LibXML 或 Nokogiri 实现
XmlMini.backend = 'LibXML'
XmlMini.backend = 'Nokogiri'
各种 rake gem
任务的内部已经被大幅度修改,以使系统能够更好地处理各种情况。gem 系统现在了解开发依赖项和运行时依赖项之间的差异,拥有更稳定的解包系统,在查询 gem 的状态时提供更好的信息,在从头开始执行操作时不太容易出现“先有鸡还是先有蛋”的依赖项问题。还修复了在 JRuby 下使用 gem 命令的问题,以及尝试从外部引入已经交付的 gem 的副本的依赖项的问题。
路由引擎的两个小修复。首先,带有 requirement 的成员路由现已生效(之前 requirement 被忽略)
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 版本。(提交)