RUFUS调度程序 - 捕获异常并执行有条件的语句



我有一个rufus调度程序,该调度程序会执行Dropbox请求以检查一次访问密钥和秘密是否每10分钟授权。

如果未经授权,则报告以下例外:

DropboxAuthError in GalleryController#index
#<Net::HTTPUnauthorized:0x7ef04c8>

我在调度程序中具有的代码检测到这是从rufus-scheduler文档中:

def scheduler.on_exception(job, exception)
  puts "job #{job.job_id} caught exception '#{exception}'"
end

因为我只想捕获上面的例外,所以我希望能够执行有条件的语句,该语句将异常与一个值进行比较,例如:

 def scheduler.on_exception(job, exception)
  if exception == "DropboxAuthError"
    puts "job #{job.job_id} caught exception '#{exception}'"
  end
 end

但是,由于例外是一个对象,所以我不能进行比较。

有人有任何想法我可以做到吗?

非常感谢。

cat皮肤的多种方法

if exception.message.match(/DropboxAuthError/)
  # ...
end
if exception.is_a?(Net::HTTPUnauthorized)
  # ...
end

不要害怕红宝石对象。

请注意,您可以避免您从Rufus-Scheduler文档中选择的全局错误处理,并执行以下操作:

scheduler.every '10m' do
  begin
    # do the API call...
  rescue Net::HTTPUnauthorized => ne
    puts "not authorized"
  rescue => e
    puts "something wrong happened " + e.inspect
  end  
end

救援对您进行检查的地方。

欢呼。

最新更新