How do you return 503 Service Unavailable in Rails for the entire application?
Also, how do you do the same for specific controllers?
Just use Chrome browser. Hit F12 to get developer tools and look at the network tab. Shows you all status codes, whether page was from cache etc.
Returning Response Status Codes with @ResponseStatus This annotation takes as an argument, the HTTP Status Code, to be returned in the response.
The HTTP 429 Too Many Requests response status code indicates the user has sent too many requests in a given amount of time ("rate limiting"). A Retry-After header might be included to this response indicating how long to wait before making a new request.
You can use head
head 503
# or
head :service_unavailable
For the entire application:
# ApplicationController
before_filter :return_unavailable_status
private
def return_unavailable_status
render :nothing => true, :status => :service_unavailable
end
If you wanted a custom error page, you could do:
render 'custom_unavailable_page', :status => :service_unavailable
If you don't want it for specific controllers:
# SomeController
skip_before_filter :return_unavailable_status
The following works for me:
format.any { render :json => {:response => 'Unable to authenticate' },:status => 401 }
The :response
for the HTML response just in case it's accessed from the browser.
The render head 503 does not seem to be working with the above statement.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With