いいえ、これはできません。
これは、コールバックと実行設定されたイベントを処理時計仕掛けの宝石でrelevant method:
def tick(t=Time.now)
if (fire_callbacks(:before_tick))
events = events_to_run(t)
events.each do |event|
if (fire_callbacks(:before_run, event, t))
event.run(t)
fire_callbacks(:after_run, event, t)
end
end
end
fire_callbacks(:after_tick)
events
end
は、このメソッドは、events_to_run
メソッドから返された(現在の時刻に実行する必要があり、すべてのイベントをロードすることは終わっすべて反復します。 events_to_run
のイベントとコールバックを起動し、event
を実行
個々のイベントを実行して、まだすべてのコールバックが解雇持ってできるようにするには、この方法は、このような何かをchangetoする必要があります。
def tick(t=Time.now)
if (fire_callbacks(:before_tick))
events = events_to_run(t)
events.each do |event|
run_event_with_callbacks(event)
end
end
fire_callbacks(:after_tick)
events
end
def run_event_with_callbacks(event)
if (fire_callbacks(:before_run, event, t))
event.run(t)
fire_callbacks(:after_run, event, t)
end
end
end
これにより、発呼コールバックで個々のイベントを実行できるようになります。さらに、個々のイベントを読み込むメソッドが必要になります。おそらく、このような何か:
def load_event(job)
# finds only the first event when there are multiple
# events registered for the same job
@events.find { |event| event.job == job }
end
しかし、イベントがManager
に登録されているので、あなたが正しく設定で定義されたすべてのイベントで初期化されたマネージャのインスタンスが必要になります。
長い話を短くするこれは現時点では不可能であり、可能な限りコードの構造を変更する必要があります。
私はClockworkに精通していませんが、抽象化のレベルを追加し、Clockworkまたはメソッド呼び出し元の他のどのインターフェイスからでも必要なメソッドを作成する必要があるようです。 'Shift.sync'を' REDIS.hset'を呼び出すメソッドにラップするか、Clockwork DSLのコマンド部分ですか? –
イベントをクロックワークファイルから実行される別々のスクリプトに抽出することがあります。 –
私はClockwork自体が私の抽象化レベルになると思っていましたが、すべてのレイヤーを1つにまとめる必要があるように見えます。ヒントをありがとう。 – chrismanderson