2012-06-21 7 views
0

내 레일 앱에서 다른 서비스에 액세스하기 위해 ActiveResource를 사용하고 있으며 리소스가 오프라인 (서버가 다운되거나/ip가 차단되는 등) 할 때 발생하는 예외를 정상적으로 처리하고 싶습니다.ActiveResource 리소스의 가용성을 확인하는 방법은 무엇입니까?

Errno::ECONNREFUSED in UsersController 

내가 그것을가 발생할 때마다이 오류를 처리 할 수 ​​있습니다 있도록 내 응용 프로그램 컨트롤러에 'rescue_from'를 할 좋아하지만 무엇을 확실하지 않은 것 : 응답이 반환되는으로, 내 응용 프로그램이 오류가 발생합니다 params가 될 것입니다, 또는 이런 종류의 예외는이 시점에서 심지어 트랩 가능합니다.

리소스 가용성을 테스트 할 수 있습니까?

나는이 작업을 수행 할 수 있지만 모든 오류를 포착하고 내가 얻는 특정 연결 유형 오류를 발견하고 싶습니다.

답변

1

모든 것이 정상이라고 가정하고 발생했을 때 예외를 처리하는 것이 더 쉽습니다.

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이라고합니다 (로컬 오류가 있다면, 또는 아마도 사용자 컨트롤러) 당신은 당신의 애플리케이션 컨트롤러 rescue_from을 사용할 수 있습니다 클래스 -하지 상수 - 그래서 당신은 일반 Exception 대신 사용할 수 있습니다 :

irb(main):009:0> Errno::ECONNREFUSED 
=> Errno::ECONNREFUSED 
irb(main):010:0> Errno::ECONNREFUSED.class 
=> Class 
irb(main):011:0> Errno::ECONNREFUSED.superclass 
=> SystemCallError 

희망하는 데 도움이!

+0

클래스 였기 때문에 솔루션이 완벽하다는 것을 깨닫지 못했습니다. 그리고 플래시가 추가되고 렌더링이 정확하게 내가 가고있는 곳입니다. 감사. –

관련 문제