Ich habe eine Rails-Anwendung, in der eine kleine Anzahl von Aktionen erhebliche Rechenzeit benötigt. Anstatt die Komplexität der Verwaltung dieser Aktionen als Hintergrundaufgaben zu bewältigen, habe ich festgestellt, dass ich die Verarbeitung in mehrere Threads aufteilen kann und mithilfe von JRuby mit einem Multicore-Server sicherstellen kann, dass alle Threads in einer angemessenen Zeit abgeschlossen werden. (Der Kunde hat bereits ein starkes Interesse daran gezeigt, diesen Ansatz gegenüber laufenden Aufgaben im Hintergrund zu halten.)In Threads in einer Rails-Anwendung protokollieren
Das Problem besteht darin, dass das Schreiben in den Rails-Logger innerhalb dieser Threads nicht funktioniert. In der Protokolldatei wird nichts angezeigt. Ich habe ein paar Hinweise auf dieses Problem gefunden, aber keine Lösungen. Es würde mir nichts ausmachen puts in meinen Code einzufügen, um beim Debuggen zu helfen, aber stdout scheint vom Glassfish Gem App Server aufgefressen zu sein.
Hat jemand erfolgreich Logging in einem Rails Ruby Thread gemacht, ohne jedes Mal ein neues Log zu erstellen?
Update: Ich habe festgestellt, dass Puts in Threads in der Glassfish-Protokolldatei angezeigt werden. Ich bin nicht sicher, warum ich das vorher nicht gesehen habe; Ich könnte es ursprünglich in einem Thread getestet haben, der von einem anderen (Nicht-Haupt) -Thread erzeugt wurde. Wie auch immer, ich sehe zu Debugging-Zwecken Schreibvorgänge in STDOUT in der Protokolldatei, also bin ich glücklich. –