planificateur Rufus pas connecter la production
-
18-09-2019 - |
Question
Mon rails app donne le coup d'envoi d'un processus avec rufus-planificateur dans un initialiseur. Voici une version allégée du code du initialiseur:
# 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}]")
Dans tous les environnements, le code fonctionne comme un champion. Le processus populate fait son travail et se termine avec élégance. Le problème, cependant, est l'exploitation forestière. Lorsque RAILS_ENV est réglé sur « la production », les messages à l'intérieur du bloc de Cron ne consignent pas du tout.
J'utilise Passenger 2.2.9 et Rails 2.3.5. Je figure une de ces deux choses est empêcher que le processus l'exploitation forestière. Quelqu'un peut-il me dire qu'il est et comment l'obtenir pour se connecter dans la production?
La solution
OK, a trouvé le problème, grâce à cet article: http: // earthcode. com / blog / 2009/05 / rails_script_runner_logging_cron.html
Transforme sur l'enregistreur ne sera pas flush automatique dans la production. Donc, je viens d'ajouter
logger.flush
à la fin du processus et BANG tout fonctionnait.