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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top