2009-12-08 2 views
1

Nous exécutons une application avec une demi-douzaine de bâtards. Une nouvelle fonctionnalité que nous avons ajoutée est un planificateur (rufus-scheduler) qui s'exécute dans un métamorphe et fournit un traitement de tâche en arrière-plan semblable à un cron. Nous ne voulons pas exécuter ce planificateur sur un seul de nos bâtards, mais nous ne pouvons pas comprendre comment - lors du démarrage (environment.rb) - identifier le bâtisseur spécifique pour démarrer le planificateur.Ruby on Rails: Comment détecter une instance de mongrel spécifique dans un cluster au démarrage?

Nous avons mis en place un fichier yaml avec un paramètre pour le port # pour le méta dans lequel nous aimerions que le planificateur commence. Au démarrage, dans enviromnent.rb, nous aimerions interroger le fichier yaml, obtenir le port, puis le comparer à l'instance qui démarre - si c'est la même chose, lancez le planificateur.

Quelqu'un a répondu récemment que nous devrions regarder request.port - il n'y a pas d'objet de demande lorsque vous démarrez. Où d'autre est le port # stocké? Ou, comment pouvons-nous passer un parm à un individu ou le comparer à un cadre pour s'identifier?

Merci à l'avance ...

Russell

+0

Y a-t-il une raison pour laquelle vous devez le faire dans votre cluster Mongrel? On dirait que vous pourriez peut-être mettre la fonctionnalité souhaitée dans un script (exécuté via script/runner) ou un démon, distinct de vos instances d'application servant des requêtes Web. J'ai eu un certain succès avec la gemme Ruby Daemons pour des trucs comme ça. – samg

Répondre

0

j'ai demandé au same question deux semaines.

Contenu essentiel:

  1. Un plugin nommé 'Rooster' adresses ce problème. Utilisez une ressource partagée comme un fichier comme un moyen de synchroniser.
Questions connexes