diff options
| author | elijah <elijah@riseup.net> | 2015-03-11 15:29:43 -0700 | 
|---|---|---|
| committer | elijah <elijah@riseup.net> | 2015-03-17 22:36:32 -0700 | 
| commit | cf586771b628aea022b88b2c6d3e201338b80faf (patch) | |
| tree | 8883aec893e57b5cfa27cca837d15b003f370363 | |
| parent | 9266c3ac58404894539e25e514d8d8a6775c701f (diff) | |
Better error message when a database is missing (very useful for nagios tests)
| -rw-r--r-- | app/controllers/application_controller.rb | 20 | ||||
| -rw-r--r-- | test/integration/api/login_test.rb | 2 | 
2 files changed, 16 insertions, 6 deletions
| diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index a4560e2..ff291f2 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -4,23 +4,33 @@ class ApplicationController < ActionController::Base    before_filter :no_cache_header    before_filter :no_frame_header    before_filter :language_header +  rescue_from StandardError, :with => :default_error_handler +  rescue_from RestClient::Exception, :with => :default_error_handler    ActiveSupport.run_load_hooks(:application_controller, self)    protected -  rescue_from StandardError do |e| +  def default_error_handler(exc)      respond_to do |format| -      format.json { render_json_error(e) } -      format.all  { raise e }  # reraise the exception so the normal thing happens. +      format.json { render_json_error(exc) } +      format.all  { raise exc }  # reraise the exception so the normal thing happens.      end    end +  # +  # I think this should be 'errors', not 'error', since that is what +  # `respond_with @object` will return. For now, I am leaving this as 'error', +  # since there is some code that depends on this. +  #    def render_json_error(e)      Rails.logger.error e      Rails.logger.error e.backtrace.join("\n") -    render status: 500, -      json: {error: "The server failed to process your request. We'll look into it."} +    if e.is_a?(CouchRest::StorageMissing) +      render status: 500, json: {error: "The database '#{e.db}' does not exist!"} +    else +      render status: 500, json: {error: "The server failed to process your request. We'll look into it (#{e.class})."} +    end    end    ## diff --git a/test/integration/api/login_test.rb b/test/integration/api/login_test.rb index f37639e..22047bc 100644 --- a/test/integration/api/login_test.rb +++ b/test/integration/api/login_test.rb @@ -14,9 +14,9 @@ class LoginTest < SrpTest    test "login with srp" do      authenticate +    assert_nil server_auth["error"]      assert_equal ["M2", "id", "token"], server_auth.keys      assert last_response.successful? -    assert_nil server_auth["errors"]      assert server_auth["M2"]    end | 
