Class: Makara::ConfigParser::ConnectionUrlResolver
- Inherits:
-
Object
- Object
- Makara::ConfigParser::ConnectionUrlResolver
- Defined in:
- lib/makara/config_parser.rb
Overview
ConnectionUrlResolver is borrowed from Rails 4-2 since its location and implementation vary slightly among Rails versions, but the behavior is the same. Thus, borrowing the class should be the most future-safe way to parse a database url.
Expands a connection string into a hash.
Instance Method Summary collapse
-
#initialize(url) ⇒ ConnectionUrlResolver
constructor
Example.
-
#to_hash ⇒ Object
Converts the given URL to a full connection hash.
Constructor Details
#initialize(url) ⇒ ConnectionUrlResolver
Example
url = "postgresql://foo:bar@localhost:9000/foo_test?pool=5&timeout=3000"
ConnectionUrlResolver.new(url).to_hash
# => {
"adapter" => "postgresql",
"host" => "localhost",
"port" => 9000,
"database" => "foo_test",
"username" => "foo",
"password" => "bar",
"pool" => "5",
"timeout" => "3000"
}
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/makara/config_parser.rb', line 49 def initialize(url) raise "Database URL cannot be empty" if url.blank? @uri = URI.parse(url) @adapter = @uri.scheme.tr('-', '_') @adapter = "postgresql" if @adapter == "postgres" if @uri.opaque @uri.opaque, @query = @uri.opaque.split('?', 2) else @query = @uri.query end end |
Instance Method Details
#to_hash ⇒ Object
Converts the given URL to a full connection hash.
64 65 66 67 68 |
# File 'lib/makara/config_parser.rb', line 64 def to_hash config = raw_config.reject { |_,value| value.blank? } config.map { |key,value| config[key] = CGI.unescape(value) if value.is_a? String } config end |