Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 延迟作业-处理作业返回值_Ruby On Rails_Delayed Job_Exit Code - Fatal编程技术网

Ruby on rails 延迟作业-处理作业返回值

Ruby on rails 延迟作业-处理作业返回值,ruby-on-rails,delayed-job,exit-code,Ruby On Rails,Delayed Job,Exit Code,我正在使用delayed_作业执行系统调用。此系统调用调用Groovy脚本 class Job def perform command "groovy file.groovy" system command end def success(job) # handle success end def error(job, exception) # handle error, exceptio

我正在使用delayed_作业执行系统调用。此系统调用调用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总是正确退出。我目前正在Groovy脚本中抛出
runtimeexecptions
,以引发作业失败。当我调用
system“groovy progra.groovy”
并引发异常(groovy程序引发异常)时,
system
调用的返回值如预期的那样为
false
。但当通过延迟_作业执行相同操作时,它从不访问
def error
方法,而是访问
def success
方法

对于延迟作业如何实际控制
perform
方法的返回,您有什么建议吗?它何时进入
错误
故障
挂钩。不幸的是,我在文档中没有找到关于这个主题的任何内容


提前感谢

您是否尝试过以下方法:

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

我很确定延迟作业会将执行调用包装在救援块中,并根据捕获到的任何异常调用成功或错误。

您是否尝试过类似的操作:

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

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

不幸的是,系统命令不会引发任何异常。即使退出代码是1+…这正是我建议您在system()调用之后添加“| | raise”Error executing command:#{command}”的原因。您还可以检查结果是否为nil,在这种情况下会引发一个异常,如“command#{command}failed(原因:$?)”,我的第一个建议只是检查“falsy”值,然后再加上,我运行了错误处理。非常感谢。不幸的是,system命令没有引发任何异常。即使退出代码是1+…这正是我建议您在system()调用之后添加“| | raise”Error executing command:#{command}”的原因。您还可以检查结果是否为nil,在这种情况下会引发一个异常,如“command#{command}failed(原因:$?)”,我的第一个建议只是检查“falsy”值,然后再加上,我运行了错误处理。多谢各位。