2010-10-14 4 views
3

J'utilise delayed_job 2.1.0.pre2, et dans ma lib j'ai une classe qui s'appelle MailingJob (mailing_job.rb), et elle a une méthode nommée perform. Dans mon contrôleur, j'ai mis un nouvel objet MailingJob dans ma file d'attente delayed_job comme le dit le doc. mais quand je lance la commande "rake jobs: work", il m'a toujours dit qu'il ne peut pas trouver "MailingJob", est-il nécessaire d'exiger le fichier mailing_job.rb? Si oui, où dois-je mettre cela? merci!rake jobs: erreur de travail, constante non-initialisée

+1

Il est pratiquement impossible de vous aider sans une meilleure information. Nous avons vraiment besoin de voir le code. –

Répondre

7

mailing_job.rb doit être dans un endroit où Rails peut trouver et le charger automatiquement. Où avez-vous ce fichier? À moins que ce soit dans app/models ou quelque chose comme ça, il ne le trouvera pas tout seul.

J'ai mes emplois dans app/jobs mais cela fonctionne parce que j'ajouté ce chemin aux chemins de charge Rails dans le bloc environment.rbRails::Initializer.run:

config.load_paths << "#{Rails.root}/app/jobs" 
+0

bonne idée, j'ai mis le "mailing_job.rb" dans mon répertoire RAILSAPP/lib, je pensais qu'il serait chargé automatiquement, le répertoire lib chargerait-il automatiquement lorsque les rails fonctionnent? –

+0

Non, 'lib' n'est pas dans les chemins de chargement par défaut. Vous pourriez ajouter un initialiseur pour exiger vos choses de la lib. – tfe

+0

super merci !! je vais l'essayer plus tard, merci –

Questions connexes