Airbrake не улавливает ошибки для Sidekiq в приложении Rails в среде, отличной от разработки

Я использую Sidekiq и Airbrake в своем приложении Rails. Я хотел бы, чтобы Airbrake перехватывал любые ошибки, возникающие во время заданий Sidekiq. Согласно инструкциям, которые я нашел в Интернете, я добавил в sidekiq.rb следующее:

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

Затем Airbrake смог отлавливать ошибки, когда они возникали в моей среде разработки. Однако после развертывания в более высокой среде Airbrake перестал обнаруживать ошибки Sidekiq. Есть ли причина, по которой это произойдет? Есть ли что-то еще, что мне нужно настроить внутри моего приложения?

Я использую версию драгоценного камня sidekiq ~> 3.0.2, версию драгоценного камня airbrake ~> 4.0.0 и рельсы 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

person Marina    schedule 16.07.2014    source источник
comment
Вероятно, вам следует показать нам ваш полный Airbrake (без частного токена) и инициализаторы Sidekiq.   -  person Mike Perham    schedule 17.07.2014


Ответы (1)


Оказывается, если ваше приложение также использует резину, вам также нужно изменить инициализатор резины sidekiq (config/rubber/common/initializers/sidekiq), включив в него строку:

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

Инициализатор Rubber sidekiq используется для всех сред, не связанных с разработкой, тогда как файл sidekiq.rb используется для среды разработки.

person Marina    schedule 17.07.2014