Get current stack trace in Ruby without raising an exception

后端 未结 3 2078
既然无缘
既然无缘 2020-12-07 13:23

I want to log the current backtrace (stacktrace) in a Rails 3 app without an exception occurring. Any idea how?

Why do I want this? I\'m trying to trace the

3条回答
  •  清歌不尽
    2020-12-07 14:08

    I use this to show a custom error page when exception are raised.

    rescue_from Exception do |exception|
      logger.error exception.class
      logger.error exception.message
      logger.error exception.backtrace.join "\n"
      @exception = exception
    
    
      # ExceptionNotifier::Notifier.exception_notification env, @exception
    
      respond_to do |format|
        if [AbstractController::ActionNotFound, ActiveRecord::RecordNotFound, ActionController::RoutingError, ActionController::UnknownAction].include?(exception.class)
          format.html { render :template => "errors/404", :status => 404 }
          format.js   { render :nothing => true, :status => 404 }
          format.xml  { render :nothing => true, :status => 404 }
        elsif exception.class == CanCan::AccessDenied
          format.html {
            render :template => "errors/401", :status => 401 #, :layout => 'application'
          }
          # format.js   { render :json => { :errors => [exception.message] }, :status => 401 }
          # format.js   { render :js => 'alert("Hello 401")' }
          format.js   { render :template => 'errors/401.js.erb' }
    
        else
          ExceptionNotifier::Notifier.exception_notification(env, exception).deliver        
          format.html { render :template => "errors/500", :status => 500 } #, :layout => 'im2/application' }
          # format.js   { render :nothing => true, :status => 500 }
          format.js   { render :template => 'errors/500.js.erb' }
    
        end
      end
    end
    

提交回复
热议问题