Déterminez job_id à partir du bloc de code pour une tâche cron dans Rufus Scheduler (rails 3.2)
-
13-12-2019 - |
Question
Lors de la création d'un travail Cron via le planificateur Rufus, y a-t-il un moyen dans le bloc de code pour le travail cron pour déterminer le travail du travail Cron lui-même?
Ce que je veux faire, c'est quelque chose comme ceci :
scheduler.cron '0 0 0 * * * Etc/GMT+0' do
# Nix existing jobs.
scheduler.cron_jobs.values.map { |j| if j.job_id != self.job_id then j.unschedule end }
...
end
Le problème est self.job_id
.Des suggestions sur la façon de récupérer le travail actuel du Cron qui est actuellement déclenché?
Je sais qu'il y a quelque chose comme "déclenché_threads", qui a renvoyé des travaux en cours d'exécution.Mais je veux quelque chose de plus précis :Le travail du bloc de code dans lequel je suis actuellement.
Est-ce possible?
La solution
J'ai pu résoudre ce problème en fournissant à l'invocation de la méthode programmer.cron un paramètre facultatif qui identifiait explicitement l'ID du nouveau travail :
scheduler.cron '0 0 0 * * * Etc/GMT+0', {:job_id => explicit_job_id} do
# Nix existing jobs.
scheduler.cron_jobs.values.map { |j| if j.job_id != self.job_id then j.unschedule end }
...
end
où explicit_job_id
est une variable définie avant l'invocation de programmer.cron.