-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
Description
I was trying to use error! inside of a rescue_from block and got a NoMethodError. I later found error_response and noticed that you don't get the same level of customization that you do from error!.
I'm proposing that error_response and error! have the same method signature. Their current implementations are as follows:
def error_response(error = {})
status = error[:status] || options[:default_status]
message = error[:message] || options[:default_message]
headers = { 'Content-Type' => content_type }
headers.merge!(error[:headers]) if error[:headers].is_a?(Hash)
backtrace = error[:backtrace] || []
rack_response(format_message(message, backtrace), status, headers)
end
def error!(message, status = nil, headers = nil)
self.status(status || namespace_inheritable(:default_error_status))
throw :error, message: message, status: self.status, headers: headers
endMy use case was to use error_response like I'm using error! below:
error!({id: 'not_found', message: 'Not Found.'}, 404)Instead, I'm skipping using error_response and returning a Rack::Response object like this:
Rack::Response.new({
id: 'interal_error',
message: 'Interal server error. Check logs.'
}.to_json, 500, { 'Content-type' => 'text/error' }).finishApologies if I'm misunderstanding the API and there's a simple way to do the same thing.