我的应用程序控制器中有一个 around_filter,用于将所有操作包含在超时块中,以便操作在达到 30 秒 Heroku 限制之前失败。我还有一个 rescue_from Timeout::Error 来彻底挽救这些超时。不幸的是,rescue_from 只在某些时候有效。
如果在控制器中执行时发生超时,它可以正常工作,但如果超时发生在视图或助手中,则无法救援。
Timeout::Error 继承自的 Interrupt 和 SignalException 都不能正确救援。但是,救援异常本身确实在视图和助手中正确救援。
around_filter :timeout
rescue_from Timeout::Error, :with => :timeout_rescue
def timeout
Timeout::timeout(10){
yield
}
end
def timeout_rescue
# Rescued
end
有没有其他方法可以挽救 Timeout::Error 以使其正常工作?