1
1
require 'erb'
2
+ require 'uri'
2
3
require 'mongo'
3
4
require 'active_support'
4
5
require 'active_support/core_ext'
@@ -154,6 +155,8 @@ def mongo_connection_object
154
155
conn = Mongo ::ReplSetConnection . new ( *( @db_configuration [ 'hosts' ] <<
155
156
{ :connect => true , :pool_timeout => 6 } ) )
156
157
@db_configuration [ 'replica_set' ] = true
158
+ elsif @db_configuration [ 'url' ]
159
+ conn = Mongo ::Connection . from_uri ( @db_configuration [ 'url' ] )
157
160
else
158
161
conn = Mongo ::Connection . new ( @db_configuration [ 'host' ] ,
159
162
@db_configuration [ 'port' ] ,
@@ -165,11 +168,17 @@ def mongo_connection_object
165
168
end
166
169
167
170
def connect
168
- @mongo_connection ||= mongo_connection_object . db ( @db_configuration [ 'database' ] )
169
- if @db_configuration [ 'username' ] && @db_configuration [ 'password' ]
170
- # the driver stores credentials in case reconnection is required
171
- @authenticated = @mongo_connection . authenticate ( @db_configuration [ 'username' ] ,
171
+ if @db_configuration [ 'url' ]
172
+ uri = URI . parse ( @db_configuration [ 'url' ] )
173
+ @mongo_connection ||= mongo_connection_object . db ( uri . path . gsub ( /^\/ / , '' ) )
174
+ @authenticated = true
175
+ else
176
+ @mongo_connection ||= mongo_connection_object . db ( @db_configuration [ 'database' ] )
177
+ if @db_configuration [ 'username' ] && @db_configuration [ 'password' ]
178
+ # the driver stores credentials in case reconnection is required
179
+ @authenticated = @mongo_connection . authenticate ( @db_configuration [ 'username' ] ,
172
180
@db_configuration [ 'password' ] )
181
+ end
173
182
end
174
183
end
175
184
0 commit comments