Як повернути послугу 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 }
Відповідь :responseHTML на випадок, якщо до неї можна отримати доступ із браузера.
Здається, головка 503 візуалізації не працює з вищезазначеним твердженням.
render "custom_unavailable_page"замістьrender :nothing => true