Custom error pages in Rails 3.2
Starting with Rails 3.2, there is a nicer way to display custom error pages (i.e. "page not found") that does not interfere with ExceptionNotifier. (I'm not sure about Airbrake et al.)
José Valim has posted this on his blog, here is a slightly more verbose rundown:
Register your own app as the application responsible for showing error pages by adding
config.exceptions_app = self.routes
Add routes for the error pages, by appending this to your
match '/404' => 'errors#not_found' match '/422' => 'errors#server_error' match '/500' => 'errors#server_error'
ErrorsControllerlike this one:
class ErrorsController < ApplicationController def not_found render :status => 404, :formats => [:html] end def server_error render :status => 500, :formats => [:html] end end
Add the corresponding views.
Add some tests, for example a cucumber feature:
@allow-rescue Scenario: 404 page When I go to the path "/foobar" Then the page should be titled "Page not found" And I should see "We're sorry, but couldn't find the page you requested" And the response status should be "404"
- You cannot modify headers, so you can't modify the
- You won't see this in development, except if you set
config.consider_all_requests_local = falsein your
Author of this card:
- About this deck:
- We are makandra and do test-driven, agile Ruby on Rails software development.