web-dev-qa-db-fra.com

Se connecter en différé_job?

Je ne peux obtenir aucune sortie de journal de delayed_job, et je ne suis pas sûr que mes emplois commencent.

Voici mon Procfile:

web:     bundle exec Rails server
worker:  bundle exec rake jobs:work
worker:  bundle exec clockwork app/clock.rb

Et voici le travail:

class ScanningJob
  def perform
    logger.info "logging from delayed_job"
  end

  def after(job)
    Rails.logger.info "logging from after delayed_job"
  end
end

Je vois que les sorties d'horlogerie sortent vers le système et je peux voir l'exécuteur de travail démarrer, mais je ne vois jamais mes instructions de journal frappées. J'ai également essayé puts en vain.

Mon fichier d'horloge est assez simple:

every(3.seconds, 'refreshlistings') { Delayed::Job.enqueue ScanningJob.new }

Je veux juste que cela fonctionne, et le manque de journalisation signifie que je ne peux pas. Que se passe t-il ici?

38
Stefan Kendall

Lorsque j'avais besoin d'une sortie de journal à partir de travaux différés, j'ai trouvé cette question assez utile.

Dans config/initializers/delayed_job.rb J'ajoute la ligne:

Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'dj.log'))

Ensuite, dans mon travail, je génère ce journal avec:

Delayed::Worker.logger.debug("Log Entry")

Il en résulte le fichier log/dj.log en cours d'écriture. Cela fonctionne dans les environnements de développement, de transfert et de production.

90
James Chevalier