activerecord_url_connections 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,14 +2,23 @@ require "active_record"
2
2
  module ActiveRecordURLConnections
3
3
  def self.parse(str)
4
4
  config = URI.parse(str)
5
- { :encoding => "unicode",
6
- :port => config.port,
7
- :username => config.user,
8
- :adapter => "postgresql",
9
- :database => config.path.gsub(%r{/},""),
10
- :host => config.host,
11
- :password => config.password
12
- }
5
+ adapter = config.scheme
6
+ adapter = "postgresql" if adapter == "postgres"
7
+ spec = { :adapter => adapter,
8
+ :username => config.user,
9
+ :password => config.password,
10
+ :port => config.port,
11
+ :database => config.path.sub(%r{^/},""),
12
+ :hostname => config.host }
13
+ spec.reject!{ |key,value| value.nil? }
14
+ spec.merge!(split_query_options(config.query))
15
+ spec
16
+ end
17
+
18
+ private
19
+ def self.split_query_options(query = nil)
20
+ return {} unless query
21
+ Hash[query.split("&").map{ |pair| pair.split("=") }].symbolize_keys
13
22
  end
14
23
  end
15
24
 
@@ -19,26 +28,11 @@ ActiveRecord::Base.class_eval do
19
28
  def establish_connection(spec = nil)
20
29
  spec ||= ENV["DATABASE_URL"]
21
30
  if spec.is_a?(String) && url = URI.parse(spec)
22
- adapter = url.scheme
23
- adapter = "postgresql" if adapter == "postgres"
24
- spec = { :adapter => adapter,
25
- :username => url.user,
26
- :password => url.password,
27
- :database => url.path.sub(%r{^/},""),
28
- :port => url.port,
29
- :hostname => url.host }
30
- spec.reject!{ |key,value| value.nil? }
31
- spec.merge!(split_query_options(url.query))
31
+ spec = ActiveRecordURLConnections.parse(spec)
32
32
  end
33
33
  establish_connection_without_url(spec)
34
34
  rescue URI::InvalidURIError
35
35
  establish_connection_without_url(spec)
36
36
  end
37
-
38
- private
39
- def split_query_options(query = nil)
40
- return {} unless query
41
- Hash[query.split("&").map{ |pair| pair.split("=") }].symbolize_keys
42
- end
43
37
  end
44
38
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveRecordURLConnections
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: activerecord_url_connections
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.3
5
+ version: 0.0.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Glenn Gillen