Ermitteln Sie die job_id aus dem Codeblock für einen Cron-Job in Rufus Scheduler (Rails 3.2)
-
13-12-2019 - |
Frage
Gibt es beim Erstellen eines Cron-Jobs über den Rufus-Scheduler eine Möglichkeit innerhalb des Code-Blocks für den Cron-Job, um die job_id des zu ermitteln cron-Job selbst?
Was ich tun möchte, ist so etwas:
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
Das Problem ist self.job_id
.Irgendwelche Vorschläge zum Abrufen der
aktuelle job_id des Crons, der gerade ausgelöst wird?
Ich weiß, dass es so etwas wie "triggered_threads" gibt, das zurückgegeben wurde derzeit laufende Jobs.Aber ich möchte etwas Spezifischeres:der job_id des Codeblocks, in dem ich mich gerade befinde.
Ist das möglich?
Lösung
Ich konnte dieses Problem lösen, indem ich den Scheduler zur Verfügung stellte.aufruf der Cron-Methode mit einem optionalen Parameter, der die ID des neuen Jobs explizit identifiziert:
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
wo explicit_job_id
ist eine Variable, die vor dem Scheduler definiert ist.cron-Aufruf wird durchgeführt.