Как определить глобальный обработчик ошибок для JSON в Синатре - PullRequest
3 голосов
/ 08 января 2012

Я хотел бы определить блок ошибок (или что-то еще), который будет возвращать все исключения, отформатированные как-то в JSON плюс , возвращая стандартный http-код (например, 404 для не найденных, 303 для ошибок аутентификации и т. д.).

Что-то вроде:

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

Спасибо!

1 Ответ

11 голосов
/ 08 января 2012

Это должно работать:

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, чтобы убедиться, что он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...