【问题标题】:Airbrake not catching errors for Sidekiq in Rails app on an environment other than development在开发以外的环境中,Airbrake 没有在 Rails 应用程序中捕获 Sidekiq 的错误
【发布时间】:2014-07-16 20:24:48
【问题描述】:

我在我的 Rails 应用程序中使用 Sidekiq 和 Airbrake。我希望 Airbrake 能够捕获 Sidekiq 作业期间发生的任何错误。根据我在网上找到的说明,我在 sidekiq.rb 中添加了以下内容:

config.error_handlers << Proc.new { |ex,context| Airbrake.notify_or_ignore(ex, parameters: context) }

Airbrake 能够在我的开发环境中发生错误时捕获它们。但是,一旦我部署到更高的环境,Airbrake 就无法捕获 Sidekiq 错误。有什么理由会发生这种情况吗?我还需要在我的应用中配置什么吗?

我正在使用 sidekiq gem 版本 ~>3.0.2、airbrake gem 版本 ~>4.0.0 和 rails 3.2.18

这是我完整的 sidekiq.rb:

require 'sidekiq'
require 'sidekiq-status'

redis_connection = "redis://127.0.0.1:6379/0"

Sidekiq.configure_server do |config|
  config.redis = { :url => redis_connection, :namespace => 'sidekiq' }
  config.server_middleware do |chain|
    chain.add Sidekiq::Status::ServerMiddleware, expiration: 30.minutes
  end
  config.client_middleware do |chain|
    chain.add Sidekiq::Status::ClientMiddleware
  end
  config.error_handlers << Proc.new { |ex,context| Airbrake.notify_or_ignore(ex, parameters: context) }
end

Sidekiq.configure_client do |config|
  config.redis = { :url => redis_connection, :namespace => 'sidekiq' }

  config.client_middleware do |chain|
    chain.add Sidekiq::Status::ClientMiddleware
  end
end

这是我完整的 airbrake.rb:

Airbrake.configure do |config|
  config.user_attributes = [:id, :email]
  config.api_key = '*my_api_key*'
end

【问题讨论】:

  • 您可能应该向我们展示您的完整 Airbrake(减去私有令牌)和 Sidekiq 初始化程序。

标签: ruby-on-rails-3 sidekiq rubber airbrake


【解决方案1】:

事实证明,如果您的应用也使用橡胶,那么您还必须更改您的橡胶 sidekiq 初始化程序 (config/rubber/common/initializers/sidekiq) 以包含以下行:

config.error_handlers << Proc.new { |ex,context| Airbrake.notify_or_ignore(ex, parameters: context) }

橡胶sidekiq初始化器用于所有非开发环境,而sidekiq.rb文件用于开发环境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 2012-09-29
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    相关资源
    最近更新 更多