ruby-on-rails - 如何获取异常以呈现 Rails 开发错误页面的纯文本版本?

标签 ruby-on-rails ruby rails-api

我正在使用 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/

相关文章:

ruby-on-rails - Ruby - 我们可以在类中的任何地方使用 include 语句吗?

ruby-on-rails - 使用 OAuth 密码凭证授予优于 token 访问身份验证的优势

ruby-on-rails - JWT Auth with Rails Sidekiq 管理面板

ruby-on-rails - 服务器正在通过 API 端点接收数据,但在创建记录时忽略它 (Rails)

ruby-on-rails - 如何使用 devise、rspec、capybara 和 mailspec 测试 devise 邮件传送

运行 Logstash 插件时出现 java.lang.NoSuchMethodError

ruby-on-rails - 为什么我没有收到方法错误?

ruby-on-rails - 在 Rails 中使用多个条件进行计数

ruby-on-rails - 移至生产服务器的 Rails 应用出现 "dump format error for symbol"错误

ruby-on-rails - 用于简单 Rails 应用程序的 APIPIE