2009-12-08 3 views
1

Мы запускаем приложение с полдюжины mongrels. Новая функция, которую мы добавили, - планировщик (rufus-scheduler), который работает внутри mongrel и обеспечивает обработку задач в виде cron-фона. Мы хотим, чтобы этот планировщик выполнял только один из наших mogrels, но мы не можем понять, как - во время запуска (environment.rb) - идентифицировать конкретного монгреля для запуска планировщика.Ruby on Rails: Как определить конкретный экземпляр mongrel в кластере во время запуска?

Мы создали файл yaml с настройкой для порта # для mongrel, в котором мы хотели бы запустить планировщик. Во время запуска в enviromnent.rb мы хотели бы запросить файл yaml, получить порт, а затем сравнить его с загружаемым экземпляром - если это то же самое, запустите планировщик.

Кто-то недавно ответил, что мы должны посмотреть на request.port - при загрузке объекта запроса нет. Где еще хранится порт #? Или, как мы можем передать парм отдельному дворнягу или сравнить его с настройкой, чтобы идентифицировать себя?

Заранее спасибо ...

Рассел

+0

Есть ли причина, по которой вам нужно сделать это в кластере Mongrel? Похоже, возможно, вы могли бы поместить желаемую функциональность в сценарий (запускать через скрипт/бегун) или демон, отдельно от своих экземпляров приложений, обслуживающих веб-запросы. У меня был некоторый успех с драгоценным камнем Ruby Daemons для таких вещей. – samg

ответ

0

Я спросил same question пару недель назад.

Gist:

  1. плагин под названием 'Rooster' адреса эту проблему.
  2. Используйте общий ресурс как файл для синхронизации.