mongo 1.8.6 → 1.9.0
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +13 -1
- data/VERSION +1 -1
- data/bin/mongo_console +15 -0
- data/lib/mongo.rb +14 -0
- data/lib/mongo/collection.rb +80 -42
- data/lib/mongo/cursor.rb +15 -1
- data/lib/mongo/db.rb +56 -19
- data/lib/mongo/exceptions.rb +14 -0
- data/lib/mongo/gridfs/grid.rb +16 -3
- data/lib/mongo/gridfs/grid_ext.rb +14 -0
- data/lib/mongo/gridfs/grid_file_system.rb +16 -3
- data/lib/mongo/gridfs/grid_io.rb +17 -3
- data/lib/mongo/legacy.rb +14 -0
- data/lib/mongo/mongo_client.rb +93 -40
- data/lib/mongo/mongo_replica_set_client.rb +21 -0
- data/lib/mongo/mongo_sharded_client.rb +15 -1
- data/lib/mongo/networking.rb +14 -0
- data/lib/mongo/util/conversions.rb +16 -2
- data/lib/mongo/util/core_ext.rb +14 -31
- data/lib/mongo/util/logging.rb +23 -7
- data/lib/mongo/util/node.rb +17 -2
- data/lib/mongo/util/pool.rb +17 -1
- data/lib/mongo/util/pool_manager.rb +15 -2
- data/lib/mongo/util/read_preference.rb +14 -0
- data/lib/mongo/util/server_version.rb +15 -0
- data/lib/mongo/util/sharding_pool_manager.rb +13 -0
- data/lib/mongo/util/socket_util.rb +14 -0
- data/lib/mongo/util/ssl_socket.rb +48 -7
- data/lib/mongo/util/support.rb +14 -0
- data/lib/mongo/util/tcp_socket.rb +18 -4
- data/lib/mongo/util/thread_local_variable_manager.rb +14 -0
- data/lib/mongo/util/unix_socket.rb +20 -6
- data/lib/mongo/util/uri_parser.rb +16 -8
- data/lib/mongo/util/write_concern.rb +16 -2
- data/test/functional/authentication_test.rb +26 -1
- data/test/functional/collection_test.rb +140 -41
- data/test/functional/connection_test.rb +19 -6
- data/test/functional/conversions_test.rb +14 -0
- data/test/functional/cursor_fail_test.rb +14 -0
- data/test/functional/cursor_message_test.rb +14 -0
- data/test/functional/cursor_test.rb +15 -1
- data/test/functional/db_api_test.rb +15 -1
- data/test/functional/db_connection_test.rb +14 -0
- data/test/functional/db_test.rb +14 -0
- data/test/functional/grid_file_system_test.rb +16 -4
- data/test/functional/grid_io_test.rb +14 -0
- data/test/functional/grid_test.rb +14 -0
- data/test/functional/pool_test.rb +22 -6
- data/test/functional/safe_test.rb +14 -0
- data/test/functional/ssl_test.rb +109 -0
- data/test/functional/support_test.rb +14 -0
- data/test/functional/threading_test.rb +22 -8
- data/test/functional/timeout_test.rb +20 -6
- data/test/functional/uri_test.rb +14 -14
- data/test/functional/write_concern_test.rb +14 -0
- data/test/replica_set/authentication_test.rb +28 -2
- data/test/replica_set/basic_test.rb +14 -0
- data/test/replica_set/client_test.rb +14 -0
- data/test/replica_set/complex_connect_test.rb +14 -0
- data/test/replica_set/connection_test.rb +14 -0
- data/test/replica_set/count_test.rb +14 -0
- data/test/replica_set/cursor_test.rb +14 -0
- data/test/replica_set/insert_test.rb +14 -0
- data/test/replica_set/max_values_test.rb +14 -0
- data/test/replica_set/pinning_test.rb +14 -0
- data/test/replica_set/query_test.rb +14 -0
- data/test/replica_set/read_preference_test.rb +14 -0
- data/test/replica_set/refresh_test.rb +14 -0
- data/test/replica_set/replication_ack_test.rb +14 -0
- data/test/replica_set/ssl_test.rb +114 -0
- data/test/sharded_cluster/basic_test.rb +14 -0
- data/test/shared/authentication.rb +55 -0
- data/test/test_helper.rb +15 -1
- data/test/threading/basic_test.rb +14 -0
- data/test/tools/mongo_config.rb +16 -1
- data/test/tools/mongo_config_test.rb +15 -1
- data/test/unit/client_test.rb +14 -0
- data/test/unit/collection_test.rb +14 -0
- data/test/unit/connection_test.rb +14 -0
- data/test/unit/cursor_test.rb +14 -0
- data/test/unit/db_test.rb +15 -1
- data/test/unit/grid_test.rb +14 -0
- data/test/unit/mongo_sharded_client_test.rb +14 -0
- data/test/unit/node_test.rb +15 -0
- data/test/unit/pool_manager_test.rb +15 -0
- data/test/unit/pool_test.rb +14 -0
- data/test/unit/read_pref_test.rb +14 -0
- data/test/unit/read_test.rb +14 -0
- data/test/unit/safe_test.rb +14 -0
- data/test/unit/sharding_pool_manager_test.rb +15 -0
- data/test/unit/util_test.rb +14 -0
- data/test/unit/write_concern_test.rb +15 -1
- metadata +8 -4
- metadata.gz.sig +0 -0
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
2
16
|
module GridExt
|
3
17
|
module InstanceMethods
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
2
16
|
|
3
17
|
# A file store built on the GridFS specification featuring
|
@@ -22,7 +36,6 @@ module Mongo
|
|
22
36
|
@default_query_opts = {:sort => [['filename', 1], ['uploadDate', -1]], :limit => 1}
|
23
37
|
|
24
38
|
# This will create indexes only if we're connected to a primary node.
|
25
|
-
connection = @db.connection
|
26
39
|
begin
|
27
40
|
@files.ensure_index([['filename', 1], ['uploadDate', -1]])
|
28
41
|
@chunks.ensure_index([['files_id', Mongo::ASCENDING], ['n', Mongo::ASCENDING]], :unique => true)
|
@@ -56,8 +69,8 @@ module Mongo
|
|
56
69
|
# Notes on write concern:
|
57
70
|
# When :w > 0, the chunks sent to the server
|
58
71
|
# will be validated using an md5 hash. If validation fails, an exception will be raised.
|
59
|
-
# @option opts [Integer] :versions (false) deletes all versions which exceed the number specified to
|
60
|
-
# retain ordered by uploadDate. This option only works in 'w' mode. Certain precautions must be taken when
|
72
|
+
# @option opts [Integer] :versions (false) deletes all versions which exceed the number specified to
|
73
|
+
# retain ordered by uploadDate. This option only works in 'w' mode. Certain precautions must be taken when
|
61
74
|
# deleting GridFS files. See the notes under GridFileSystem#delete.
|
62
75
|
#
|
63
76
|
# @example
|
data/lib/mongo/gridfs/grid_io.rb
CHANGED
@@ -1,12 +1,26 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'digest/md5'
|
2
16
|
|
3
17
|
module Mongo
|
4
18
|
|
5
19
|
# GridIO objects represent files in the GridFS specification. This class
|
6
20
|
# manages the reading and writing of file chunks and metadata.
|
7
|
-
class GridIO
|
21
|
+
class GridIO
|
8
22
|
include Mongo::WriteConcern
|
9
|
-
|
23
|
+
|
10
24
|
DEFAULT_CHUNK_SIZE = 256 * 1024
|
11
25
|
DEFAULT_CONTENT_TYPE = 'binary/octet-stream'
|
12
26
|
PROTECTED_ATTRS = [:files_id, :file_length, :client_md5, :server_md5]
|
@@ -238,7 +252,7 @@ module Mongo
|
|
238
252
|
# @return [Mongo::GridIO] self
|
239
253
|
def each
|
240
254
|
return read_all unless block_given?
|
241
|
-
while chunk = read(chunk_size)
|
255
|
+
while chunk = read(chunk_size)
|
242
256
|
yield chunk
|
243
257
|
break if chunk.empty?
|
244
258
|
end
|
data/lib/mongo/legacy.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
2
16
|
module LegacyWriteConcern
|
3
17
|
@legacy_write_concern = true
|
data/lib/mongo/mongo_client.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'set'
|
2
16
|
require 'socket'
|
3
17
|
require 'thread'
|
@@ -16,8 +30,9 @@ module Mongo
|
|
16
30
|
DEFAULT_HOST = 'localhost'
|
17
31
|
DEFAULT_PORT = 27017
|
18
32
|
DEFAULT_DB_NAME = 'test'
|
19
|
-
GENERIC_OPTS = [:
|
33
|
+
GENERIC_OPTS = [:auths, :logger, :connect]
|
20
34
|
TIMEOUT_OPTS = [:timeout, :op_timeout, :connect_timeout]
|
35
|
+
SSL_OPTS = [:ssl, :ssl_key, :ssl_cert, :ssl_verify, :ssl_ca_cert]
|
21
36
|
POOL_OPTS = [:pool_size, :pool_timeout]
|
22
37
|
READ_PREFERENCE_OPTS = [:read, :tag_sets, :secondary_acceptable_latency_ms]
|
23
38
|
WRITE_CONCERN_OPTS = [:w, :j, :fsync, :wtimeout]
|
@@ -36,6 +51,7 @@ module Mongo
|
|
36
51
|
:pool_timeout,
|
37
52
|
:primary_pool,
|
38
53
|
:socket_class,
|
54
|
+
:socket_opts,
|
39
55
|
:op_timeout,
|
40
56
|
:tag_sets,
|
41
57
|
:acceptable_latency,
|
@@ -55,33 +71,43 @@ module Mongo
|
|
55
71
|
# MongoClient#arbiters. This is useful if your application needs to connect manually to nodes other
|
56
72
|
# than the primary.
|
57
73
|
#
|
58
|
-
# @
|
59
|
-
#
|
60
|
-
#
|
61
|
-
#
|
62
|
-
#
|
63
|
-
#
|
64
|
-
#
|
65
|
-
#
|
66
|
-
#
|
67
|
-
#
|
68
|
-
#
|
69
|
-
#
|
70
|
-
#
|
71
|
-
#
|
72
|
-
#
|
73
|
-
#
|
74
|
-
#
|
75
|
-
#
|
76
|
-
#
|
77
|
-
#
|
78
|
-
#
|
79
|
-
#
|
80
|
-
#
|
81
|
-
#
|
82
|
-
#
|
83
|
-
#
|
84
|
-
#
|
74
|
+
# @overload initialize(host, port, opts={})
|
75
|
+
# @param [String] host hostname for the target MongoDB server.
|
76
|
+
# @param [Integer] port specify a port number here if only one host is being specified.
|
77
|
+
# @param [Hash] opts hash of optional settings and configuration values.
|
78
|
+
#
|
79
|
+
# @option opts [String, Integer, Symbol] :w (1) Set default number of nodes to which a write
|
80
|
+
# should be acknowledged
|
81
|
+
# @option opts [Boolean] :j (false) Set journal acknowledgement
|
82
|
+
# @option opts [Integer] :wtimeout (nil) Set replica set acknowledgement timeout
|
83
|
+
# @option opts [Boolean] :fsync (false) Set fsync acknowledgement.
|
84
|
+
#
|
85
|
+
# Notes about Write-Concern Options:
|
86
|
+
# Write concern options are propagated to objects instantiated from this MongoClient.
|
87
|
+
# These defaults can be overridden upon instantiation of any object by explicitly setting an options hash
|
88
|
+
# on initialization.
|
89
|
+
#
|
90
|
+
# @option opts [Boolean] :ssl (false) If true, create the connection to the server using SSL.
|
91
|
+
# @option opts [String] :ssl_cert (nil) The certificate file used to identify the local connection against MongoDB.
|
92
|
+
# @option opts [String] :ssl_key (nil) The private keyfile used to identify the local connection against MongoDB.
|
93
|
+
# If included with the :ssl_cert then only :ssl_cert is needed.
|
94
|
+
# @option opts [Boolean] :ssl_verify (nil) Specifies whether or not peer certification validation should occur.
|
95
|
+
# @option opts [String] :ssl_ca_cert (nil) The ca_certs file contains a set of concatenated "certification authority"
|
96
|
+
# certificates, which are used to validate certificates passed from the other end of the connection.
|
97
|
+
# Required for :ssl_verify.
|
98
|
+
# @option opts [Boolean] :slave_ok (false) Must be set to +true+ when connecting
|
99
|
+
# to a single, slave node.
|
100
|
+
# @option opts [Logger, #debug] :logger (nil) A Logger instance for debugging driver ops. Note that
|
101
|
+
# logging negatively impacts performance; therefore, it should not be used for high-performance apps.
|
102
|
+
# @option opts [Integer] :pool_size (1) The maximum number of socket self.connections allowed per
|
103
|
+
# connection pool. Note: this setting is relevant only for multi-threaded applications.
|
104
|
+
# @option opts [Float] :timeout (5.0) When all of the self.connections a pool are checked out,
|
105
|
+
# this is the number of seconds to wait for a new connection to be released before throwing an exception.
|
106
|
+
# Note: this setting is relevant only for multi-threaded applications.
|
107
|
+
# @option opts [Float] :op_timeout (nil) The number of seconds to wait for a read operation to time out.
|
108
|
+
# Disabled by default.
|
109
|
+
# @option opts [Float] :connect_timeout (nil) The number of seconds to wait before timing out a
|
110
|
+
# connection attempt.
|
85
111
|
#
|
86
112
|
# @example localhost, 27017 (or <code>ENV["MONGODB_URI"]</code> if available)
|
87
113
|
# MongoClient.new
|
@@ -122,6 +148,9 @@ module Mongo
|
|
122
148
|
@tag_sets = []
|
123
149
|
@acceptable_latency = 15
|
124
150
|
|
151
|
+
@max_message_size = nil
|
152
|
+
@max_bson_size = nil
|
153
|
+
|
125
154
|
check_opts(opts)
|
126
155
|
setup(opts.dup)
|
127
156
|
end
|
@@ -242,7 +271,7 @@ module Mongo
|
|
242
271
|
return false if @auths.empty?
|
243
272
|
@auths.each do |auth|
|
244
273
|
self[auth[:db_name]].issue_authentication(auth[:username], auth[:password], false,
|
245
|
-
:socket => opts[:socket])
|
274
|
+
:source => auth[:source], :socket => opts[:socket])
|
246
275
|
end
|
247
276
|
true
|
248
277
|
end
|
@@ -260,7 +289,7 @@ module Mongo
|
|
260
289
|
# @param [String] password
|
261
290
|
#
|
262
291
|
# @return [Hash] a hash representing the authentication just added.
|
263
|
-
def add_auth(db_name, username, password)
|
292
|
+
def add_auth(db_name, username, password, source)
|
264
293
|
if @auths.any? {|a| a[:db_name] == db_name}
|
265
294
|
raise MongoArgumentError, "Cannot apply multiple authentications to database '#{db_name}'"
|
266
295
|
end
|
@@ -268,7 +297,8 @@ module Mongo
|
|
268
297
|
auth = {
|
269
298
|
:db_name => db_name,
|
270
299
|
:username => username,
|
271
|
-
:password => password
|
300
|
+
:password => password,
|
301
|
+
:source => source
|
272
302
|
}
|
273
303
|
@auths << auth
|
274
304
|
auth
|
@@ -306,8 +336,9 @@ module Mongo
|
|
306
336
|
# @return [Hash]
|
307
337
|
def database_info
|
308
338
|
doc = self['admin'].command({:listDatabases => 1})
|
309
|
-
doc['databases'].
|
339
|
+
doc['databases'].inject({}) do |info, db|
|
310
340
|
info[db['name']] = db['sizeOnDisk'].to_i
|
341
|
+
info
|
311
342
|
end
|
312
343
|
end
|
313
344
|
|
@@ -440,9 +471,7 @@ module Mongo
|
|
440
471
|
# @raise [ConnectionFailure] if unable to connect to any host or port.
|
441
472
|
def connect
|
442
473
|
close
|
443
|
-
|
444
474
|
config = check_is_master(host_port)
|
445
|
-
|
446
475
|
if config
|
447
476
|
if config['ismaster'] == 1 || config['ismaster'] == true
|
448
477
|
@read_primary = true
|
@@ -462,6 +491,7 @@ module Mongo
|
|
462
491
|
if !connected?
|
463
492
|
raise ConnectionFailure, "Failed to connect to a master node at #{host_port.join(":")}"
|
464
493
|
end
|
494
|
+
true
|
465
495
|
end
|
466
496
|
alias :reconnect :connect
|
467
497
|
|
@@ -555,7 +585,7 @@ module Mongo
|
|
555
585
|
begin
|
556
586
|
host, port = *node
|
557
587
|
config = nil
|
558
|
-
socket = @socket_class.new(host, port, @op_timeout, @connect_timeout)
|
588
|
+
socket = @socket_class.new(host, port, @op_timeout, @connect_timeout, @socket_opts)
|
559
589
|
if @connect_timeout
|
560
590
|
Timeout::timeout(@connect_timeout, OperationTimeout) do
|
561
591
|
config = self['admin'].command({:ismaster => 1}, :socket => socket)
|
@@ -579,7 +609,8 @@ module Mongo
|
|
579
609
|
POOL_OPTS +
|
580
610
|
READ_PREFERENCE_OPTS +
|
581
611
|
WRITE_CONCERN_OPTS +
|
582
|
-
TIMEOUT_OPTS
|
612
|
+
TIMEOUT_OPTS +
|
613
|
+
SSL_OPTS
|
583
614
|
end
|
584
615
|
|
585
616
|
def check_opts(opts)
|
@@ -593,11 +624,32 @@ module Mongo
|
|
593
624
|
# Parse option hash
|
594
625
|
def setup(opts)
|
595
626
|
@slave_ok = opts.delete(:slave_ok)
|
627
|
+
@ssl = opts.delete(:ssl)
|
628
|
+
@unix = @host ? @host.end_with?('.sock') : false
|
629
|
+
|
630
|
+
# if ssl options are present, but ssl is nil/false raise for misconfig
|
631
|
+
ssl_opts = opts.keys.select { |k| k.to_s.start_with?('ssl') }
|
632
|
+
if ssl_opts.size > 0 && !@ssl
|
633
|
+
raise MongoArgumentError, "SSL has not been enabled (:ssl=false) " +
|
634
|
+
"but the following SSL related options were " +
|
635
|
+
"specified: #{ssl_opts.join(', ')}"
|
636
|
+
end
|
596
637
|
|
597
|
-
@
|
598
|
-
@unix = @host ? @host.end_with?('.sock') : false
|
599
|
-
|
638
|
+
@socket_opts = {}
|
600
639
|
if @ssl
|
640
|
+
# construct ssl socket opts
|
641
|
+
@socket_opts[:key] = opts.delete(:ssl_key)
|
642
|
+
@socket_opts[:cert] = opts.delete(:ssl_cert)
|
643
|
+
@socket_opts[:verify] = opts.delete(:ssl_verify)
|
644
|
+
@socket_opts[:ca_cert] = opts.delete(:ssl_ca_cert)
|
645
|
+
|
646
|
+
# verify peer requires ca_cert, raise if only one is present
|
647
|
+
if @socket_opts[:verify] && !@socket_opts[:ca_cert]
|
648
|
+
raise MongoArgumentError,
|
649
|
+
"If :ssl_verify_mode has been specified, then you must include " +
|
650
|
+
":ssl_ca_cert in order to perform server validation."
|
651
|
+
end
|
652
|
+
|
601
653
|
@socket_class = Mongo::SSLSocket
|
602
654
|
elsif @unix
|
603
655
|
@socket_class = Mongo::UNIXSocket
|
@@ -612,7 +664,8 @@ module Mongo
|
|
612
664
|
@pool_size = opts.delete(:pool_size) || 1
|
613
665
|
if opts[:timeout]
|
614
666
|
warn "The :timeout option has been deprecated " +
|
615
|
-
|
667
|
+
"and will be removed in the 2.0 release. " +
|
668
|
+
"Use :pool_timeout instead."
|
616
669
|
end
|
617
670
|
@pool_timeout = opts.delete(:pool_timeout) || opts.delete(:timeout) || 5.0
|
618
671
|
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
2
16
|
|
3
17
|
# Instantiates and manages connections to a MongoDB replica set.
|
@@ -69,6 +83,13 @@ module Mongo
|
|
69
83
|
# @option opts [Float] :connect_timeout (30) The number of seconds to wait before timing out a
|
70
84
|
# connection attempt.
|
71
85
|
# @option opts [Boolean] :ssl (false) If true, create the connection to the server using SSL.
|
86
|
+
# @option opts [String] :ssl_cert (nil) The certificate file used to identify the local connection against MongoDB.
|
87
|
+
# @option opts [String] :ssl_key (nil) The private keyfile used to identify the local connection against MongoDB.
|
88
|
+
# If included with the :ssl_cert then only :ssl_cert is needed.
|
89
|
+
# @option opts [Boolean] :ssl_verify (nil) Specifies whether or not peer certification validation should occur.
|
90
|
+
# @option opts [String] :ssl_ca_cert (nil) The ca_certs file contains a set of concatenated "certification authority"
|
91
|
+
# certificates, which are used to validate certificates passed from the other end of the connection.
|
92
|
+
# Required for :ssl_verify.
|
72
93
|
# @option opts [Boolean] :refresh_mode (false) Set this to :sync to periodically update the
|
73
94
|
# state of the connection every :refresh_interval seconds. Replica set connection failures
|
74
95
|
# will always trigger a complete refresh. This option is useful when you want to add new nodes
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
2
16
|
|
3
17
|
# Instantiates and manages connections to a MongoDB sharded cluster for high availability.
|
@@ -52,7 +66,7 @@ module Mongo
|
|
52
66
|
end
|
53
67
|
|
54
68
|
def valid_opts
|
55
|
-
|
69
|
+
super + SHARDED_CLUSTER_OPTS
|
56
70
|
end
|
57
71
|
|
58
72
|
def inspect
|
data/lib/mongo/networking.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
2
16
|
module Networking
|
3
17
|
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo #:nodoc:
|
2
16
|
|
3
17
|
# Utility module to include when needing to convert certain types of
|
@@ -31,7 +45,7 @@ module Mongo #:nodoc:
|
|
31
45
|
end
|
32
46
|
|
33
47
|
# Converts the supplied +Array+ to a +Hash+ to pass to mongo as
|
34
|
-
# sorting parameters. The returned +Hash+ will vary depending
|
48
|
+
# sorting parameters. The returned +Hash+ will vary depending
|
35
49
|
# on whether the passed +Array+ is one or two dimensional.
|
36
50
|
#
|
37
51
|
# Example:
|
@@ -73,7 +87,7 @@ module Mongo #:nodoc:
|
|
73
87
|
{ str => 1 }
|
74
88
|
end
|
75
89
|
|
76
|
-
# Converts the +String+, +Symbol+, or +Integer+ to the
|
90
|
+
# Converts the +String+, +Symbol+, or +Integer+ to the
|
77
91
|
# corresponding sort value in MongoDB.
|
78
92
|
#
|
79
93
|
# Valid conversions (case-insensitive):
|