diff options
author | schneems <richard.schneeman@gmail.com> | 2012-06-09 14:54:49 -0500 |
---|---|---|
committer | schneems <richard.schneeman@gmail.com> | 2012-07-07 15:38:29 -0500 |
commit | fa714ec7dffd12b8508c756e6526eff5ae8e4202 (patch) | |
tree | 4a1307d0ae5ac6af0ee40a3c8f8fc118535cdb78 | |
parent | ee20be7c33538e6e9d334ddbd16d427190c7ff00 (diff) | |
download | rails-fa714ec7dffd12b8508c756e6526eff5ae8e4202.tar.gz rails-fa714ec7dffd12b8508c756e6526eff5ae8e4202.tar.bz2 rails-fa714ec7dffd12b8508c756e6526eff5ae8e4202.zip |
show routes while debugging RoutingError
If someone receives a routing error, they likely need to view the routes. Rather than making them visit '/rails/info/routes' or run `rake routes` we can give them that information on the page.
-rw-r--r-- | actionpack/lib/action_dispatch/middleware/debug_exceptions.rb | 13 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/middleware/templates/rescues/routing_error.erb | 10 |
2 files changed, 20 insertions, 3 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb b/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb index b903f98761..467437b512 100644 --- a/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb +++ b/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb @@ -1,5 +1,7 @@ require 'action_dispatch/http/request' require 'action_dispatch/middleware/exception_wrapper' +require 'rails/application/route_inspector' + module ActionDispatch # This middleware is responsible for logging exceptions and @@ -39,7 +41,8 @@ module ActionDispatch :exception => wrapper.exception, :application_trace => wrapper.application_trace, :framework_trace => wrapper.framework_trace, - :full_trace => wrapper.full_trace + :full_trace => wrapper.full_trace, + :routes => formatted_routes(exception) ) file = "rescues/#{wrapper.rescue_template}" @@ -78,5 +81,13 @@ module ActionDispatch def stderr_logger @stderr_logger ||= ActiveSupport::Logger.new($stderr) end + + private + def formatted_routes(exception) + if exception.is_a?(ActionController::RoutingError) || exception.is_a?(ActionView::Template::Error) + inspector = Rails::Application::RouteInspector.new + inspector.format(Rails.application.routes.routes).join("\n") + end + end end end diff --git a/actionpack/lib/action_dispatch/middleware/templates/rescues/routing_error.erb b/actionpack/lib/action_dispatch/middleware/templates/rescues/routing_error.erb index 177d383e94..8c594c1523 100644 --- a/actionpack/lib/action_dispatch/middleware/templates/rescues/routing_error.erb +++ b/actionpack/lib/action_dispatch/middleware/templates/rescues/routing_error.erb @@ -10,8 +10,14 @@ </ol> </p> <% end %> +<%= render :template => "rescues/_trace" %> + +<h2> + Routes +</h2> + <p> - Try running <code>rake routes</code> for more information on available routes. + Routes match in priority from top to bottom </p> -<%= render :template => "rescues/_trace" %> +<p><pre><%= @routes %></pre></p> |