Object
Parse a MongoDB URI. This method is used by MongoClient.from_uri. Returns an array of nodes and an array of db authorizations, if applicable.
@note Passwords can contain any character except for ','
@param [String] uri The MongoDB URI string. @param [Hash,nil] extra_opts Extra options. Will override anything already specified in the URI.
@core connections
# File lib/mongo/util/uri_parser.rb, line 125 def initialize(uri) if uri.start_with?('mongodb://') uri = uri[10..-1] else raise MongoArgumentError, "MongoDB URI must match this spec: #{MONGODB_URI_SPEC}" end hosts, opts = uri.split('?') parse_hosts(hosts) parse_options(opts) validate_connect end
Whether to immediately connect to the MongoDB node. Defaults to true. @return [true, false]
# File lib/mongo/util/uri_parser.rb, line 168 def connect? connect != false end
Create a Mongo::MongoClient or a Mongo::MongoReplicaSetClient based on the URI.
@note Don't confuse this with attribute getter method connect.
@return [MongoClient,MongoReplicaSetClient]
# File lib/mongo/util/uri_parser.rb, line 143 def connection(extra_opts, legacy=false) opts = connection_options.merge! extra_opts if(legacy) if replicaset? ReplSetConnection.new(node_strings, opts) else Connection.new(host, port, opts) end else if replicaset? MongoReplicaSetClient.new(node_strings, opts) else MongoClient.new(host, port, opts) end end end
Options that can be passed to MongoClient.new or MongoReplicaSetClient.new @return [Hash]
# File lib/mongo/util/uri_parser.rb, line 195 def connection_options opts = {} if @wtimeout warn "Using wtimeout in a URI is deprecated, please use wtimeoutMS. It will be removed in v2.0." opts[:wtimeout] = @wtimeout end opts[:wtimeout] = @wtimeoutms opts[:w] = 1 if @safe opts[:w] = @w if @w opts[:j] = @journal opts[:fsync] = @fsync if @connecttimeoutms opts[:connect_timeout] = @connecttimeoutms end if @sockettimeoutms opts[:op_timeout] = @sockettimeoutms end if @pool_size opts[:pool_size] = @pool_size end if @slaveok if direct? opts[:slave_ok] = true else opts[:read] = :secondary_preferred end end opts[:ssl] = @ssl if direct? opts[:auths] = auths end if replicaset.is_a?(String) opts[:name] = replicaset end opts[:connect] = connect? opts end
Whether this represents a direct connection.
@note Specifying :connect => 'direct' has no effect... other than to raise an exception if other variables suggest a replicaset.
@return [true,false]
# File lib/mongo/util/uri_parser.rb, line 177 def direct? !replicaset? end
For direct connections, the host of the (only) node. @return [String]
# File lib/mongo/util/uri_parser.rb, line 183 def host nodes[0][0] end
# File lib/mongo/util/uri_parser.rb, line 244 def node_strings nodes.map { |node| node.join(':') } end
Generated with the Darkfish Rdoc Generator 2.