Guys, Ruby on Rails 3.1 has just been released! Feel really good after a long long wait (3 Months since RailsConf).
Highlights in Rails 3.1:
- Streaming
- Reversible Migrations
- Assets Pipeline
- jQuery as the default JavaScript library
CHANGES
For a much more attractive and easy to read list of changes, please check out the awesome Rails 3.1.0 Release Notes on the Rails Guides site. For a less attractive list of changes, please continue to read!
Here are some highlights of the major changes in Rails 3.1.0:
ActionPack
- ActionPack has been updated to include the new asset pipeline. Please see the rails guides on the asset pipeline.
- Streaming response support has been added. This feature allows you to stream templates to the user before processing has actually finished. See the Rails Guides, or documentation in
ActionController::Metal::Streaming
for more information. Middleware have been refactored to support this feature. - RJS has been extracted to a gem.
ActiveModel
attr_accessible
and friends now accepts :as as option to specify a role- Added
ActiveModel::SecurePassword
to encapsulate dead-simple password usage with BCrypt encryption and salting.
ActiveRecord
- Prepared statement caches have been integrated.
ActiveRecord::Base#create
and simple finders will use a prepared statement and cache for more performant inserts and selects. - Associations have been refactored for greater simplicity and maintainability.
default_scope
can take any object that responds tocall
.- PostgreSQL adapter only supports PostgreSQL version 8.2 and higher.
- Migrations use instance methods rather than class methods. Rather than defining a
self.up
method, you should define an instance methodup
. - Migrations are reversible. When a new migration is generated, the migration will contain one method called
change
. Database changes made in this method will automatically know how to reverse themselves. For more information, see the documentation forActiveRecord::Migration
andActiveRecord::Migration::CommandRecorder
. - When a model is generated,
add_index
is added by default forbelongs_to
orreferences
columns.
ActiveResource
- The default format has been changed to JSON for all requests. If you want to continue to use XML you will need to set
self.format = :xml
in the class.
ActiveSupport
- ActiveSupport::BufferedLogger set log encoding to BINARY, but still use text mode to output portable newlines.
- Add Object#in? to test if an object is included in another object.
- ActiveSupport::Dependencies::ClassCache class has been introduced for holding references to reloadable classes.
- Added
weeks_ago
andprev_week
to Date/DateTime/Time. - JSON decoding now uses the
multi_json
gem which also vendors a json engine called OkJson. The yaml backend has been removed in favor of OkJson as a default engine for 1.8.x, while the built in 1.9.x json implementation will be used by default.
Railties
- The default database schema file is written as UTF-8.
- Rack::Sendfile middleware is used only if
x_sendfile_header
is present. - Add alias
r
for rails runner. - jQuery is the new default JavaScript library.
- Added
config.force_ssl
configuration which loads Rack::SSL middleware and force all requests to be under HTTPS protocol
For more info
For a more detailed list of changes, please see each of the CHANGELOG files checked in to the Rails repository on github.
For an even more detailed list of changes, please see the commit list between Rails 3.0.10 and 3.1.0.
Source: http://weblog.rubyonrails.org/2011/8/31/rails-3-1-0-has-been-released