Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails路由器中获取异常内容_Ruby On Rails_Ruby_Exception_Exception Handling_Airbrake - Fatal编程技术网

Ruby on rails 在Rails路由器中获取异常内容

Ruby on rails 在Rails路由器中获取异常内容,ruby-on-rails,ruby,exception,exception-handling,airbrake,Ruby On Rails,Ruby,Exception,Exception Handling,Airbrake,因此,我使用错误控制器处理异常,以便在生产中向用户显示动态内容。我的路线文件中有以下操作: # Errors %w( 404 422 500 ).each do |code| get code, :to => "errors#show", :code => code end 唯一的问题是,现在我正在路由错误,例如,当我想通知Airbrake时,控制器中的信息丢失。如何维护异常信息并将其发送到500上的Airbrake?现在我得到的只是在异常发生时发生的env,这

因此,我使用错误控制器处理异常,以便在生产中向用户显示动态内容。我的路线文件中有以下操作:

  # Errors
  %w( 404 422 500 ).each do |code|
    get code, :to => "errors#show", :code => code
  end
唯一的问题是,现在我正在路由错误,例如,当我想通知Airbrake时,控制器中的信息丢失。如何维护异常信息并将其发送到500上的Airbrake?现在我得到的只是在异常发生时发生的env,这对调试目的没有多大帮助

class ErrorsController < ApplicationController

  def show
    notify_airbrake(env) 
    render status_code.to_s, :status => status_code
  end

  protected

  def status_code
    params[:code] || 500
  end

end
类错误控制器状态代码
结束
受保护的
def状态代码
参数[:代码]| | 500
结束
结束

您是否通过重定向到类似
的URL来处理错误http://your.site/500
?这将只是一个HTTP请求,就像其他任何请求一样,会丢失您要查找的异常上下文。相反,您可能希望使用
ActionController
的功能。它看起来是这样的:

class ApplicationController < ActionController::Base
  rescue_from StandardError, with: :render_error

  private

  def render_error(error)
    notify_airbrake(error)
    render text: 500, status: 500
  end
end
class ApplicationController
您可以从声明中添加多个
rescue\u来处理不同类型的错误,如Rails指南示例中的
ActiveRecord::RecordNotFound