Relative newb here.
Is there a relatively simple way to gracefully trap routing errors?
I seem to be in the same boat with a lot of other people ...
In application.rb I have
#----------------
# Filters added to this controller apply to all controllers in the
application.
# Likewise, all the methods added will be available for all controllers.
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
# See ActionController::RequestForgeryProtection for details
# Uncomment the :secret if you''re not using the cookie session store
protect_from_forgery # :secret =>
''34e000fc7cc2daeae150a89535f7f87d''
# Be sure to include AuthenticationSystem in Application Controller
instead
include AuthenticatedSystem
#Shnelvar
debugger # This one gets hit
rescue_from ActionController::RoutingError, :with => :route_not_found
# rescue_from ActionController::RoutingError, :with => :render_404
protected
def route_not_found
debugger #this one does not
render :text => ''What are you looking for ?'', :status
=> :not_found
end
#Shnelvar end
end
#----------------
Tracing through the code, the first breakpoint gets hit. The second
does not.
Further tracing shows that the line
rescue_handlers << [key, options[:with]]
in
\ruby\lib\ruby\gems\1.8\gems\actionpack-2.0.2\lib\action_controller\rescue.rb
seems to be working.
I have looked in these archives. I have googeled things related to
rescue_from ActionController::RoutingError
and smoe people get this to work. Some people need to put stuff in
lower level controllers ... but I have not gotten that to work, either.
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Ralph Shnelvar wrote:> Relative newb here. > > Is there a relatively simple way to gracefully trap routing errors?I know this is not what you want to hear, but I consider returning the 404 page to be "graceful." That''s what the HTTP 404 status code, and page, are for anyway. I would just customize the 404 page and be done with it. Sorry I don''t have a more direct answer to your specific question. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Robert Walker wrote:> Ralph Shnelvar wrote: >> Relative newb here. >> >> Is there a relatively simple way to gracefully trap routing errors? > > I know this is not what you want to hear, but I consider returning the > 404 page to be "graceful." That''s what the HTTP 404 status code, and > page, are for anyway. I would just customize the 404 page and be done > with it.Agreed. You should never get routing errors unless a user mistypes a URL -- and that''s what the 404 page is for. That''s all you need.> > Sorry I don''t have a more direct answer to your specific question.That is a direct answer. BTW: why the "#Shnelvar"? Aren''t you using version control? Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Marnen Laibow-Koser wrote:> BTW: why the "#Shnelvar"? Aren''t you using version control?My partner and I have not settle on a version control system to use yet. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Ralph Shnelvar wrote:> Marnen Laibow-Koser wrote: > >> BTW: why the "#Shnelvar"? Aren''t you using version control? > > My partner and I have not settle on a version control system to use yet.I recommend Git, since distributed version control is the way to go; Mercurial might be a second choice. But pick one and use it. There is no excuse at all for working without version control even if you''re a solo developer; with a partner, that''s even more true. (Same for automated tests, BTW.) Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
OK ... so how do I get a 404 error instead of a
Routing Error
No route matches "/xxx" with {:method=>:get}
Ralph
Robert Walker wrote:> Ralph Shnelvar wrote:
>> Relative newb here.
>>
>> Is there a relatively simple way to gracefully trap routing errors?
>
> I know this is not what you want to hear, but I consider returning the
> 404 page to be "graceful." That''s what the HTTP 404
status code, and
> page, are for anyway. I would just customize the 404 page and be done
> with it.
>
> Sorry I don''t have a more direct answer to your specific question.
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Marnen Laibow-Koser wrote:> Ralph Shnelvar wrote: >> Marnen Laibow-Koser wrote: >> >>> BTW: why the "#Shnelvar"? Aren''t you using version control? >> >> My partner and I have not settle on a version control system to use yet. > > I recommend Git, since distributed version control is the way to go; > Mercurial might be a second choice. But pick one and use it. There is > no excuse at all for working without version control even if you''re a > solo developer; with a partner, that''s even more true. (Same for > automated tests, BTW.) > > Best, > -- > Marnen Laibow-Koser > http://www.marnen.org > marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.orgMy partner suggests SVN. Since we have not settled on anything yet ... and it seems to be either Git or SVN. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Ralph Shnelvar wrote:> OK ... so how do I get a 404 error instead of a > > Routing Error > > No route matches "/xxx" with {:method=>:get}Stop fighting Rails! AFAIK, Rails already returns HTTP status 404 if it hits a RoutingError. You don''t need to do anything else except customize 404.html.> > RalphBest, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Ralph Shnelvar wrote:> > My partner suggests SVN. Since we have not settled on anything yet ... > and it seems to be either Git or SVN.Use Git, then. SVN, as a centralized version control system, is far more limited than Git. It''s a little easier to learn, but far less capable. Most Rails developers -- including me, as well as the core team -- left SVN for Git some time ago. Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
I am not fighting it.
I am getting a
Routing Error
No route matches "/xxx" with {:method=>:get}
rather than a 404 error during development.
So .. why am I getting that message instead of a 404 here?
Marnen Laibow-Koser wrote:> Ralph Shnelvar wrote:
>> OK ... so how do I get a 404 error instead of a
>>
>> Routing Error
>>
>> No route matches "/xxx" with {:method=>:get}
>
> Stop fighting Rails! AFAIK, Rails already returns HTTP status 404 if it
> hits a RoutingError. You don''t need to do anything else except
> customize 404.html.
>
>>
>> Ralph
>
> Best,
> --
> Marnen Laibow-Koser
> http://www.marnen.org
> marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Ralph Shnelvar wrote:> I am not fighting it. > > I am getting a > > Routing Error > > No route matches "/xxx" with {:method=>:get} > > rather than a 404 error during development. > > So .. why am I getting that message instead of a 404 here?Because Rails handles errors differently in development and production. In development, you see diagnostic info; in production, you see 404.html. (I suspect the HTTP status code is 404 even in development, though; you could check with curl -i.) And please don''t top-post. Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
This is posted years after the fact, but just in case anyone arrives via
a web search:
The rescue_from method shown above will NOT catch routing errors in
Rails 3.1 and Rails 3.2. In particular, this won''t work:
# file: app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
rescue_from ActionController::RoutingError, :with => :not_found
...
You can read all about it (and suggested workarounds) here:
https://github.com/rails/rails/issues/671
and here (point #3):
http://blog.plataformatec.com.br/2012/01/my-five-favorite-hidden-features-in-rails-3-2/
HTH.
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/groups/opt_out.