Есть ли способ, чтобы 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.

Другие вопросы по тегам