def connect(environment, options={})
raise 'Set config before connecting. MongoMapper.config = {...}' if config.blank?
env = config_for_environment(environment)
if env['options'].is_a?(Hash)
options = env['options'].symbolize_keys.merge(options)
end
options[:read] = options[:read].to_sym if options[:read].is_a? String
if env.key?('ssl')
options[:ssl] = env['ssl']
end
MongoMapper.connection = if env.key?('hosts')
klass = (env.key?("mongos") || env.key?("sharded")) ? Mongo::MongoShardedClient : Mongo::MongoReplicaSetClient
if env['hosts'].first.is_a?(String)
klass.new( env['hosts'], options )
else
klass.new( *env['hosts'].push(options) )
end
else
Mongo::MongoClient.new(env['host'], env['port'], options)
end
MongoMapper.database = env['database']
MongoMapper.database.authenticate(env['username'], env['password']) if env['username'] && env['password']
end