* The ShowExceptions middleware now accepts a exceptions application that is responsible to render an exception when the application fails. The application is invoked with a copy of the exception in `env["action_dispatch.exception"]` and with the PATH_INFO rewritten to the status code. *José Valim*

* Add `button_tag` support to ActionView::Helpers::FormBuilder.

This support mimics the default behavior of `submit_tag`.

Example:

<%= form_for @post do |f| %>

<%= f.button %>

<% end %>

* Date helpers accept a new option, `:use_two_digit_numbers = true`, that renders select boxes for months and days with a leading zero without changing the respective values.

For example, this is useful for displaying ISO8601-style dates such as '2011-08-01'. *Lennart Fridén and Kim Persson*

* Make ActiveSupport::Benchmarkable a default module for ActionController::Base, so the #benchmark method is once again available in the controller context like it used to be *DHH*

* Allow rescue responses to be configured through a railtie as in `config.action_dispatch.rescue_responses`. Please look at ActiveRecord::Railtie for an example *José Valim*

* Allow fresh_when/stale? to take a record instead of an options hash *DHH*

* Assets should use the request protocol by default or default to relative if no request is available *Jonathan del Strother*

* Log "Filter chain halted as CALLBACKNAME rendered or redirected" every time a before callback halts *José Valim*

* You can provide a namespace for your form to ensure uniqueness of id attributes on form elements.

The namespace attribute will be prefixed with underscore on the generate HTML id. *Vasiliy Ermolovich*

Example:

<%= form_for(@offer, :namespace => 'namespace') do |f| %>

<%= f.label :version, 'Version' %>:

<%= f.text_field :version %>

<% end %>

* Refactor ActionDispatch::ShowExceptions. The controller is responsible for choosing to show exceptions when `consider_all_requests_local` is false.

It's possible to override `show_detailed_exceptions?` in controllers to specify which requests should provide debugging information on errors. The default value is now false, meaning local requests in production will no longer show the detailed exceptions page unless `show_detailed_exceptions?` is overridden and set to `request.local?`.

* Responders now return 204 No Content for API requests without a response body (as in the new scaffold) *José Valim*

* Added ActionDispatch::RequestId middleware that'll make a unique X-Request-Id header available to the response and enables the ActionDispatch::Request#uuid method. This makes it easy to trace requests from end-to-end in the stack and to identify individual requests in mixed logs like Syslog *DHH*

* Rails 2.3-style plugins in vendor/plugins are deprecated and will be removed in Rails 4.0. Move them out of vendor/plugins and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. *Santiago Pastorino*

* Guides are available as a single .mobi for the Kindle and free Kindle readers apps. *Michael Pearson & Xavier Noria*

* Allow scaffold/model/migration generators to accept a "index" and "uniq" modifiers, as in: "tracking_id:integer:uniq" in order to generate (unique) indexes. Some types also accept custom options, for instance, you can specify the precision and scale for decimals as "price:decimal{7,2}". *Dmitrii Samoilov*

* Added `config.exceptions_app` to set the exceptions application invoked by the ShowException middleware when an exception happens. Defaults to `ActionDispatch::PublicExceptions.new(Rails.public_path)`. *José Valim*

* Speed up development by only reloading classes if dependencies files changed. This can be turned off by setting `config.reload_classes_only_on_change` to false. *José Valim*

* New applications get a flag `config.active_record.auto_explain_threshold_in_seconds` in the environments configuration files. With a value of 0.5 in development.rb, and commented out in production.rb. No mention in test.rb. *fxn*

* Allow to change the loading order of railties with `config.railties_order=` *Piotr Sarnacki*

Example:

config.railties_order = [Blog::Engine, :main_app, :all]

* Scaffold returns 204 No Content for API requests without content. This makes scaffold work with jQuery out of the box *José Valim*

* Update Rails::Rack::Logger middleware to apply any tags set in config.log_tags to the newly ActiveSupport::TaggedLogging Rails.logger. This makes it easy to tag log lines with debug information like subdomain and request id -- both very helpful in debugging multi-user production applications *DHH*

* Default options to `rails new` can be set in ~/.railsrc *Guillermo Iguaran*