Rails 3.1 Error Catching

Creo que Rails 3.1 está cambiando la forma en que se producen los errores. ¿Alguien puede ayudar o confirmar esto? Estoy intentando crear páginas de errores personalizadas con Rails 3.1.0.rc1

unless config.consider_all_requests_local rescue_from Exception, :with => :render_error rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found rescue_from ActionController::RoutingError, :with => :render_not_found rescue_from ActionController::UnknownController, :with => :render_not_found rescue_from ActionController::UnknownAction, :with => :render_not_found end 

^^ Esto no funciona.

 config.consider_all_requests_local = true 

Eso está en mi entorno de desarrollo por defecto. Supongo que Rails 3.1 elimina el “controlador_actividad”, pero no puedo confirmar esto en ninguna parte.

¡Gracias!

¿Asumo que el siguiente código aparece en su ApplicationController?

 unless config.consider_all_requests_local rescue_from Exception, :with => :render_error rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found rescue_from ActionController::RoutingError, :with => :render_not_found rescue_from ActionController::UnknownController, :with => :render_not_found rescue_from ActionController::UnknownAction, :with => :render_not_found end 

Si es así, intente reemplazar esta línea:

 unless config.consider_all_requests_local 

con esta línea (pre Rails 3 creo):

 unless ActionController::Base.consider_all_requests_local 

o esto (post Rails 3):

 unless Rails.application.config.consider_all_requests_local 

No creo que la solución de Matt detecte errores de enrutamiento en Rails 3.0 / 3.1.

Trate de poner lo siguiente en su application.rb:

 # 404 catch all route config.after_initialize do |app| app.routes.append{ match '*a', :to => 'application#render_not_found' } unless config.consider_all_requests_local end 

Consulte: https://github.com/rails/rails/issues/671#issuecomment-1780159

Funcionó bien para mí!