Error Reporter의 핵심은 예외를 중앙 집중식으로 포착하고, 포맷팅하며, 다른 처리 서비스로 전송하는 시스템입니다. 이는 애플리케이션 전반에 걸쳐 단순하고 일관된 구문을 제공합니다. 기존에는 begin rescue
블록과 같은 상용구 코드를 사용했지만, Error Reporter는 Rails.error.handle
과 Rails.error.record
메서드를 통해 더욱 우아한 예외 처리 옵션을 제공합니다. handle
은 에러를 삼키는(swallowing) 반면, record
는 에러를 다시 발생(raising)시켜 개발자가 상황에 맞게 선택할 수 있습니다. 또한, Rails.error.report
를 사용하면 기존의 begin rescue
블록 내에서도 에러를 수동으로 보고할 수 있습니다.
Error Reporter를 사용하기 위해서는 먼저 ‘구독자(subscriber)’ 객체를 설정해야 합니다. 이 구독자 객체는 에러가 발생했을 때 애플리케이션이 어떤 동작을 수행할지 정의하며, report
메서드를 반드시 포함해야 합니다. Rails.error.subscribe
를 사용하여 이 구독자 객체를 등록하면, 에러 발생 시 정의된 report
메서드가 호출됩니다. 예를 들어, report
메서드 내에서 에러 정보를 콘솔에 출력하거나, Sentry, Bug Snag, Honeybadger와 같은 서드파티 에러 모니터링 서비스로 전송할 수 있습니다. set_context
메서드를 사용하여 Rails 애플리케이션의 이름을 에러 데이터에 포함시키는 것은 여러 애플리케이션이 하나의 에러 보고 서비스를 사용하는 경우 유용합니다. 컨트롤러 컨텍스트 내에서도 Rails.error.report
를 사용하여 표준 에러나 ZeroDivisionError
와 같은 특정 에러를 효과적으로 포착하고 처리할 수 있음이 시연되었습니다. 또한, Error Reporter는 단순히 예외뿐만 아니라 신용카드 유효성 검사 실패와 같이 예외가 발생하지 않았지만 에러와 유사한 조건도 추적하고 보고하는 데 활용될 수 있습니다.