破いて捨てたノート

Webやテクノロジーやそれ以外に関する思いつき

delayed_jobで非同期実行指定したメソッドをデバッグ時に即座に実行する

Rubyで処理を非同期実行したい場合に使うgemはいくつかありますが、自分はdelayed_job(以下、DJ)を使ったります。 DJではメソッドを常に非同期で実行したい場合、handle_asynchronouslyを使って次のように書きます。

class Device
  def deliver
    # long running method
  end
  handle_asynchronously :deliver
end

ただ、開発中にデバッグ等の用途でこのメソッドを即座に呼び出したいことがあったります。(普通に呼び出してもDJのqueueに処理が追加さるだけで、即座に実行されません。) そんなときは、_without_delayをつけてメソッドを呼んであげと即時実行できます。deliver_without_delay

READMEを読みましょう。

https://github.com/collectiveidea/delayed_job

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)