Як повернути послугу 503, недоступну в Rails для всієї програми?
Крім того, як зробити те саме для конкретних контролерів?
Як повернути послугу 503, недоступну в Rails для всієї програми?
Крім того, як зробити те саме для конкретних контролерів?
Відповіді:
Для всієї програми:
# ApplicationController
before_filter :return_unavailable_status
private
def return_unavailable_status
render :nothing => true, :status => :service_unavailable
end
Якщо вам потрібна спеціальна сторінка помилок, ви можете зробити:
render 'custom_unavailable_page', :status => :service_unavailable
Якщо ви не хочете для певних контролерів:
# SomeController
skip_before_filter :return_unavailable_status
custom_unavailable_page
було б ім'ям файлу представлення, який ви б відтворили.
:nothing
опція застаріла і буде видалена в Rails 5.1. Використовуйте head
метод, щоб відповісти порожнім тілом відповіді
Можна використовувати head
head 503
# or
head :service_unavailable
:nothing
опція застаріла і буде видалена в Rails 5.1. Використовуйте head
метод, щоб відповісти порожнім тілом відповіді
head
і якщо ви хочете зберегти оригінальну відповідь для нащадків, просто поставте її нижче як "Оригінальна відповідь" або щось інше. Я думаю, що всі ми можемо погодитись, що head
це шлях, тим більше render nothing: true
, що застарілий у поточних версіях Rails.
Для мене працює наступне:
format.any { render :json => {:response => 'Unable to authenticate' },:status => 401 }
Відповідь :response
HTML на випадок, якщо до неї можна отримати доступ із браузера.
Здається, головка 503 візуалізації не працює з вищезазначеним твердженням.
render "custom_unavailable_page"
замістьrender :nothing => true