рельсы 404 422 500 полностью пустые - PullRequest
3 голосов
/ 02 марта 2010

Это, вероятно, очень просто, но я не могу понять, почему я не получаю страницы ошибок.

Прежде всего, я использую Heroku для хостинга, поэтому он определенно находится в производственном режиме.

Если я установил для строки "config.action_controller.consider_all_requests_local" значение true, я получу подробное сообщение об ошибке, но в противном случае я получу полностью 100% пустой экран. Если я просматриваю источник, также пусто.

Все мои 404 422 500.html-файлов общедоступны, и я их не трогал.

И они, похоже, работают на моей локальной машине, если я запускаю там в производственном режиме. Так это должно быть связано с Heroku? Есть идеи?

Логи ничего мне не говорят полезного.

Ниже приведена информация о файле production.rb

config.cache_classes = true

#ActionMailer::Base.delivery_method = :sendmail
Paperclip.options[:command_path] = "/usr/bin/"

# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false

# set delivery method to :smtp, :sendmail or :test
config.action_mailer.delivery_method = :smtp

# Full error reports are disabled and caching is turned on
config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching             = true
config.action_view.cache_template_loading            = true

1 Ответ

3 голосов
/ 02 марта 2010

Я не думаю, что Heroku использует файлы .html, как это делают Passenger или Mongrel. Возможно, вам придется отлавливать и обрабатывать ваши собственные исключения с помощью двух основных механизмов:

  • Создайте обработчик исключений с помощью rescue_from в вашем ApplicationController для всего, что может взорваться, как конкретно, так и вплоть до объекта.
  • Создайте маршрут по умолчанию для перехвата всего, что не направлено иначе.

Если вы вышли из таблицы маршрутизации или вызвали ошибку «500», это из-за исключений. Это необходимо обработать, иначе вы получите пустой экран, если веб-сервер не настроен иначе.

Apache можно настроить для этого с помощью директивы ErrorDocument.

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