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]
  config.ignore_environments += [Rails.env] if Rails.application.secrets.errbit_project_id.blank?
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

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
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

Fix Airbrake crash with no project key
Fix Airbrake crash with no project key

We were checking tho project_id but not the project_key. However, in our
example secrets file we actually include a project_id but not a
project_key, and so new CONSUL installations would crash in production
environments.

Although technically the application doesn't crash if no host is
defined, we're also ignoring the current environment if no host is
defined, since errbit/airbrake is unlikely to work in this scenario.
