我正在运行一个API,经常超时的脚本。我在使用begin/rescue
块将其发送到redo
,但是在运行redo
命令之前,要记录命令行中发生的情况。红宝石救援块 - 回应不止一个命令
begin
#...api query...
rescue ErrorClass
puts("retrying #{id}") && redo
end
不幸的是,上面的脚本不起作用。只有第一个命令运行。
我想迫使救援块运行多行代码如下所示:
begin
# api query
rescue ErrorClass do ###or:# rescue ErrorClass do |e|
puts "retrying #{id}"
redo
end
但那些不工作的。
我有运气创建一个单独的方法来这样运行:
def example
id = 34314
begin
5/0
rescue ZeroDivisionError
eval(handle_zerodiv_error(id))
end
end
def handle_zerodiv_error(id)
puts "retrying #{id}"
"redo"
end
...的实际工作。但是,在我看来,它需要太多的代码行,它使用根据我的导师的任何方式不是犹太教的eval。
什么是你的代码redo'的'目的,我没有得到你在找什么 –
大部分我能够在启动过程中的时间再次在那个给定的ID,错误发生在和它的作品。因此,我正试图在没有脚本中断的情况下做到这一点。不可避免地会出现一些API命令本身导致错误的情况,所以我想知道脚本何时卡在相同的ID上。 –
*我想强制救援块运行多行代码* - 问题是什么?你的意思是最后一行没有执行? –