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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top