Как Hoptoad помогает на тестовом сервере 26 марта 10

Итак, Hoptoad – это такая продвинутая штука для записывания исключений в Rails-приложениях. Его использование выливается в то, что каждое новое исключение логируется, а также при желании отправляется тебе на почту. Удобно.

Но речь не об этом, а о том, что Hoptoad можно использовать на отладочном сервере (назовем его staging) для упрощения работы тестера. Для этого нужно настроить его так, чтобы он ошибку и показывал, и отправлял в Hoptoad.

По умолчанию Hoptoad логирует ошибки только тогда, когда не показывает (consider_all_requests_local = false). Самый простой способ это изменить – переопределить метод в ApplicationController:

#consider_all_requests_local должен быть true
class ApplicationController < ActionController::Base
  def rescue_action_locally(exception)
    if Rails.env == "staging" # or something else
      unless hoptoad_ignore_user_agent?
        HoptoadNotifier.notify_or_ignore(exception, hoptoad_request_data)
      end
      rescue_action_locally_with_hoptoad(exception)
    end
    super(exception)
  end
end

Результатом этого будет то, что ошибки с staging будут сыпаться в hoptoad и можно будет вместо неудобных скриншотов передавать ссылки на hoptoad (где также видно, сколько раз встречалась ошибка, когда последний раз и т.п.)

Чего не хватает? Ссылки на Hoptoad прямо со страницы ошибки, конечно!

UPD: Чтоб появились ссылки, нужно стянуть с гитхаба патченный файл vendor/plugins/hoptoad_notifier/lib/templates/rescue.erb и подложить в проект.

Теперь каждое сообщение об ошибке на staging будет сопровождаться вот такой вот красной ссылкой прямо на ошибку:

 title=

Комментарии

  • testboi.myopenid.com 26 марта 2010

    Уиии!

  • FX Poster 26 марта 2010

    Гм. Ты наивен. :)

    еще нужно закоvментировать эти строки:

        if (this.initialized) {
          return;
        } else {
          this.initialized = true;
        }

    Добавить после строки

    var data = [];

    строку

    this.notice.environment_name = environment;

    И добавить параметр функции initialize:

    initialize: function(environment) {

    ;)

    • Леонид Шевцов 27 марта 2010

      Надо было дифф прогнать, да? :) Спасибо, чуть порефакторил и вылил на гитхаб.

  • FX Poster 27 марта 2010

    Раз уж на то пошло, вот тебе подсказка. :)

    Форкни Hoptoad Notifier и поменяй файл там, по крайней мере можно будет этим делом управлять.

  • FX Poster 27 марта 2010

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

  • [...] This post was mentioned on Twitter by Leonid Shevtsov. Leonid Shevtsov said: Вы все еще обмениваетесь скриншотами ошибок? Тогда мы идем к вам! http://l-s.me/s/w86 [...]

Оставить комментарий

  • (или OpenID)
  •