Module: Simple::SQL::Config

Extended by:
Config
Included in:
Config
Defined in:
lib/simple/sql/config.rb

Overview

private

Instance Method Summary collapse

Instance Method Details

#determine_urlObject

determines the database_url from either the DATABASE_URL environment setting or a config/database.yml file.



33
34
35
# File 'lib/simple/sql/config.rb', line 33

def determine_url
  ENV["DATABASE_URL"] || database_url_from_database_yml
end

#parse_url(url) ⇒ Object

parse a DATABASE_URL, return PG::Connection settings.

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/simple/sql/config.rb', line 11

def parse_url(url)
  require "uri"

  raise ArgumentError, "Invalid URL #{url.inspect}" unless url.is_a?(String)
  raise ArgumentError, "Invalid URL #{url.inspect}" unless url =~ /^postgres(ql)?s?:\/\//

  uri = URI.parse(url)
  raise ArgumentError, "Invalid URL #{url}" unless uri.hostname && uri.path

  config = {
    dbname: uri.path.sub(%r{^/}, ""),
    host:   uri.hostname
  }
  config[:port] = uri.port if uri.port
  config[:user] = uri.user if uri.user
  config[:password] = uri.password if uri.password
  config[:sslmode] = uri.scheme == "postgress" || uri.scheme == "postgresqls" ? "require" : "prefer"
  config
end