module Goliath::Rack::Validator
def safely(env, headers={})
-
headers
(Hash
) -- Response headers to preserve in an error response -
env
(Goliath::Env
) -- The current request env
def safely(env, headers={}) begin yield rescue Goliath::Validation::Error => e validation_error(e.status_code, e.message, headers) rescue Exception => e env.logger.error(e.message) env.logger.error(e.backtrace.join("\n")) validation_error(500, e.message, headers) end end
def validation_error(status_code, msg, headers={})
-
headers
(Hash
) -- Response headers to preserve in an error response; -
msg
(String
) -- message to inject into the response body. -
status_code
(Integer
) -- HTTP status code for this error.
def validation_error(status_code, msg, headers={}) headers.delete('Content-Length') [status_code, headers, {:error => msg}] end