ruby - 如何在 Sinatra 中为 JSON 定义全局错误处理程序

标签 ruby sinatra

我想定义一个错误 block (或其他东西),它将以某种方式返回以 JSON 格式化的所有异常加上返回标准的 http 代码(例如 404 表示未找到, 303 用于身份验证错误等)。

类似于:

error do
  e = env['sinatra.error']
  json :result => 'error', :message => e.message
end

谢谢!

最佳答案

这应该有效:

require 'sinatra'
require 'json'

# This is needed for testing, otherwise the default
# error handler kicks in
set :environment, :production

error do
  content_type :json
  status 400 # or whatever

  e = env['sinatra.error']
  {:result => 'error', :message => e.message}.to_json
end

get '/' do
  raise 'hell'
end

用 curl 测试它是否有效。

关于ruby - 如何在 Sinatra 中为 JSON 定义全局错误处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8772641/

相关文章:

ruby - Sinatra 中的缓存变量

ruby - 让用户知道您的 Github 分支不再维护(即已合并)的最佳方式?

ruby - 我如何在 Ruby/Rails 之外的 Haml 中嵌入 CoffeeScript?

ruby-on-rails - 为什么 association.build 不会将 parent_id 分配给它的 child ?

ruby-on-rails - 在设计注册中保留查询字符串

ruby - Sinatra set cache_control to static files in public folder编译错误

ruby - 我如何使用 Rack/Test 来测试 Sinatra 重定向?该应用程序有效,但测试没有

iphone - MacRuby 的优点/限制是什么?有人用它为 iPhone 编程吗?

Ruby 服务器不会以 neography 开头

Ruby Sinatra 验证向 View 返回错误