0

Rufusスケジューラを使用してcronジョブを作成する場合、cronジョブのコードブロック内にcronジョブ自体のjob_idを決定する方法はありますか?

私がやりたいのは次のようなものです。

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

問題はself.job_idです。現在トリガーされているcronの現在のjob_idを取得する方法に関する提案はありますか?

現在実行中のジョブを返す「triggered_threads」のようなものがあることを私は知っています。しかし、もっと具体的なものが必要です。現在私がいるコードブロックのjob_idです。

これは可能ですか?

4

1 に答える 1

1

新しいジョブのIDを明示的に識別するオプションのパラメーターをscheduler.cronメソッド呼び出しに提供することで、この問題を解決することができました。

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

ここでexplicit_job_id、scheduler.cronの呼び出しが行われる前に定義された変数があります。

于 2012-07-31T12:37:12.397 に答える