ruby on rails - Devuelve un código de estado http específico en Rails
ruby-on-rails http-status-codes (3)
¿Cómo se devuelve 503 Service Unavailable in Rails para toda la aplicación?
Además, ¿cómo haces lo mismo con los controladores específicos?
Lo siguiente funciona para mí:
format.any { render :json => {:response => ''Unable to authenticate'' },:status => 401 }
La :response
a la respuesta HTML en caso de que se acceda desde el navegador.
El cabezal de renderizado 503 no parece estar funcionando con la declaración anterior.
Para toda la aplicación:
# ApplicationController
before_filter :return_unavailable_status
private
def return_unavailable_status
render :nothing => true, :status => :service_unavailable
end
Si quería una página de error personalizada, podría hacer lo siguiente:
render ''custom_unavailable_page'', :status => :service_unavailable
Si no lo quiere para controladores específicos:
# SomeController
skip_before_filter :return_unavailable_status
Puede usar :status
render :status => 503
Puedes hacerlo globalmente poniéndolo en ApplicationController
before_filter :render_unavailable
def render_unavailable
render :nothing => true, :status => 503
end
Actualizar
Rails 5+
head 503
# or
head :service_unavailable
No coloques la render head: 503
solo cabeza. De lo contrario, obtendrá el error "doble render".