Синхронизированные события сервера с ruby on rails
Я пытаюсь создать веб-игру в Ruby on Rails. У меня есть модель с именем "Game", которая имеет datetime в записи базы данных, которая соответствует времени, которое я хотел бы, чтобы сервер вызвал функцию update_game_игровой модели игры. В зависимости от настроек игры, это может быть каждые 30 секунд или каждые 12 часов.
Ruby on Rails, похоже, работает только тогда, когда он получает HTTP-запрос; есть ли скользкий способ заставить мою игру обновляться на периодической основе независимо от HTTP просьбы?
4 ответа:
Я бы заглянул в delayed_job для этого. Когда игра запускается, вы можете создать delayed_job для первого обновления, и каждый запуск после этого может добавить новое задание с правильным интервалом, пока оно не будет выполнено.
Я бы сделал много тестов, хотя ;) - вы не хотите, чтобы работа ушла от вас.
Rails сам по себе этого не делает; это делает cron. Однако у Ruby естьдрагоценный камень с именем Whenever , чтобы облегчить объявление и развертывание новых заданий cron.
Однако, если вы действительно собираетесь ожидать, что большое количество игр будет надежно обновляться каждые 30 секунд, вы можете выбрать другой подход, если обновление игры займет сколько-нибудь значительное время. Возможно, после получения доступа к игре она сможет запускать обновление столько раз, сколько необходимо (например, если 3 прошло несколько минут, и интервал составляет 30 секунд, запустите 6 обновлений после запроса). Однако это может быть или не быть хорошим вариантом для вашей установки, поэтому выясните, какой метод более жизнеспособен для ваших целей.