Rufus Scheduler Anmeldung nicht in der Produktion
-
18-09-2019 - |
Frage
Meine Rails-Anwendung startet einen Prozess mit rufus-Scheduler in einem initializer ab. Hier ist eine abgespeckte Version des initializer Code:
# config.logger isn't available here, so we have to grab it from the Rails object
logger = RAILS_DEFAULT_LOGGER
logger.warn(Time.now.to_s + ": Starting Rufus Scheduler")
# run every Wednesday at 10 AM
cron_string = '0 10 * * 3'
scheduler = Rufus::Scheduler.start_new
scheduler.cron cron_string do
logger.warn(Time.now.to_s + ": Starting Background Process")
(do work here)
logger.warn(Time.now.to_s + ": Finished Background Process")
end
logger.warn(Time.now.to_s + ": Rufus Scheduler set Background Process to run with the following cron string: [#{cron_string}]")
In allen Umgebungen, wird der Code wie ein Champion. Das Bestücken-Prozess hat seine Sache und endet anmutig. Das Problem ist jedoch mit Protokollierung. Wenn RAILS_ENV auf „Produktion“ gesetzt ist, kann die Nachrichten innerhalb des cron-Block überhaupt nicht anmelden.
Ich bin mit Passagiere 2.2.9 und Rails 2.3.5. Ich meine, eine dieser beiden Dinge wird der Prozess von der Protokollierung zu verhindern. Kann mir jemand sagen, was es ist und wie es in der Produktion anmelden zu bekommen?
Lösung
OK, fand das Problem, dank diesen Artikel: http: // earthcode. com / blog / 2009/05 / rails_script_runner_logging_cron.html
Schaltet den Loggers wird nicht automatisch bündig in der Produktion. Also, ich habe gerade hinzugefügt
logger.flush
bis zum Ende des Prozesses und BANG alles funktionierte.