У меня есть приложение Rails на основе Passenger, которое имеет тысячи пользователей. Иногда нам нужно применить исправление кода (мы используем git), и текущий процесс для этого (вы можете предположить, что нет миграций данных):
- Выполнить
git pull origin [production-branch-name]
на сервере
touch tmp/restart.txt
для перезапуска Пассажира
Это позволяет нам вносить исправления в сервер, не прибегая к созданию страницы обслуживания, что замечательно, но это не совсем правильно, поскольку на самом деле это не правильное «развертывание», и нам все равно нужно обновлять вручную файл редакции и наше развертывание не отображаются в используемых нами сервисах Hoptoad или NewRelic.
В идеале я бы запустил cap production deploy
и просто позволил бы стандартному сценарию развертывания Capistrano позаботиться обо всем, но опасно ли это делать, не открывая страницу обслуживания? Этот процесс развертывания кажется достаточно безопасным в том смысле, что новая редакция развернута в совершенно отдельной папке, и только в самом конце процесса создается символическая ссылка, созданная для переключения развернутой версии, но я все еще довольно параноидален это как-то приводит к потере или неудаче запроса.