У меня есть приложение Rails, которое извлекает информацию из различных внутренних API и хранит в локальной базе данных SQLite. Мое приложение для рельсов - это, по сути, прославленный пользовательский интерфейс поверх этих данных, извлеченных из нескольких API.Автоматическое перезапуск приложения Rails и выполнение задач Rake
По причинам, выходящим за рамки этого вопроса, не просто просто обновлять информацию в БД на периодической основе путем повторного запроса API. Я в основном вынужден воссоздать БД с нуля.
В сущности, я хочу сделать что-то вроде этого каждые Х часов -
- автоматически выключит приложение рельсы
- расфасованные страницу обслуживания ("К сожалению, мы вернемся в течение нескольких минут «)
- Отбросьте дб, воссоздать его, и повторно перенести его (
rake db:drop; rake db:create; rake db:migrate
) - Выполнить свою пользовательскую задачу грабли, что снова заполнит таблицы (
rake myApp:update
) - Перезапустите Применение в процессе на
Это вызывает несколько вопросов
- Как есть приложение перезапускается автоматически каждые X часов? Должен ли я планировать это извне с помощью задания cron? Есть ли способ рельсов, я могу это сделать?
- Как отобразить страницу обслуживания, если приложение не работает? Опять же, это тоже внешнее перенаправление, которое мне нужно управлять?
- Самое главное, есть ли хороший способ отбросить таблицы и воссоздать их, или я должен использовать задачи
rake
? Есть ли способ вызватьrake
задачи при запуске? Я думаю, я мог бы создать процесс.rb
подconfig/initalizers
, который будет запускаться при запуске (но только когдаRails.env == 'production'
)?
Спасибо за помощь!
это здорово! Используя этот драгоценный камень, я мог просто разместить страницу обслуживания, а затем запустить задачи рейка, чтобы повторно создать БД. Мне даже не пришлось бы прикладывать приложение, пока SQLite DB отбрасываются и воссоздаются за кулисами. – user2490003