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

这一切都很完美,但我总是回到“成功”状态,因为我的 groovy 总是正确退出。我目前正在投入RuntimeExeptionsGroovy 脚本来引发失败的工作。当我调用system "groovy progra.groovy"它并引发异常(groovy 程序引发异常)时,system调用的返回值正如预期的那样false。但是当通过delayed_job 做同样的事情时,它从不访问def error方法,而是访问def success方法。

您对 delay_job 如何实际控制perform方法的返回有什么建议吗?什么时候进入errororfailure钩子。不幸的是,我在文档中没有找到关于这个主题的任何内容。

提前致谢

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 回答