#ruby-on-rails #error-handling #transactions
#ruby-on-rails #обработка ошибок #транзакции
Вопрос:
В моем приложении rails происходят некоторые странные ошибки, и я пытаюсь регистрировать ошибки получше, а не весь этот набор пассажирских материалов, которые меня не волнуют. Я думал, что сделаю это с предложением Rescue и явной обработкой ошибок, например, протоколированием хэша параметров. Но я обеспокоен тем, что это может прервать любой происходящий откат. Если уж на то пошло, я предполагаю, что откаты автоматически происходят при возникновении ошибки как часть обычной обработки ошибок rails, но я нигде не смог найти, чтобы это было задокументировано. Я использую Dreamhost с MySQL, поэтому я думал, что транзакции и откаты происходят там.
Ответ №1:
Это не очень желательно (добавлять в ваш код большое begin-rescue).
Почему вы не используете глушители обратной трассировки? (из Rails 2.3) http://afreshcup.com/home/2008/11/29/rails-23-backtrace-silencing.html.
Rails автоматически добавляет глушители, чтобы избавиться от наиболее распространенных шумов в новом приложении, и создает файл config /backtrace_silencers.rb для хранения ваших собственных дополнений
Если вы используете более раннюю версию Rails, используйте http://github.com/thoughtbot/quietbacktrace.
Комментарии:
1. спасибо, это полезно для шумной трассировки стека, но не отвечает на первоначальный вопрос относительно отката; если уж на то пошло, почему не рекомендуется добавлять большое значение begin-rescue в мой код?
2. Что ж.. желательно, если вы повторно вызываете ошибку. Rails обрабатывает некоторые особые случаи (НАПРИМЕР, ActiveRecord::RecordNotFound сохраняется для общедоступных запросов, а вместо этого возвращается заголовок 404).