module DBA::Database
Public Instance Methods
connect()
click to toggle source
# File lib/dba/database.rb, line 11 def connect args = find_connection_args Sequel.connect(args) rescue Sequel::DatabaseConnectionError => exception raise DBA::Error, connection_error_message(args) end
Private Instance Methods
connection_error_message(args)
click to toggle source
# File lib/dba/database.rb, line 45 def connection_error_message(args) if args.is_a?(Hash) adapter, host, port = args.values_at('adapter', 'host', 'port') host ||= 'localhost' if port "could not connect to #{adapter} database at #{host}:#{port}" else "could not connect to #{adapter} database at #{host}" end else uri = URI(args) "could not connect to #{uri.scheme} database at #{uri.host}" end end
database_config()
click to toggle source
# File lib/dba/database.rb, line 71 def database_config YAML.load(ERB.new(File.read('config/database.yml')).result) end
database_config?()
click to toggle source
# File lib/dba/database.rb, line 67 def database_config? File.exist?('config/database.yml') end
development_database_args()
click to toggle source
# File lib/dba/database.rb, line 75 def development_database_args args = database_config['development'] args['adapter'] = 'postgres' if args['adapter'] == 'postgresql' args['adapter'] = 'sqlite' if args['adapter'] == 'sqlite3' args end
dotenv?()
click to toggle source
# File lib/dba/database.rb, line 63 def dotenv? File.exist?('.env') end
find_connection_args()
click to toggle source
# File lib/dba/database.rb, line 21 def find_connection_args if dotenv? File.readlines('.env').each do |line| if line.strip =~ /\ADATABASE_URL=/ return $' end end end if database_config? return development_database_args end if postgres_running? return 'postgres://localhost:5432/postgres' end if path = Dir['*.sqlite3'].first return 'sqlite://' + path end raise DBA::Error, 'could not find database' end
postgres_running?()
click to toggle source
# File lib/dba/database.rb, line 82 def postgres_running? Socket.tcp('localhost', 5432) { :connected } rescue Errno::ECONNREFUSED end