Question

J'utilise delayed_job (essayé les deux années de Tobi et collective_idea) sur site5.com hébergement mutualisé, avec passager rails environnement. J'ai réussi à faire de l'emploi fait. Cependant, il semble que le plug-in ne tient pas compte des changements dans un code source de la classe d'emploi après la première course. J'ai redémarré le serveur à chaque changement (touch tmp/restart.txt), mais il ne tient pas compte encore.

Exemple:

fichier: lib/xx_job.rb

class XxJob
  def perform
    Rails.logger.info "XX START"

    TempTest.delete_all

    i = 0
    10.times {
      i+=1
      TempTest.create(:name => "XXX")
      sleep(1)
    }

    Rails.logger.info "XX END"
  end
end

Dans un contrôleur simple que j'appelle:

Delayed::Job.enqueue(XxJob.new)

Conclusions I se sont réunis:

  1. Si je change xx_job.rb à xx_job1.rb - erreur sur le contrôleur
  2. Si je change de classe XxJob à la classe XxJob1 - erreur sur le contrôleur
  3. Si je supprime tout le contenu effectuer la méthode - l'ancien code ancien code est exécuté
  4. Nouveau fichier .rb avec classe et effectuer, cette classe enqueue - fonctionne parfaitement
  5. Si je change quelque chose dans ce nouveau nouveau fichier de réaliser et d'exécuter travail - ancien code est exécuté

Entre chaque changement que je fait un redémarrage du serveur. Il semble que passager ou quelque chose d'autre enregistre le cache de classe.

Comment puis-je supprimer ce cache? Est est stocké sur le serveur quelque part? (J'espère y avoir accès de l'hébergement mutualisé)

Merci!

Était-ce utile?

La solution 2

Finalement, je pensais que - plusieurs travailleurs étaient en cours d'exécution en arrière-plan, chacun d'entre eux pris un emploi et avaient leur propre cache. Je ne savais pas comment les tuer alors j'ai changé le nom de la table pendant plusieurs secondes. Cela les tués:)

J'utilisé https: // github .com / Tobi / delayed_job / wiki / Course à pied-retardé :: Worker-as-a-démon que le démarrage des travailleurs, et il fonctionne très bien.

Autres conseils

Si vous exécutez les travailleurs en retard d'emploi daemon, alors vous devez les redémarrer pour recharger le code. De plus, gardez à l'esprit que chaque travailleur charge sa propre instance de rails.

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