Things have been pretty busy on the development side since the release of Rails 2.3 RC2. The core team has been making a serious effort to review all of the open bugs and patches with an eye towards getting us a solid release. At this point, the bar for new features is set fairly high, but even so, there have been an incredible 94 commits in the week since RC2 – mostly fixes to ensure expected behavior and stability. Here are some of the highlights.
The support for XML parsing in ActiveSupport has been made more flexible by allowing you to swap in different parsers. By default, it uses the standard REXML implementation, but you can easily specify the faster LibXML or Nokogiri implementations for your own applications, provided you have the appropriate gems installed:
XmlMini.backend = 'LibXML'
XmlMini.backend = 'Nokogiri'
The internals of the various rake gem
tasks have been substantially revised, to make the system work better for a variety of cases. The gem system now knows the difference between development and runtime dependencies, has a more robust unpacking system, gives better information when querying for the status of gems, and is less prone to “chicken and egg” dependency issues when you’re bringing things up from scratch. There are also fixes for using gem commands under JRuby and for dependencies that try to bring in external copies of gems that are already vendored.
A couple of small fixes to the routing engine. First, member routes with requirements now work (previously the requirements were ignored):
map.resources :orders,
:requirements => { :id => %r([^/;,?]+) },
:member => { :accept => :get }
Also, shallow routes now work properly with namespaces (commit) and you can now use the OPTIONS
verb in route conditions (commit).
The expires_in
, stale
, and fresh_when
methods now accept a :public
option to make them work well with proxy caching.
expires_in 10.minutes, :public => true
fresh_when :last_modified => @user.updated_at.utc,
:public => true
fresh_when :etag => @user, :public => true
The String#parameterize
method now accepts an optional separator character.
"My big duck".parameterize => "my-big-duck"
"My big duck".parameterize('_') => "my_big_duck"
The ActiveRecord::Base#invalid?
method now works as the opposite of ActiveRecord::Base#valid?
. (commit)
The ActiveSupport::Json.decode
method now handles \u0000
style escape sequences. (commit)
You can now set content types such as multipart/mixed
in Action Mailer. (commit)
Rails 2.3 will ship with a bundled version of Rack, but if you have Rack 1.0 installed as a gem it will use the gem version instead. (commit)