Sha256: 50f6c992915bca0c976814955f36b0fa946bdd34f06b17fab1a53094a439f52a
Contents?: true
Size: 1.36 KB
Versions: 3
Compression:
Stored size: 1.36 KB
Contents
require 'sequel' require 'sequel/extensions/connection_validator' Sequel::Deprecation.output = false Sequel.split_symbols = true module Cranium::Database def self.connection @connection ||= setup_connection(Cranium.configuration.greenplum_connection_string) end def self.[](name) @connections ||= {} @connections[name] ||= setup_connection(@definitions[name].connect_to, @definitions[name].retry_count, @definitions[name].retry_delay) end def self.register_database(name, &block) @definitions ||= Cranium::DefinitionRegistry.new Cranium::DSL::DatabaseDefinition @definitions.register_definition name, &block end private 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 end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
cranium-0.8.1 | lib/cranium/database.rb |
cranium-0.8 | lib/cranium/database.rb |
cranium-0.7 | lib/cranium/database.rb |