Какой умный способ реализовать страницу обслуживания в приложении Heroku?

Есть ли чистый, элегантный способ реализации страницы обслуживания в приложении Heroku? Так что, если что-то сломается, вы можете очень легко включить переключатель, и страница обслуживания будет повышаться для всех запросов? Предпочтительно способ, который не требует нажатия?

Идеи? Благодаря

Ответ 2

ПРИМЕЧАНИЕ. В этом ответе рассматриваются настройки nginx или Rack, как это было написано до редактирования исходного вопроса, и ясно дал понять, что он ищет ответ, характерный для Heroku. Принятый ответ лучше всего подходит для приложений Heroku.


Когда вы говорите "в своем приложении", вы действительно имеете в виду в вашем приложении?

Как правило, решение заключается в том, чтобы удалить файл поддержки в свой веб-корень. Если файл найден, он немедленно отправляется с 503 Service Not Available. Запрос никогда не делает это в вашем приложении, которое, по-видимому, "вниз для обслуживания".

В nginx что-то вроде этого:

    location / {
       if (-f $document_root/maintenance.html) {
            return 503;
       }

       # continued server directives
     }

    error_page 503 @maintenance;
    location @maintenance {
            rewrite ^(.*)$ /maintenance.html break;
    }

На самом деле это не требовало бы толчка как такового, но, возможно, простой задачи рейка или что-то добавить/удалить этот файл поддержки из вашего приложения. Возможно, вы также могли бы заменить любое имя файла в тесте -f и просто touch пустым произвольным maintenance.whatever файлом в вашем корневом каталоге веб-сайтов, который затем будет направлять nginx для обслуживания mainenance.html.

Если вы не хотите (или не можете) обходиться с конфигурацией сервера, это очень простое промежуточное ПО Rack делает по существу одно и то же: https://github.com/ddollar/rack-maintenance

Ответ 3

Чтобы добавить ответ Эмануэля:

Trackman помогает с вашими страницами обслуживания от dev до prod.

Вы можете

  • Поднимите их, используя ваш текущий макет сайта (редактирование ~ 0 html)
  • Свяжите свои текущие активы с вашей статической страницей
  • Посмотрите на макет страницы в среде вашего разработчика.

Он будет разворачивать все на S3, когда вы нажимаете на Heroku, и вам даже не нужно настраивать учетную запись на S3.

Вам также нужно запустить

rake trackman:setup

Итак, Heroku указывает на ваши S3-страницы в режиме обслуживания.

http://www.trackman-addon.com

Ответ 4

Это, вероятно, легко выполнить, добавив before_filter в начале цепочки фильтров, которая проверяет состояние режима обслуживания и перенаправляет на странице обслуживания, когда это необходимо.

Ответ 5

Ответы, приведенные выше, подходят для базового сценария.

Для умной части вашего вопроса вот аддон, который доставит вас туда:

https://addons.heroku.com/trackman