如何使用 Resque::Failure 配置 Bugsnag?

How to configure Bugsnag with Resque::Failure?

我想使用 Bugsnag 报告失败的 Resque 作业。 如何配置它? documentation 特别提到了与 Resque 的集成,但没有提供如何配置的指导。

我必须写一个 Resque::Failure::Bugsnag class 吗?是不是其他人已经写好了,所以我就不用写了?

Bugsnag ruby gem 设置为自动与 Resque 等软件集成。从理论上讲,您需要做的就是将 bugsnag 和 resque 添加到您的 Gemfile:

gem "resque"
gem "bugsnag"

https://github.com/bugsnag/bugsnag-ruby/blob/master/lib/bugsnag/resque.rb将为您完成整合工作。

免责声明:我为 Bugsnag 工作,并致力于 Bugsnag rubygem。

除了 Conrad 上面的出色回答之外,我还犯了以下错误,导致 Resque 作业无法出现在 Bugsnag 中:

确保在你的 Resque 初始值设定项中 附加 Resque::Failure::Multiple.classes。我在 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

除了上述答案之外,如果您使用不同的故障后端 class(我们使用 https://github.com/lantins/resque-retry#failure-backendMultipleWithRetrySuppression),您需要手动添加 Bugsnag::Resque 到数组。例如:

(Resque::Failure::MultipleWithRetrySuppression.classes ||= []).push(
  Resque::Failure::Redis,
  Bugsnag::Resque
)
Resque::Failure.backend = Resque::Failure::MultipleWithRetrySuppression