Sha256: 79e70e210c85492dcbd7e70d2e55aa9c9a91e6559a8c7e9616bd943b124864d6

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

module ActiveRecordPostgresqlXverify
  module Verifier
    def active?
      if _extend_verify?
        is_active = begin
          verifier = ActiveRecordPostgresqlXverify.verify
          verifier.call(@connection)
        rescue StandardError => e
          ActiveRecordPostgresqlXverify.logger.warn("Connection verification failed: #{_build_verify_error_message(e)}")
          false
        ensure
          Thread.current[ActiveRecordPostgresqlXverify::EXTEND_VERIFY_FLAG] = false
        end

        unless is_active
          ActiveRecordPostgresqlXverify.logger.info(
            "Invalid connection: #{ActiveRecordPostgresqlXverify::Utils.pg_connection_info(@connection)}"
          )
        end

        is_active
      else
        super
      end
    end

    def _build_verify_error_message(e)
      "cause: #{e.message} [#{e.class}, " + ActiveRecordPostgresqlXverify::Utils.pg_connection_info(@connection)
    end

    def _extend_verify?
      handle_if = ActiveRecordPostgresqlXverify.handle_if
      (Thread.current[ActiveRecordPostgresqlXverify::EXTEND_VERIFY_FLAG] || !ActiveRecordPostgresqlXverify.only_on_error) && handle_if.call(@config)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_record_postgresql_xverify-0.2.0 lib/active_record_postgresql_xverify/verifier.rb