class ConnectionUrlResolver::URIDecorator

Attributes

uri[R]

Public Class Methods

new(url) click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 7
def initialize(url)
  @uri = parser.parse(url)
end

Public Instance Methods

to_hash() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 11
def to_hash
  connection_hash
end

Private Instance Methods

adapter() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 46
def adapter
  @_adapter ||= begin
    adapter = uri.scheme && uri.scheme.tr("-", "_")

    if adapter == "postgres"
      "postgresql"
    else
      adapter
    end
  end
end
connection_hash() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 23
def connection_hash
  unescape_values(connection_hash_with_values)
end
connection_hash_with_values() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 27
def connection_hash_with_values
  query_hash.merge(
    "adapter" => adapter,
    "username" => user,
    "password" => password,
    "port" => port,
    "database" => database,
    "host" => host
  ).reject { |_key, value| value.nil? || value.empty? }
end
database() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 70
def database
  if adapter == "sqlite3"
    uri.path
  else
    uri.path.sub %r(^/), ""
  end
end
host() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 78
def host
  uri.hostname
end
parser() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 19
def parser
  @_parser ||= URI::Parser.new
end
password() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 62
def password
  uri.password
end
port() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 66
def port
  uri.port.to_s
end
query() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 42
def query
  uri.query || ""
end
query_hash() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 38
def query_hash
  query.split("&").map { |pair| pair.split("=") }.to_h
end
unescape(value) click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 86
def unescape(value)
  if value.is_a?(String)
    parser.unescape(value)
  end
end
unescape_values(hash) click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 82
def unescape_values(hash)
  hash.transform_values { |value| unescape(value) }
end
user() click to toggle source
# File lib/connection_url_resolver/uri_decorator.rb, line 58
def user
  uri.user
end