如何检查ActiveResource资源的可用性?

时间:2012-06-21 14:37:40

标签: ruby-on-rails ruby-on-rails-3 activeresource

在我的rails应用程序中,我使用ActiveResource来访问另一个服务,我想优雅地处理当该资源脱机时发生的异常(服务器关闭/ ip被阻止等)。如果没有返回任何响应,我的应用会生成此错误:

Errno::ECONNREFUSED in UsersController

我想在我的应用程序控制器中执行'rescue_from',这样它就会在错误发生时处理错误,但不确定params会是什么,或者这种异常在这一点上甚至是可以捕获的

我应该/可以测试资源的可用性吗?

我可以这样做,但它会捕获每个错误,并且我想捕获我得到的特定连接类型错误。

rescue_from Exception, do
  ...
end   

1 个答案:

答案 0 :(得分:1)

假设一切正常可能更容易,然后在出现异常时处理异常。您可以在应用程序控制器中使用rescue_from(或者可能是您的用户控制器,如果它是本地错误):

class ApplicationController < ActionController::Base
    rescue_from(Errno::ECONNREFUSED) do |e|
        flash[:warning] = 'Hey!  Bad things happened!'
        render :template => 'my/error/page'
    end
end

注意:我在更新您的帖子之前就开始了这个,但好消息是Errno::ECONNREFUSED是一个类 - 而不是常量 - 所以您可以使用它而不是泛型{ {1}}:

Exception

希望有所帮助!