J'ai une application Rails dans laquelle un petit nombre d'actions nécessite un temps de calcul important. Plutôt que de passer en revue la complexité de la gestion de ces actions en tâche de fond, j'ai trouvé que je pouvais diviser le traitement en plusieurs threads et en utilisant JRuby avec un serveur multicœur, je pouvais m'assurer que tous les threads se terminent dans un délai raisonnable. (Le client a déjà manifesté un vif intérêt pour conserver cette approche par rapport à l'exécution des tâches en arrière-plan.)Connexion des threads dans une application Rails
Le problème est que l'écriture dans l'enregistreur Rails ne fonctionne pas dans ces threads. Rien n'apparaît dans le fichier journal. J'ai trouvé quelques références à ce problème mais pas de solutions. Cela ne me dérangerait pas d'insérer des puts dans mon code pour aider au débogage mais stdout semble être mangé par le serveur glassfish gem app.
Est-ce que quelqu'un a réussi à se connecter à l'intérieur d'un thread Ruby de Rails sans créer de nouveau journal à chaque fois?
Mise à jour: J'ai trouvé que les puts dans les threads apparaissent dans le fichier journal de glassfish. Je ne sais pas pourquoi je n'ai pas vu ça avant; Je l'ai peut-être testé à l'origine dans un thread engendré par un autre thread (non principal). Quoi qu'il en soit, à des fins de débogage, je vois des écritures dans STDOUT dans le fichier journal, donc je suis content. –