Airbrake.configure do |config|
  config.host = Rails.application.secrets.errbit_host
  config.project_id = Rails.application.secrets.errbit_project_id
  config.project_key = Rails.application.secrets.errbit_project_key

  config.environment = Rails.env
  config.ignore_environments = %w[development test]

  if config.host.blank? || config.project_id.blank? || config.project_key.blank?
    config.ignore_environments += [Rails.env]
  end

  config.performance_stats = false
end

Airbrake.add_filter do |notice|
  ignorables = %w[ActiveRecord::RecordNotFound]
  notice.ignore! if ignorables.include? notice[:errors].first[:type]
end

if Rails.application.secrets.errbit_self_hosted_ssl.present?
  # Patch from: https://mensfeld.pl/2016/05/setting-up-errbit-reporter-airbrake-v5-gem-to-work-with-self-signed-https-certificate/
  module Patches
    module Airbrake
      module SyncSender
        def build_https(uri)
          super.tap do |req|
            req.verify_mode = OpenSSL::SSL::VERIFY_NONE
          end
        end
      end
    end
  end

  Airbrake::SyncSender.prepend(::Patches::Airbrake::SyncSender)
end

require "airbrake/delayed_job" if defined?(Delayed)

Airbrake.configure do |config|
  config.host = Rails.application.secrets.errbit_host
  config.project_id = Rails.application.secrets.errbit_project_id
  config.project_key = Rails.application.secrets.errbit_project_key

  config.environment = Rails.env
  config.ignore_environments = %w[development test]

  if config.host.blank? || config.project_id.blank? || config.project_key.blank?
    config.ignore_environments += [Rails.env]
  end

  config.performance_stats = false
end

Airbrake.add_filter do |notice|
  ignorables = %w[ActiveRecord::RecordNotFound]
  notice.ignore! if ignorables.include? notice[:errors].first[:type]
end

if Rails.application.secrets.errbit_self_hosted_ssl.present?
  # Patch from: https://mensfeld.pl/2016/05/setting-up-errbit-reporter-airbrake-v5-gem-to-work-with-self-signed-https-certificate/
  module Patches
    module Airbrake
      module SyncSender
        def build_https(uri)
          super.tap do |req|
            req.verify_mode = OpenSSL::SSL::VERIFY_NONE
          end
        end
      end
    end
  end

  Airbrake::SyncSender.prepend(::Patches::Airbrake::SyncSender)
end

Include DelayedJob errors in Errbit exceptions
Include DelayedJob errors in Errbit exceptions

The integration between Airbrake/Errbit and DelayedJob wasn't working
because we require our dependencies in alphabetic order, and so by the
time `airbrake` was required, `delayed_job` wasn't loaded.

So we're manually requiring the integration.
