어떻게 rails로 404, 500 등의 오류를 포착합니까?

6515 단어 RubyRails

참조:http://ruby-rails.hatenadiary.com/entry/20141111/1415707101

  • 적절한 오류 처리 방법이 적혀 있음
  • 500 오류는 View에서도 샘플로 적혀 있음
  • 아래 코드 일부분 발췌
  • app/controllers/application_controller.rb
    
    class ApplicationController < ActionController::Base
      # Prevent CSRF attacks by raising an exception.
      # For APIs, you may want to use :null_session instead.
      protect_from_forgery with: :exception
    
      # 他のエラーハンドリングでキャッチできなかった場合に
      # 500 Internal Server Error(システムエラー)を発生させる
      # NOTE: rescue_from は下から評価されるので記載箇所はここが正解
      rescue_from Exception, with: :handle_500 unless Rails.env.development?
    
      # 例外に合わせたエラーハンドリング
      # 404 Not Found リソースが見つからない。アクセス権がない場合にも使用される
      rescue_from ActionController::RoutingError, with: :handle_404 unless Rails.env.development?
      rescue_from ActiveRecord::RecordNotFound,   with: :handle_404 unless Rails.env.development?
      #rescue_from ActiveRecord::RecordNotUnique, with: :render_409
      #rescue_from UnauthorizedError,             with: :render_401
      #rescue_from IllegalAccessError,            with: :render_403
    
      # エラーハンドリング処理
      def handle_500(exception = nil)
        logger.info "Rendering 500 with exception: #{exception.message}" if exception
    
        if request.xhr?
          # Ajaxのための処理
          render json: { error: '500 error' }, status: 500
        else
          render template: 'errors/error_500', status: 500, layout: 'application', content_type: 'text/html'
        end
      end
    
      def handle_404(exception = nil)
        logger.info "Rendering 404 with exception: #{exception.message}" if exception
    
        if request.xhr?
          # Ajaxのための処理
          render json: { error: '404 error' }, status: 404
        else
          render template: 'errors/error_404', status: 404, layout: 'application', content_type: 'text/html'
        end
      end
    
    end
    

    기타 참조

  • 내 생각대로from이 예외를 잡지 못할 것 같으면 rescue.from의 스캔은 아래에서 위로 합니다.

  • Rails로 API 제작 시 오류 처리 - Qiita←매우 참고 가치 ★
  • "오류 처리는 어디에 쓰입니까?"에 대해 논의합니다.Rails 공유 오류 처리 | 주식회사 란체스터
  • 오류 알림용 웹 서비스(Rails)


    Airbrake
  • 오류 알림에 사용되는 웹 서비스 에어브레이크의 루비 플러그인 에어브레이크
  • 에어브레이크의 장점
  • exception_notification과 달리 같은 종류의 오류가 발생하면 여러 번 발생하더라도 알림은 한 번만 발송
  • 웹에서 오류 내용 요약
  • 가격과 일치하는지 모르겠습니다.
  • http://blog.willnet.in/entry/2012/10/21/160240

    좋은 웹페이지 즐겨찾기