Quelqu'un peut-il me montrer comment étendre la gemme delayed_jobs pour me permettre d'ajouter quelques colonnes personnalisées?Ajouter des colonnes personnalisées à la table delayed_jobs
J'ai ajouté des colonnes de couple, mais lorsque je tente de « proprement » les utilise, je reçois:
ne peut pas-Assign masse Attributs protégés: owner_type, OWNER_ID
donc je dois ajouter les colonnes cattr_accessor:
module Delayed
class Worker
DEFAULT_SLEEP_DELAY = 5
DEFAULT_MAX_ATTEMPTS = 25
DEFAULT_MAX_RUN_TIME = 4.hours
DEFAULT_DEFAULT_PRIORITY = 0
DEFAULT_DELAY_JOBS = true
DEFAULT_QUEUES = []
DEFAULT_READ_AHEAD = 5
cattr_accessor :min_priority, :max_priority, :max_attempts, :max_run_time,
:default_priority, :sleep_delay, :logger, :delay_jobs, :queues,
:read_ahead, :plugins, :destroy_failed_jobs, **:owner_id, :owner_type**
Cependant, vous ne savez pas quel est le meilleur moyen d'étendre cette fonctionnalité. Ma conjecture/tentative est de créer un fichier et de l'ajouter au répertoire des initialiseurs. Cependant, pour une raison quelconque, cela n'a pas fonctionné.
Des conseils appréciés.
Je peux aller sur cette route - mais les autres développeurs ont déjà ajouté des colonnes. Je voudrais accéder à ces colonnes via delay (: owner_id => etc ...). Sinon je dois créer une instance de DJ et assigner les valeurs comme n'importe quel autre objet. C'est bien, mais en ajoutant une pointe de code à la gemme, cela ferait un one-liner vs 2,3,4 ... – Northband
"Sinon, je dois créer une instance de DJ et assigner les valeurs comme tout autre objet " - Je ne suis pas sûr de comprendre cette affirmation. Si vous avez déjà un objet personnalisable avec délai (celui qui implémente #perform), vous pouvez y ajouter vos champs: owner_id et: owner_type sans effort supplémentaire, non? –