class Sequel::ConnectionGuard::ConnectionGuard

@api private @since 0.1.0

Public Class Methods

new(config, &initializer) click to toggle source

@param config [String, Hash] database configuration @param initializer [Proc] code to run upon successful connection

@api private @since 0.1.0

# File lib/sequel/extensions/connection_guard/connection_guard.rb, line 13
def initialize(config, &initializer)
  @config = config
  @initializer = initializer
  @connection = nil

  try_establish_connection
end

Public Instance Methods

force_execute() { |connection| ... } click to toggle source

@raise [Sequel::DatabaseConnectionError] connection failure

@api private @since 0.1.0

# File lib/sequel/extensions/connection_guard/connection_guard.rb, line 25
def force_execute(&_block)
  try_establish_connection if @connection.nil?
  raise Sequel::DatabaseConnectionError unless connection_established?

  yield @connection
end
raw_handle() click to toggle source

@raise [Sequel::DatabaseConnectionError] if connection is not established

@api private @since 0.1.0

# File lib/sequel/extensions/connection_guard/connection_guard.rb, line 36
def raw_handle
  try_establish_connection if @connection.nil?

  return @connection if connection_established?
  raise Sequel::DatabaseConnectionError
end

Private Instance Methods

connection_established?() click to toggle source

@return [bool]

@api private @since 0.1.0

# File lib/sequel/extensions/connection_guard/connection_guard.rb, line 59
def connection_established?
  return false if @connection.nil?
  @connection.test_connection
rescue Sequel::Error
  false
end
try_establish_connection() click to toggle source

@return [void]

@api private @since 0.1.0

# File lib/sequel/extensions/connection_guard/connection_guard.rb, line 49
def try_establish_connection
  @connection = Sequel.connect(@config)
  @initializer&.call(@connection)
rescue Sequel::DatabaseConnectionError
end