J'ai une application Rails qui, malheureusement, après une requête à un contrôleur, doit faire des calculs qui prennent un certain temps. Quelles sont les meilleures pratiques dans Rails pour fournir un retour d'information ou une progression sur une tâche ou une requête de longue durée ? Ces méthodes de contrôleur durent généralement plus de 60 secondes.
Je ne suis pas concerné par le côté client... J'avais prévu d'avoir une requête Ajax toutes les secondes environ et d'afficher un indicateur de progression. Je ne suis pas sûr de la meilleure pratique de Rails, dois-je créer un contrôleur supplémentaire ? Y a-t-il quelque chose d'ingénieux que je puisse faire ? Je veux que les réponses se concentrent sur le côté serveur en utilisant uniquement Rails.
Merci d'avance pour votre aide.
Edit :
Si cela a de l'importance, les demandes http sont pour les PDFs. Je fais ensuite générer ces PDF par Rails en conjonction avec Ruport. Le problème est que ces PDF sont très volumineux et contiennent beaucoup de données. Est-il toujours utile d'utiliser une tâche d'arrière-plan ? Supposons qu'un PDF moyen prenne entre une et deux minutes, cela rendra-t-il mon application Rails insensible à toute autre requête du serveur pendant ce temps ?
Edit 2 :
Ok, après une enquête plus approfondie, il semble que mon application Rails ne réponde pas aux autres requêtes HTTP après qu'une demande de PDF volumineux ait été reçue. Donc, je suppose que la question devient maintenant : Quel est le meilleur mécanisme de filtrage/arrière-plan à utiliser ? Il doit être stable et entretenu. Je suis très surpris que Rails n'ait pas quelque chose comme ça intégré.
Edit 3 :
J'ai lu cette page : http://wiki.rubyonrails.org/rails/pages/HowToRunBackgroundJobsInRails . J'aimerais lire des articles sur les diverses expériences vécues avec ces outils.
Edit 4 :
J'utilise Passenger Phusion "modrails", si cela a de l'importance.
Edit 5 :
J'utilise Windows Vista 64 bits sur ma machine de développement, mais ma machine de production est Ubuntu 8.04 LTS. Devrais-je envisager de passer à Linux pour ma machine de développement ? Les solutions présentées fonctionneront-elles sur les deux ?