Pergunta

Meu aplicativo Rails inicia um processo com Rufus-Scheduler em um inicializador. Aqui está uma versão despojada do código do inicializador:

# 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}]")

Em todos os ambientes, o código funciona como um campeão. O processo de preenchimento faz o que é e termina graciosamente. O problema, no entanto, é com o log. Quando o Rails_env está definido como "Produção", as mensagens dentro do bloco Cron não registram nada.

Estou usando o passageiro 2.2.9 e o Rails 2.3.5. Eu acho que uma dessas duas coisas está impedindo que o processo registre. Alguém pode me dizer qual é e como fazê -lo fazer login na produção?

Foi útil?

Solução

Ok, encontrei o problema, graças a este artigo: http://earthcode.com/blog/2009/05/rails_script_runner_logging_cron.html

Acontece que o madeireiro não fagará automaticamente na produção. Então, acabei de adicionar

logger.flush 

até o final do processo e derrotar tudo funcionou.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top