Sha256: 626e51b53041abee83b1d2eb9bb974dc352266fb957b0b9913a4de1ac9bf723e

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

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

        unless is_active
          ActiveRecordMysqlXverify.logger.info(
            "Invalid connection: #{ActiveRecordMysqlXverify::Utils.mysql2_connection_info(@raw_connection || @connection)}"
          )
        end

        is_active
      else
        super
      end
    end

    def _build_verify_error_message(e)
      "cause: #{e.message} [#{e.class}, " + ActiveRecordMysqlXverify::Utils.mysql2_connection_info(@raw_connection || @connection)
    end

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_record_mysql_xverify-0.4.0 lib/active_record_mysql_xverify/verifier.rb