0

システムコールを実行するためにdelayed_jobを使用しています。このシステム コールは、Groovy スクリプトを呼び出します。

class Job
    def perform
        command "groovy file.groovy"
        system command
    end

    def success(job)
        # handle success
    end

    def error(job, exception)
        # handle error, exception
    end
end

これはすべて完全に機能していますが、グルーヴィーは常に正しく終了するため、常に「成功」​​ステータスが返されます。私は現在RuntimeExeptions、Groovy スクリプトを投入して、失敗したジョブを誘発しています。呼び出しsystem "groovy progra.groovy"て例外が発生すると (groovy プログラムが例外を発生させます)、systemcall の戻り値は、期待どおりfalseです。しかし、delayed_job を介して同じことを行うと、メソッドではdef errorなくメソッドにアクセスしdef successます。

delayed_job が実際にperformメソッドのリターンをどのように制御するかについて何かアドバイスはありますか? errorまたはfailureフックにいつ入るか。残念ながら、このトピックに関するドキュメントは見つかりませんでした。

前もって感謝します

4

1 に答える 1

3

このようなことを試しましたか:

def perform
    command = "groovy file.groovy"
    system command || raise "Error executing command : #{command}"
end

私は、delayed_job が実行呼び出しをレスキュー ブロックにラップし、キャッチした例外に基づいて成功またはエラーを呼び出すと確信しています。

于 2012-12-21T08:58:19.477 に答える