module Cranium::Database

Public Class Methods

[](name) click to toggle source
# File lib/cranium/database.rb, line 14
def self.[](name)
  @connections ||= {}
  @connections[name] ||= setup_connection(@definitions[name].connect_to,
                                          @definitions[name].retry_count,
                                          @definitions[name].retry_delay)
end
connection() click to toggle source
# File lib/cranium/database.rb, line 8
def self.connection
  @connection ||= setup_connection(Cranium.configuration.greenplum_connection_string)
end
register_database(name, &block) click to toggle source
# File lib/cranium/database.rb, line 23
def self.register_database(name, &block)
  @definitions ||= Cranium::DefinitionRegistry.new Cranium::DSL::DatabaseDefinition
  @definitions.register_definition name, &block
end

Private Class Methods

setup_connection(connection_details, retry_count = 0, retry_delay = 0) click to toggle source
# File lib/cranium/database.rb, line 33
def self.setup_connection(connection_details, retry_count = 0, retry_delay = 0)
  (retry_count + 1).times do |try_count|
    connection = if Cranium.configuration.log_queries
                   Sequel.connect(connection_details, loggers: Cranium.configuration.loggers)
                 else
                   Sequel.connect(connection_details)
                 end
    connection.extension :connection_validator
    connection.pool.connection_validation_timeout = -1
    break connection
  rescue Sequel::DatabaseConnectionError
    (try_count == retry_count) ? raise : sleep(retry_delay)
  end
end