Question

Je cherche à créer un jeu basé sur le Web en Ruby on Rails. J'ai un modèle nommé « Game », qui a une datetime dans l'entrée de base de données qui correspond à un temps que je voudrais que le serveur d'appeler la fonction update_game du modèle de jeu. En fonction des paramètres du jeu, cela pourrait être toutes les 30 secondes à toutes les 12 heures.

Ruby on Rails semble ne fonctionner que lorsqu'il reçoit une requête HTTP; est-il un moyen habile pour obtenir mon jeu à mettre à jour sur une base indépendante périodique des requêtes HTTP?

Était-ce utile?

La solution

Je regarde dans delayed_job pour cela. Lorsque le jeu commence, vous pouvez créer un delayed_job pour la première mise à jour, et chaque course après qui peut ajouter un nouvel emploi à l'intervalle correct jusqu'à ce qu'il soit fait.

Je ferais beaucoup de tests mais,.) - vous ne voulez pas laisser les emplois se éloigner de vous

Autres conseils

Rails lui-même ne le fait pas; Cron fait cela. Ruby ne, cependant, ont un petit bijou nommé Chaque fois que pour faciliter la déclaration et le déploiement de nouveaux emplois Cron.

Cependant, si vous allez vraiment attendre une grande quantité de jeux pour mettre à jour de manière fiable toutes les 30 secondes, vous voudrez peut-être adopter une approche différente si la mise à jour d'un jeu prendrait une quantité importante de temps. Peut-être une fois que le jeu est accessible, le jeu pourrait lancer la mise à jour autant de fois que nécessaire (par exemple si 3 minutes se sont écoulées et l'intervalle est de 30 secondes, exécutez 6 mises à jour une fois demandées). Cela peut ou peut ne pas être une bonne option pour votre configuration, cependant, comprendre donc quelle méthode est plus viable pour vos besoins.

Rechercher dans les options de traitement de fond et peut-être Cron.

J'aime le bijou « rufus-planificateur » qui fonctionne dans les rails, bien que je ne suis pas sûr que vous pouvez ajouter plus de programme les tâches.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top