Обратная трассировка журнала, rescue_from и пользовательские страницы ошибок

Я пытаюсь создать пользовательские страницы ошибок в проекте rails 3.0.20 и ruby ​​1.8.7.

Во всяком случае в моем контроллере приложения:

unless Rails.application.config.consider_all_requests_local
  rescue_from Exception, :with => :render_error
  rescue_from ActionController::RoutingError, ActionController::UnknownController,      ::AbstractController::ActionNotFound, ActiveRecord::RecordNotFound, :with =>    :render_error_not_found
end

Тогда метод ошибки рендеринга:

def render_error(exception)
  notify_airbrake(exception)
  Rails.logger.fatal exception
  Rails.logger.fatal exception.backtrace.join("\n")
  respond_to do |format|
    format.html { render :template => "errors/error_500", :layout => 'layouts/application'}
    format.all { render :nothing => true, :status => 500 }
  end
end

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

Спасибо

1 ответ

Решение

Проверьте http://api.rubyonrails.org/classes/ActiveSupport/BacktraceCleaner.html. Rails использует это для очистки вашего backrace перед отображением.

Вы можете использовать это так:

Rails.backtrace_cleaner.clean(exception.backtrace)

На самом деле я смотрю в исходном коде rails, потому что я думал, что ваше исключение может быть уже очищено к тому времени, когда оно попадает в ваш метод render_error

Другие вопросы по тегам