我正在使用 rails-api 构建一个没有网络界面的 API。当我在开发中遇到错误时,我希望只看到纯文本的错误消息和堆栈跟踪,而无需所有 HTML 包装。我如何覆盖全局异常处理,以便它在开发模式下以纯文本/JSON 呈现堆栈跟踪,并在生产环境中呈现一般错误消息?
最佳答案
从安全的角度来看,我建议在生产代码中包含堆栈跟踪可能不是一个好主意。
下面是我的做法:
render :json => {message:exception.message, stack_trace: exception.stacktrace}
希望对您有所帮助。
在 Sam 的澄清之后我可以添加:
在您的 API 的基础 Controller 中(可能是 ApplicationController):
class ApplicationController < ActionController::Base
...
rescue_from Exception do |exception|
error = {message:exception.message}
error[:stack_trace] = exception.stacktrace if Rails.env.development?
render :json => error
end
...
end
警告:您可能不想以这种方式从每一个异常中解救出来,但如果您这样做的话,您会这样做。
关于ruby-on-rails - 如何获取异常以呈现 Rails 开发错误页面的纯文本版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18369714/