【发布时间】:2018-07-06 18:21:15
【问题描述】:
我正在开发 Rails 5 JSON API,我注意到它提供了开箱即用的合理异常处理。
例如,ActiveRecord::RecordNotFound 产生 404,ActionController::ParameterMissing 产生 400,这些都作为格式正确的 JSON 响应返回。
我在 rescue_from 上找到了大量文档,找不到为我提供这种异常处理的内容。
我在 Rails 指南、文档以及 Rails 控制台中进行了研究,例如
ActionController::API.new.rescue_handlers
=> []
ApplicationController.new.rescue_handlers
=> []
我想知道异常处理的来源,因为我注意到它被优雅地应用于实际请求,但不在控制器规范中。
例如,如果我运行本地服务器并向其发送带有curl 的格式错误的请求,我会得到一个合理的错误响应。但如果我尝试在控制器规范中重现它,
it "returns 404 if Yogurt doesn't exist" do
put :update, params: { id: 293459 }
end
测试抛出原始异常(在本例中为ActiveRecord::RecordNotFound)。
【问题讨论】:
标签: ruby-on-rails