X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/00a605a2a877528ec3d4eabc6562e262c427b839..06934ad37565a1c5d251a5474a778b29b16591d1:/app/controllers/application_controller.rb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index e64e2e022..ea5d450a4 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,4 +1,5 @@ class ApplicationController < ActionController::Base + include SessionPersistence protect_from_forgery @@ -266,7 +267,7 @@ class ApplicationController < ActionController::Base report_error message, :bad_request rescue OSM::APIError => ex report_error ex.message, ex.status - rescue ActionController::UnknownAction => ex + rescue AbstractController::ActionNotFound => ex raise rescue Exception => ex logger.info("API threw unexpected #{ex.class} exception: #{ex.message}") @@ -299,8 +300,14 @@ class ApplicationController < ActionController::Base OSM::Timer.timeout(WEB_TIMEOUT) do yield end - rescue ActionView::TemplateError => ex - if ex.original_exception.is_a?(Timeout::Error) + rescue ActionView::Template::Error => ex + ex = ex.original_exception + + if ex.is_a?(ActiveRecord::StatementInvalid) and ex.message =~ /^Timeout::Error/ + ex = Timeout::Error.new + end + + if ex.is_a?(Timeout::Error) render :action => "timeout" else raise