Как показать ошибки, возникающие в модульном приложении Sinatra, которое размещается в Passenger? - PullRequest
4 голосов
/ 27 января 2010

У меня есть приложение класса

class MyApplication < Sinatra::Base
  # ... do something ...
end

и файл config.ru

# ... load libraries ...
run MyApplication

Я обычно использую Passenger в качестве среды разработки, которая прекрасно работает для обычного, немодулярного приложения Sinatra. Но в этом случае у меня нет вывода ошибок, вместо этого я получаю страницу ошибки внутреннего сервера по умолчанию, которая не очень полезна. Есть ли способ включить обработку ошибок по умолчанию?

Ответы [ 3 ]

4 голосов
/ 24 февраля 2010

Эта проблема уже давно меня беспокоила, и я, наконец, понял магическое заклинание, чтобы вернуть обработку ошибок по умолчанию. Оказывается, это не имеет ничего общего с Passenger, но вместо этого вызвано использованием Sinatra :: Base вместо классического (верхнего уровня) приложения. Если вы подкласс Sinatra :: Base, многие параметры имеют разные значения по умолчанию. В этом случае вам нужно изменить параметр:

set :show_exceptions, true if development?

Если вы также хотите снова включить (связанную) возможность использовать обработчик ошибок в приложении, используйте:

set :raise_errors, false

Что позволяет блоку error do ... end работать так же, как и в классическом приложении.

Дополнительную информацию о различиях между классическими и Sinatra :: Base приложениями можно найти в этом билете на маяк , и есть некоторое обсуждение этого конкретного различия в группе Google .

1 голос
/ 29 августа 2014

Вы можете использовать Rack :: ShowExceptions для отображения трассировки стека

configure do
  enable :dump_errors,:raise_errors
  use Rack::ShowExceptions
end

и используйте обработчик ошибок Sinatra для отображения

$exception = Sinatra::ShowExceptions.new(self)
error do 
  @error = env['sinatra_error']
  html_body = $exception.pretty(env,@error)
end
0 голосов
/ 02 февраля 2010

Посмотрите в журнале ошибок вашего веб-сервера.

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