Есть ли способ, чтобы URL-адрес ошибки / обслуживания Heroku обслуживался напрямую без встроенного фрейма?
Heroku позволяет вам включить "режим обслуживания" для ваших приложений, а также позволяет указать пользовательский URL, который будет обслуживаться в течение этого периода. Я только что попробовал это и обнаружил, что Heroku выполняет пользовательский URL в iframe. Это было не совсем то, что я ожидал.
Мы используем Heroku для размещения службы API, и планировали, что пользовательские страницы ошибок / обслуживания будут обслуживать данные json. Мы надеемся, что есть способ, чтобы обслуживающий URL обслуживался напрямую.
После поиска SO, Quora и общих "интернетов" я не увидел ни одного поста, задающего этот вопрос, поэтому здесь я публикую пост на SO.
Ниже приведены сообщения, связанные с моим вопросом, но не относящиеся к нему напрямую.
Старые сообщения до какой-либо настройки: https://groups.google.com/forum/?fromgroups=
Опубликуйте запрос на создание пользовательского javascript в html-рендеринге iframe: https://groups.google.com/forum/?fromgroups=
2 ответа
Нет никакого способа настроить страницы ошибок, кроме описанных здесь, которые используют iFrame: https://devcenter.heroku.com/articles/error-pages
В качестве обходного пути вы можете запрограммировать приложение Heroku таким образом, чтобы при каждом получении запроса оно сначала (прежде чем делать что-либо еще) проверяло простое существование определенной переменной среды, например, называемой MAINTENANCE
, Если установлено, вы немедленно возвращаете свой собственный ответ JSON.
Например, добавьте следующий блок кода в начале вашего приложения Rackcall
метод. (Для приложения Sinatra вы можете добавить его в начале фильтра before. Для приложения Ruby on Rails вы можете реализовать его как промежуточное программное обеспечение Rack.)
if ENV['MAINTENANCE']
status = '503'
headers = {'Content-Type' => 'application/json'}
body = ['{"message":"The server is undergoing maintenance. Please try again later."}']
return [status, headers, body]
end
Затем, чтобы включить " режим обслуживания", установите приложение MAINTENANCE
переменная окружения для любой ценности вашего сердца.
heroku config:set MAINTENANCE=1
Чтобы отключить "режим обслуживания", просто отключите приложение MAINTENANCE
переменная окружения.
heroku config:unset MAINTENANCE
Вуаля! Режим обслуживания Makeshift для приложения JSON REST API.