In addition to the Rack changes [[releases/Rails2dot3/application-architecture|covered above]], Railties (the core code of Rails itself) sports a number of significant changes, including Rails Metal, application templates, and quiet backtraces. === 7.1. Rails Metal === Rails Metal is a new mechanism that provides superfast endpoints inside of your Rails applications. Metal classes bypass routing and Action Controller to give you raw speed (at the cost of all the things in Action Controller, of course). This builds on all of the recent foundation work to make Rails a Rack application with an exposed middleware stack. * More Information: * [[http://weblog.rubyonrails.org/2008/12/17/introducing-rails-metal|Introducing Rails Metal]] * [[http://soylentfoo.jnewland.com/articles/2008/12/16/rails-metal-a-micro-framework-with-the-power-of-rails-m|Rails Metal: a micro-framework with the power of Rails]] * [[http://www.railsinside.com/deployment/180-metal-super-fast-endpoints-within-your-rails-apps.html|Metal: Super-fast Endpoints within your Rails Apps]] * [[http://ryandaigle.com/articles/2008/12/18/what-s-new-in-edge-rails-rails-metal|What's New in Edge Rails: Rails Metal]] === 7.2. Application Templates === Rails 2.3 incorporates Jeremy McAnally's [[http://github.com/jeremymcanally/rg/tree/master|rg]] application generator. What this means is that we now have template-based application generation built right into Rails; if you have a set of plugins you include in every application (among many other use cases), you can just set up a template once and use it over and over again when you run the ''rails'' command. There's also a rake task to apply a template to an existing application: $ rake rails:template LOCATION=~/template.rb This will layer the changes from the template on top of whatever code the project already contains. * Lead Contributor: [[http://www.jeremymcanally.com/|Jeremy McAnally]] * More Info: [[http://m.onkey.org/2008/12/4/rails-templates|Rails templates]] === 7.3. Quieter Backtraces === Building on Thoughtbot's [[http://www.thoughtbot.com/projects/quietbacktrace|Quiet Backtrace]] plugin, which allows you to selectively remove lines from ''Test::Unit'' backtraces, Rails 2.3 implements ''ActiveSupport::BacktraceCleaner'' and ''Rails::BacktraceCleaner'' in core. This supports both filters (to perform regex-based substitutions on backtrace lines) and silencers (to remove backtrace lines entirely). Rails automatically adds silencers to get rid of the most common noise in a new application, and builds a ''config/backtrace_silencers.rb'' file to hold your own additions. This feature also enables prettier printing from any gem in the backtrace. === 7.4. Faster Boot Time in Development Mode with Lazy Loading/Autoload === Quite a bit of work was done to make sure that bits of Rails (and its dependencies) are only brought into memory when they're actually needed. The core frameworks - Active Support, Active Record, Action Controller, Action Mailer and Action View - are now using ''autoload'' to lazy-load their individual classes. This work should help keep the memory footprint down and improve overall Rails performance. You can also specify (by using the new ''preload_frameworks'' option) whether the core libraries should be autoloaded at startup. This defaults to ''false'' so that Rails autoloads itself piece-by-piece, but there are some circumstances where you still need to bring in everything at once - Passenger and JRuby both want to see all of Rails loaded together. === 7.5. Other Railties Changes === * The instructions for updating a CI server to build Rails have been updated and expanded. * Internal Rails testing has been switched from ''Test::Unit::TestCase'' to ''ActiveSupport::TestCase'', and the Rails core requires Mocha to test. * The default ''environment.rb'' file has been decluttered. * The dbconsole script now lets you use an all-numeric password without crashing. * ''Rails.root'' now returns a ''Pathname'' object, which means you can use it directly with the ''join'' method to [[http://afreshcup.com/2008/12/05/a-little-rails_root-tidiness/|clean up existing code]] that uses ''File.join''. * Various files in /public that deal with CGI and FCGI dispatching are no longer generated in every Rails application by default (you can still get them if you need them by adding ''--with-dispatches'' when you run the ''rails'' command, or add them later with ''rake rails:generate_dispatchers'').