Как настроить Bugsnag с Resque::Failure?

Я хочу использовать Bugsnag для сообщения о неудачных заданиях Resque. Как мне это настроить? В документации конкретно упоминается интеграция с Resque, но не дается никаких указаний относительно того, как.

Должен ли я написать Resque::Failure::Bugsnag учебный класс? Кто-то другой уже написал это, чтобы мне не пришлось?

3 ответа

Решение

Рубиновый камень Bugsnag настроен для автоматической интеграции с такими вещами, как Resque. Теоретически, все, что вам нужно сделать, это добавить bugsnag и перезапустить ваш Gemfile:

gem "resque"
gem "bugsnag"

и https://github.com/bugsnag/bugsnag-ruby/blob/master/lib/bugsnag/resque.rb выполнит работу по интеграции за вас.

Отказ от ответственности: я работаю на Bugsnag и обязуюсь Bugsnag Rubygem.

Добавляя к превосходному ответу Конрада выше, я сделал следующую ошибку, которая препятствовала появлению заданий Resque в Bugsnag:

Не забудьте добавить в Resque::Failure::Multiple.classes в вашем инициализаторе Resque. Я переписывал массив в инициализаторе Resque, который, вероятно, (произвольно) вызывался после запуска инициализатора Bugsnag.

то есть в config/initializers/resque.rb:

Делать:

Resque::Failure::Multiple.classes ||= []
Resque::Failure::Multiple.classes << Resque::Failure::Redis
Resque::Failure.backend = Resque::Failure::Multiple

Не делайте:

Resque::Failure::Multiple.classes = [Resque::Failure::Redis]
Resque::Failure.backend = Resque::Failure::Multiple

В дополнение к приведенным выше ответам, если вы используете другой серверный класс сбоя (мы используем MultipleWithRetrySuppressionпо https://github.com/lantins/resque-retry#failure-backend), вам нужно вручную добавить Bugsnag::Resqueв массив. Например:

      (Resque::Failure::MultipleWithRetrySuppression.classes ||= []).push(
  Resque::Failure::Redis,
  Bugsnag::Resque
)
Resque::Failure.backend = Resque::Failure::MultipleWithRetrySuppression
Другие вопросы по тегам