Render 404 Error instead of 500 on ::ActionController::RoutingError

I want to render a 404 whenever ActionController::RoutingError is thrown in my application. This works in my apps running the 1.1.6 gem, but not when running on edge rails or 1.2-RC1. I suspect it has something to do with this (from the RoR blog):

"Uncaught exceptions raised anywhere in your application will cause RAILS_ROOT/public/500.html to be read and shown instead of just the static "Application error (Rails)." So make it look nice if you aren't using it already!" (Ruby on Rails — Rails 1.2 RC1: New in Action Pack)

Anybody have any ideas how to override this for Routing Errors?

Did you ever figure this out? I want the same thing...404's instead of 500's for routing errors.

Thanks.

patrick

Wouldn't you just use this method in your application controller?

def rescue_action_in_public(exception)     case exception         when RoutingError, UnknownAction, ActiveRecord::RecordNotFound then         render :controller => "application", :action => "error_404", :status => 404     else         render :file => "errors/unhandled", :status => 505     end end

Also, here's a blog talking about doing the same thing.

Jason

Patrick Crosby wrote:

My bad, apparently rescue_action_in_public doesn't catch ActionController::RoutingError. It does catch UnknownAction and RecordNotFound...this is interesting and I hope I can figure out how to fix it.

Jason Norris wrote:

My bad, apparently rescue_action_in_public doesn't catch ActionController::RoutingError. It does catch UnknownAction and RecordNotFound...this is interesting and I hope I can figure out how to fix it.

Yeah, that's what I've been trying to figure out...

Any insight into this would be awesome.