about summary refs log tree commit diff
path: root/app/controllers
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-04-02 19:43:09 +0200
committerEugen Rochko <eugen@zeonfederated.com>2017-04-02 19:43:44 +0200
commit5b12624847f6a599e1bbb3b24fc87c3b222e6716 (patch)
treef6fda89ae5288e5e48d12c534562f10aca290f11 /app/controllers
parent34ff11c49600e2ca8547f4044f2c73b33aa70c34 (diff)
Add proper error page for request timeouts
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/application_controller.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index ef9364897..abfb5bb8c 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -12,6 +12,7 @@ class ApplicationController < ActionController::Base
   rescue_from ActionController::RoutingError, with: :not_found
   rescue_from ActiveRecord::RecordNotFound, with: :not_found
   rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_entity
+  rescue_from Rack::Timeout::RequestExpiryError, Rack::Timeout::RequestTimeoutError, with: :request_timeout
 
   before_action :store_current_location, except: :raise_not_found, unless: :devise_controller?
   before_action :set_locale
@@ -69,6 +70,13 @@ class ApplicationController < ActionController::Base
     end
   end
 
+  def request_timeout
+    respond_to do |format|
+      format.any  { head 503 }
+      format.html { render 'errors/503', layout: 'error', status: 503 }
+    end
+  end
+
   def current_account
     @current_account ||= current_user.try(:account)
   end