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

时间:2012-01-07 20:02:58

标签: ruby sinatra

我想定义一个错误块(或其他东西),它会返回所有异常格式化的JSON格式 plus 返回标准的http代码(例如404找不到,303表示身份验证错误等。)

类似的东西:

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

谢谢!

1 个答案:

答案 0 :(得分:11)

这应该有效:

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测试它,看它是否有效。