红宝石在轨道上

我正在使用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脚本中引入了RuntimeExeptions来挑起失败的工作。 当我调用system "groovy progra.groovy"并引发异常(Groovy程序引发异常)时, system调用的返回值与预期一样为false 。 但是,当通过delayed_job执行相同的操作时,它不会访问def error方法,而是访问def success方法。

你有没有建议如何delayed_job实际控制perform方法的回报? 它何时输入errorfailure挂钩。 不幸的是,我没有在文档中找到关于此主题的任何内容。

提前致谢


你有没有尝试过这样的事情:

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

我很确定delayed_job在救援块中包装执行调用,并根据它捕获的任何异常调用成功或错误。

链接地址: http://www.djcxy.com/p/65777.html

上一篇: ruby on rails

下一篇: job when a delayed task fails so it will auto