summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/application_controller.rb8
-rw-r--r--spec/controllers/application_controller_spec.rb9
2 files changed, 17 insertions, 0 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 658a065..1b2f9f7 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -3,9 +3,17 @@ class ApplicationController < ActionController::Base
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :null_session
before_filter :load_additional_payload_data
+ rescue_from StandardError, with: :return_server_error
+
def load_additional_payload_data
@license_statuses = LicenseStatus::ALL
@well_types = WellType::ALL
end
+
+ private
+
+ def return_server_error
+ render nothing: true, status: :internal_server_error
+ end
end
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index a26c465..7ccca09 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -5,6 +5,10 @@ describe ApplicationController do
def index
render nothing: true
end
+
+ def show
+ raise "heck"
+ end
end
it "includes all well statuses with every response" do
@@ -16,4 +20,9 @@ describe ApplicationController do
get :index
assigns(:well_types).should =~ WellType::ALL
end
+
+ it "handles errors gracefully" do
+ get :show, id: 1
+ response.status.should == 500
+ end
end