class GitLab::Monitor::Database::Base

An abstract class for interacting with DB

It takes a connection string (e.g. “dbname=test port=5432”)

Public Class Methods

connection_pool() click to toggle source
# File lib/gitlab_monitor/database/base.rb, line 11
def self.connection_pool
  @connection_pool ||= Hash.new do |h, connection_string|
    h[connection_string] = ConnectionPool.new(size: 3, timeout: 5) do
      PG.connect(connection_string)
    end
  end
end
new(args) click to toggle source
# File lib/gitlab_monitor/database/base.rb, line 19
def initialize(args)
  @connection_string = args[:connection_string]
end

Public Instance Methods

connection_pool() click to toggle source
# File lib/gitlab_monitor/database/base.rb, line 27
def connection_pool
  self.class.connection_pool[@connection_string]
end
run() click to toggle source
# File lib/gitlab_monitor/database/base.rb, line 23
def run
  fail NotImplemented
end
with_connection_pool() { |conn| ... } click to toggle source
# File lib/gitlab_monitor/database/base.rb, line 31
def with_connection_pool
  connection_pool.with do |conn|
    begin
      yield conn
    rescue PG::UnableToSend => e
      conn.reset
      raise e
    end
  end
end