2017-04-14 1 views
0

Je cours Rails 4.2.8 et je veux que mon travail ne s'exécute que sous certaines conditions. Actuellement, je fais cette vérification dans le code qui appelle le travail, mais il serait beaucoup plus propre de contenir la logique dans la classe d'emplois. Est-ce que quelqu'un a fait ça? J'utilise Sidekiq 4.2.10 en tant qu'adaptateur de travail d'arrière-plan.Rails ActiveJob - comment arrêter la tâche dans before_enqueue

Répondre

1

Soulevez une exception de before_enqueue. Infos de DHP lui-même: https://groups.google.com/forum/#!topic/rubyonrails-core/mhD4T90g0G4

C'est intentionnellement. Je n'ai jamais aimé comment retourner false dans un filtre arrête l'exécution. Il y a trop d'effets secondaires, tels que @stuff = Model.something_returning_false, qui interrompent accidentellement la chaîne de rappel. Dans AJ, nous allons plutôt à l'approche explicite qui vous oblige à lever une exception, si vous voulez arrêter l'exécution. Nous allons changer les rappels ailleurs pour nous éloigner du "faux moyens d'arrêt" dans Rails 5.0. Before_ * est en effet destiné à être le même que l'écriture de votre code avant son exécution, mais de manière à ce qu'il puisse être abstrait et mélangé. Ainsi vous pouvez écrire des callbacks before_ * dans les super classes sans que l'enfant ait besoin de appel super, ou dans les modules que vous mélangez.