mongo 2.1.0.beta → 2.2.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/README.md +10 -3
- data/Rakefile +1 -7
- data/lib/mongo/address/ipv4.rb +6 -1
- data/lib/mongo/address/unix.rb +2 -2
- data/lib/mongo/address.rb +32 -10
- data/lib/mongo/auth/cr/conversation.rb +1 -1
- data/lib/mongo/auth/ldap/conversation.rb +7 -3
- data/lib/mongo/auth/scram/conversation.rb +9 -3
- data/lib/mongo/auth/user/view.rb +23 -2
- data/lib/mongo/auth/x509/conversation.rb +1 -1
- data/lib/mongo/bulk_write/combineable.rb +51 -0
- data/lib/mongo/bulk_write/ordered_combiner.rb +55 -0
- data/lib/mongo/bulk_write/result.rb +61 -8
- data/lib/mongo/bulk_write/result_combiner.rb +117 -0
- data/lib/mongo/bulk_write/transformable.rb +132 -0
- data/lib/mongo/bulk_write/unordered_combiner.rb +52 -0
- data/lib/mongo/bulk_write/validatable.rb +62 -0
- data/lib/mongo/bulk_write.rb +164 -23
- data/lib/mongo/client.rb +75 -18
- data/lib/mongo/cluster/topology/replica_set.rb +8 -6
- data/lib/mongo/cluster/topology/unknown.rb +5 -2
- data/lib/mongo/cluster.rb +85 -5
- data/lib/mongo/collection/view/aggregation.rb +19 -45
- data/lib/mongo/collection/view/builder/aggregation.rb +98 -0
- data/lib/mongo/collection/view/builder/find_command.rb +111 -0
- data/lib/mongo/collection/view/builder/flags.rb +62 -0
- data/lib/mongo/collection/view/builder/map_reduce.rb +134 -0
- data/lib/mongo/collection/view/builder/modifiers.rb +80 -0
- data/lib/mongo/collection/view/builder/op_query.rb +83 -0
- data/lib/mongo/collection/view/builder.rb +20 -0
- data/lib/mongo/collection/view/explainable.rb +15 -0
- data/lib/mongo/collection/view/immutable.rb +4 -11
- data/lib/mongo/collection/view/iterable.rb +40 -5
- data/lib/mongo/collection/view/map_reduce.rb +67 -37
- data/lib/mongo/collection/view/readable.rb +114 -100
- data/lib/mongo/collection/view/writable.rb +46 -22
- data/lib/mongo/collection/view.rb +25 -22
- data/lib/mongo/collection.rb +130 -12
- data/lib/mongo/cursor/builder/get_more_command.rb +71 -0
- data/lib/mongo/cursor/builder/kill_cursors_command.rb +62 -0
- data/lib/mongo/cursor/builder/op_get_more.rb +61 -0
- data/lib/mongo/cursor/builder/op_kill_cursors.rb +56 -0
- data/lib/mongo/cursor/builder.rb +18 -0
- data/lib/mongo/cursor.rb +76 -21
- data/lib/mongo/database/view.rb +11 -6
- data/lib/mongo/database.rb +16 -6
- data/lib/mongo/dbref.rb +9 -9
- data/lib/mongo/{bulk_write/unordered_bulk_write.rb → error/closed_stream.rb} +12 -21
- data/lib/mongo/{bulk_write/ordered_bulk_write.rb → error/extra_file_chunk.rb} +13 -27
- data/lib/mongo/error/file_not_found.rb +37 -0
- data/lib/mongo/error/invalid_file.rb +2 -2
- data/lib/mongo/error/invalid_file_revision.rb +37 -0
- data/lib/mongo/error/invalid_uri.rb +5 -4
- data/lib/mongo/error/invalid_write_concern.rb +35 -0
- data/lib/mongo/error/missing_file_chunk.rb +38 -0
- data/lib/mongo/error/operation_failure.rb +33 -2
- data/lib/mongo/error/unchangeable_collection_option.rb +38 -0
- data/lib/mongo/error/unexpected_chunk_length.rb +39 -0
- data/lib/mongo/error.rb +8 -0
- data/lib/mongo/grid/file/chunk.rb +9 -9
- data/lib/mongo/grid/file/{metadata.rb → info.rb} +41 -39
- data/lib/mongo/grid/file.rb +12 -9
- data/lib/mongo/grid/fs_bucket.rb +448 -0
- data/lib/mongo/grid/stream/read.rb +208 -0
- data/lib/mongo/grid/stream/write.rb +187 -0
- data/lib/mongo/grid/stream.rb +64 -0
- data/lib/mongo/grid.rb +2 -1
- data/lib/mongo/index/view.rb +7 -4
- data/lib/mongo/index.rb +5 -0
- data/lib/mongo/loggable.rb +34 -57
- data/lib/mongo/logger.rb +16 -78
- data/lib/mongo/monitoring/command_log_subscriber.rb +38 -14
- data/lib/mongo/monitoring/event/command_started.rb +2 -1
- data/lib/mongo/monitoring/event/command_succeeded.rb +24 -2
- data/lib/mongo/monitoring/event/secure.rb +58 -0
- data/lib/mongo/monitoring/event.rb +1 -0
- data/lib/mongo/monitoring/publishable.rb +22 -12
- data/lib/mongo/monitoring.rb +1 -5
- data/lib/mongo/operation/commands/aggregate/result.rb +89 -0
- data/lib/mongo/operation/commands/aggregate.rb +64 -0
- data/lib/mongo/operation/commands/collections_info/result.rb +41 -0
- data/lib/mongo/operation/{read → commands}/collections_info.rb +5 -3
- data/lib/mongo/operation/commands/command.rb +47 -0
- data/lib/mongo/operation/commands/find/result.rb +62 -0
- data/lib/mongo/operation/commands/find.rb +27 -0
- data/lib/mongo/operation/commands/get_more/result.rb +62 -0
- data/lib/mongo/operation/commands/get_more.rb +27 -0
- data/lib/mongo/operation/{read → commands}/indexes.rb +9 -6
- data/lib/mongo/operation/{list_collections → commands/list_collections}/result.rb +1 -21
- data/lib/mongo/operation/{read → commands}/list_collections.rb +4 -32
- data/lib/mongo/operation/{list_indexes → commands/list_indexes}/result.rb +1 -21
- data/lib/mongo/operation/{read → commands}/list_indexes.rb +3 -33
- data/lib/mongo/operation/commands/map_reduce/result.rb +119 -0
- data/lib/mongo/operation/commands/map_reduce.rb +49 -0
- data/lib/mongo/operation/commands/parallel_scan/result.rb +64 -0
- data/lib/mongo/operation/commands/parallel_scan.rb +52 -0
- data/lib/mongo/operation/commands/user_query.rb +71 -0
- data/lib/mongo/operation/commands/users_info/result.rb +38 -0
- data/lib/mongo/operation/commands/users_info.rb +48 -0
- data/lib/mongo/operation/commands.rb +26 -0
- data/lib/mongo/operation/executable.rb +4 -68
- data/lib/mongo/operation/kill_cursors.rb +3 -3
- data/lib/mongo/operation/object_id_generator.rb +36 -0
- data/lib/mongo/operation/read/get_more.rb +2 -22
- data/lib/mongo/operation/read/query/result.rb +40 -0
- data/lib/mongo/operation/read/query.rb +4 -21
- data/lib/mongo/operation/read.rb +0 -4
- data/lib/mongo/operation/{read_preferrable.rb → read_preference.rb} +3 -2
- data/lib/mongo/operation/result.rb +43 -1
- data/lib/mongo/operation/specifiable.rb +59 -1
- data/lib/mongo/operation/write/bulk/bulkable.rb +83 -0
- data/lib/mongo/operation/write/bulk/delete/result.rb +67 -0
- data/lib/mongo/operation/write/bulk/delete.rb +71 -0
- data/lib/mongo/operation/write/bulk/insert/result.rb +129 -0
- data/lib/mongo/operation/write/bulk/insert.rb +96 -0
- data/lib/mongo/operation/write/bulk/legacy_mergable.rb +87 -0
- data/lib/mongo/operation/write/bulk/mergable.rb +71 -0
- data/lib/mongo/operation/write/bulk/update/result.rb +174 -0
- data/lib/mongo/operation/write/bulk/update.rb +81 -0
- data/lib/mongo/operation/write/bulk.rb +6 -3
- data/lib/mongo/operation/write/command/create_index.rb +0 -1
- data/lib/mongo/operation/write/command/create_user.rb +0 -1
- data/lib/mongo/operation/write/command/delete.rb +3 -3
- data/lib/mongo/operation/write/command/drop_index.rb +0 -1
- data/lib/mongo/operation/write/command/insert.rb +4 -3
- data/lib/mongo/operation/write/command/remove_user.rb +0 -1
- data/lib/mongo/operation/write/command/update.rb +6 -4
- data/lib/mongo/operation/write/command/update_user.rb +0 -1
- data/lib/mongo/operation/write/command/writable.rb +13 -18
- data/lib/mongo/operation/write/create_index.rb +4 -27
- data/lib/mongo/operation/write/create_user.rb +4 -30
- data/lib/mongo/operation/write/delete.rb +6 -29
- data/lib/mongo/operation/write/drop_index.rb +3 -3
- data/lib/mongo/operation/write/gle.rb +49 -0
- data/lib/mongo/operation/write/idable.rb +24 -2
- data/lib/mongo/operation/write/insert.rb +2 -24
- data/lib/mongo/operation/write/remove_user.rb +4 -27
- data/lib/mongo/operation/write/update.rb +13 -36
- data/lib/mongo/operation/write/update_user.rb +4 -30
- data/lib/mongo/operation/write/write_command_enabled.rb +53 -0
- data/lib/mongo/operation/write.rb +2 -0
- data/lib/mongo/operation.rb +33 -5
- data/lib/mongo/options/mapper.rb +26 -2
- data/lib/mongo/options/redacted.rb +156 -0
- data/lib/mongo/options.rb +1 -0
- data/lib/mongo/protocol/bit_vector.rb +11 -9
- data/lib/mongo/protocol/delete.rb +78 -3
- data/lib/mongo/protocol/get_more.rb +59 -2
- data/lib/mongo/protocol/insert.rb +73 -1
- data/lib/mongo/protocol/kill_cursors.rb +66 -4
- data/lib/mongo/protocol/message.rb +44 -20
- data/lib/mongo/protocol/query.rb +153 -65
- data/lib/mongo/protocol/reply.rb +92 -1
- data/lib/mongo/protocol/serializers.rb +49 -40
- data/lib/mongo/protocol/update.rb +93 -1
- data/lib/mongo/retryable.rb +101 -0
- data/lib/mongo/server/connectable.rb +28 -8
- data/lib/mongo/server/connection.rb +52 -10
- data/lib/mongo/server/connection_pool/queue.rb +15 -0
- data/lib/mongo/server/connection_pool.rb +12 -15
- data/lib/mongo/server/description/features.rb +4 -2
- data/lib/mongo/server/description.rb +39 -3
- data/lib/mongo/server/monitor/connection.rb +49 -28
- data/lib/mongo/server/monitor.rb +3 -14
- data/lib/mongo/server.rb +31 -4
- data/lib/mongo/server_selector/selectable.rb +58 -32
- data/lib/mongo/server_selector.rb +19 -10
- data/lib/mongo/socket/ssl.rb +4 -1
- data/lib/mongo/socket/tcp.rb +2 -2
- data/lib/mongo/socket/unix.rb +5 -8
- data/lib/mongo/socket.rb +11 -4
- data/lib/mongo/uri.rb +245 -139
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern.rb +21 -6
- data/lib/mongo.rb +4 -4
- data/mongo.gemspec +1 -2
- data/spec/mongo/address/unix_spec.rb +1 -1
- data/spec/mongo/address_spec.rb +25 -0
- data/spec/mongo/auth/ldap/conversation_spec.rb +43 -0
- data/spec/mongo/auth/user/view_spec.rb +26 -1
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +284 -0
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +239 -0
- data/spec/mongo/bulk_write_spec.rb +385 -161
- data/spec/mongo/client_spec.rb +193 -23
- data/spec/mongo/cluster/topology/replica_set_spec.rb +2 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +65 -0
- data/spec/mongo/collection/view/builder/find_command_spec.rb +167 -0
- data/spec/mongo/collection/view/builder/flags_spec.rb +106 -0
- data/spec/mongo/collection/view/builder/modifiers_spec.rb +210 -0
- data/spec/mongo/collection/view/builder/op_query_spec.rb +154 -0
- data/spec/mongo/collection/view/explainable_spec.rb +1 -2
- data/spec/mongo/collection/view/immutable_spec.rb +54 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +104 -9
- data/spec/mongo/collection/view/readable_spec.rb +109 -112
- data/spec/mongo/collection/view_spec.rb +119 -487
- data/spec/mongo/collection_spec.rb +1002 -33
- data/spec/mongo/command_monitoring_spec.rb +64 -0
- data/spec/mongo/connection_string_spec.rb +115 -0
- data/spec/mongo/cursor/builder/get_more_command_spec.rb +160 -0
- data/spec/mongo/cursor/builder/op_get_more_spec.rb +52 -0
- data/spec/mongo/cursor_spec.rb +10 -60
- data/spec/mongo/database_spec.rb +81 -12
- data/spec/mongo/dbref_spec.rb +4 -4
- data/spec/mongo/grid/file/chunk_spec.rb +6 -6
- data/spec/mongo/grid/file/{metadata_spec.rb → info_spec.rb} +29 -17
- data/spec/mongo/grid/file_spec.rb +8 -8
- data/spec/mongo/grid/fs_bucket_spec.rb +1020 -0
- data/spec/mongo/grid/stream/read_spec.rb +275 -0
- data/spec/mongo/grid/stream/write_spec.rb +440 -0
- data/spec/mongo/grid/stream_spec.rb +48 -0
- data/spec/mongo/gridfs_spec.rb +50 -0
- data/spec/mongo/index/view_spec.rb +41 -0
- data/spec/mongo/logger_spec.rb +0 -40
- data/spec/mongo/monitoring/command_log_subscriber_spec.rb +76 -0
- data/spec/mongo/monitoring/event/command_started_spec.rb +26 -0
- data/spec/mongo/monitoring/event/command_succeeded_spec.rb +26 -0
- data/spec/mongo/monitoring/event/secure_spec.rb +57 -0
- data/spec/mongo/operation/{aggregate → commands/aggregate}/result_spec.rb +1 -1
- data/spec/mongo/operation/commands/aggregate_spec.rb +69 -0
- data/spec/mongo/operation/{read → commands}/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/{command_spec.rb → commands/command_spec.rb} +1 -19
- data/spec/mongo/operation/{read → commands}/indexes_spec.rb +1 -1
- data/spec/mongo/operation/{map_reduce_spec.rb → commands/map_reduce_spec.rb} +1 -19
- data/spec/mongo/operation/kill_cursors_spec.rb +1 -17
- data/spec/mongo/operation/read/get_more_spec.rb +0 -16
- data/spec/mongo/operation/read/query_spec.rb +19 -16
- data/spec/mongo/operation/{read_preferrable_spec.rb → read_preference_spec.rb} +11 -11
- data/spec/mongo/operation/result_spec.rb +19 -0
- data/spec/mongo/operation/write/bulk/{bulk_delete_spec.rb → delete_spec.rb} +17 -28
- data/spec/mongo/operation/write/bulk/{bulk_insert_spec.rb → insert_spec.rb} +1 -12
- data/spec/mongo/operation/write/bulk/{bulk_update_spec.rb → update_spec.rb} +7 -18
- data/spec/mongo/operation/write/command/delete_spec.rb +18 -9
- data/spec/mongo/operation/write/command/insert_spec.rb +18 -9
- data/spec/mongo/operation/write/command/update_spec.rb +18 -9
- data/spec/mongo/operation/write/delete_spec.rb +3 -3
- data/spec/mongo/operation/write/insert_spec.rb +0 -11
- data/spec/mongo/operation/write/update_spec.rb +6 -6
- data/spec/mongo/options/redacted_spec.rb +350 -0
- data/spec/mongo/protocol/delete_spec.rb +4 -4
- data/spec/mongo/protocol/get_more_spec.rb +4 -4
- data/spec/mongo/protocol/insert_spec.rb +3 -3
- data/spec/mongo/protocol/kill_cursors_spec.rb +8 -6
- data/spec/mongo/protocol/query_spec.rb +21 -7
- data/spec/mongo/protocol/update_spec.rb +5 -5
- data/spec/mongo/retryable_spec.rb +221 -0
- data/spec/mongo/server/connection_pool/queue_spec.rb +16 -0
- data/spec/mongo/server/connection_pool_spec.rb +42 -6
- data/spec/mongo/server/connection_spec.rb +86 -1
- data/spec/mongo/server/description/features_spec.rb +25 -0
- data/spec/mongo/server/description_spec.rb +42 -0
- data/spec/mongo/server/monitor_spec.rb +44 -0
- data/spec/mongo/server_discovery_and_monitoring_spec.rb +25 -59
- data/spec/mongo/server_selection_rtt_spec.rb +37 -57
- data/spec/mongo/server_selection_spec.rb +5 -3
- data/spec/mongo/server_selector/nearest_spec.rb +35 -27
- data/spec/mongo/server_selector/primary_preferred_spec.rb +32 -30
- data/spec/mongo/server_selector/primary_spec.rb +21 -14
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +28 -26
- data/spec/mongo/server_selector/secondary_spec.rb +24 -22
- data/spec/mongo/server_selector_spec.rb +87 -24
- data/spec/mongo/server_spec.rb +78 -15
- data/spec/mongo/socket/ssl_spec.rb +101 -57
- data/spec/mongo/socket/unix_spec.rb +52 -0
- data/spec/mongo/uri_spec.rb +271 -59
- data/spec/mongo/write_concern_spec.rb +126 -0
- data/spec/spec_helper.rb +29 -23
- data/spec/support/authorization.rb +4 -5
- data/spec/support/command_monitoring/bulkWrite.yml +73 -0
- data/spec/support/command_monitoring/command.yml +42 -0
- data/spec/support/command_monitoring/deleteMany.yml +55 -0
- data/spec/support/command_monitoring/deleteOne.yml +55 -0
- data/spec/support/command_monitoring/find.yml +268 -0
- data/spec/support/command_monitoring/insertMany.yml +81 -0
- data/spec/support/command_monitoring/insertOne.yml +51 -0
- data/spec/support/command_monitoring/updateMany.yml +67 -0
- data/spec/support/command_monitoring/updateOne.yml +95 -0
- data/spec/support/command_monitoring.rb +373 -0
- data/spec/support/connection_string.rb +228 -0
- data/spec/support/connection_string_tests/invalid-uris.yml +193 -0
- data/spec/support/connection_string_tests/valid-auth.yml +256 -0
- data/spec/support/connection_string_tests/valid-host_identifiers.yml +121 -0
- data/spec/support/connection_string_tests/valid-options.yml +30 -0
- data/spec/support/connection_string_tests/valid-unix_socket-absolute.yml +197 -0
- data/spec/support/connection_string_tests/valid-unix_socket-relative.yml +213 -0
- data/spec/support/connection_string_tests/valid-warnings.yml +55 -0
- data/spec/support/crud/read.rb +14 -10
- data/spec/support/crud/write.rb +36 -9
- data/spec/support/crud.rb +10 -2
- data/spec/support/gridfs.rb +637 -0
- data/spec/support/gridfs_tests/delete.yml +157 -0
- data/spec/support/gridfs_tests/download.yml +210 -0
- data/spec/support/gridfs_tests/download_by_name.yml +113 -0
- data/spec/support/gridfs_tests/upload.yml +158 -0
- data/spec/support/matchers.rb +2 -2
- data/spec/support/sdam/rs/equal_electionids.yml +1 -2
- data/spec/support/sdam/rs/new_primary_new_electionid.yml +0 -3
- data/spec/support/sdam/rs/primary_mismatched_me.yml +37 -0
- data/spec/support/sdam/rs/primary_to_no_primary_mismatched_me.yml +75 -0
- data/spec/support/sdam/rs/rsother_discovered.yml +24 -3
- data/spec/support/sdam/rs/secondary_mismatched_me.yml +37 -0
- data/spec/support/sdam/rs/stepdown_change_set_name.yml +59 -0
- data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_slave.yml +1 -1
- data/spec/support/sdam/single/direct_connection_standalone.yml +1 -1
- data/spec/support/sdam/single/not_ok_response.yml +0 -1
- data/spec/support/server_discovery_and_monitoring.rb +3 -1
- data/spec/support/server_selection.rb +3 -1
- data/spec/support/shared/bulk_write.rb +192 -0
- data/spec/support/shared/protocol.rb +5 -5
- data/spec/support/shared/server_selector.rb +78 -13
- data/spec/support/travis.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +211 -72
- metadata.gz.sig +0 -0
- data/lib/mongo/bulk_write/bulk_writable.rb +0 -252
- data/lib/mongo/bulk_write/deletable.rb +0 -57
- data/lib/mongo/bulk_write/insertable.rb +0 -49
- data/lib/mongo/bulk_write/replacable.rb +0 -58
- data/lib/mongo/bulk_write/updatable.rb +0 -69
- data/lib/mongo/grid/fs.rb +0 -146
- data/lib/mongo/operation/aggregate/result.rb +0 -103
- data/lib/mongo/operation/aggregate.rb +0 -108
- data/lib/mongo/operation/command.rb +0 -61
- data/lib/mongo/operation/map_reduce/result.rb +0 -122
- data/lib/mongo/operation/map_reduce.rb +0 -95
- data/lib/mongo/operation/parallel_scan/result.rb +0 -72
- data/lib/mongo/operation/parallel_scan.rb +0 -76
- data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +0 -75
- data/lib/mongo/operation/write/bulk/bulk_delete.rb +0 -145
- data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +0 -130
- data/lib/mongo/operation/write/bulk/bulk_insert.rb +0 -132
- data/lib/mongo/operation/write/bulk/bulk_mergable.rb +0 -67
- data/lib/mongo/operation/write/bulk/bulk_update/result.rb +0 -174
- data/lib/mongo/operation/write/bulk/bulk_update.rb +0 -154
- data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +0 -83
- data/spec/mongo/grid/fs_spec.rb +0 -160
- data/spec/mongo/loggable_spec.rb +0 -63
- data/spec/mongo/operation/aggregate_spec.rb +0 -127
data/lib/mongo/uri.rb
CHANGED
@@ -12,6 +12,8 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
+
require 'uri'
|
16
|
+
|
15
17
|
module Mongo
|
16
18
|
|
17
19
|
# The URI class provides a way for users to parse the MongoDB uri as
|
@@ -29,58 +31,116 @@ module Mongo
|
|
29
31
|
class URI
|
30
32
|
include Loggable
|
31
33
|
|
32
|
-
#
|
34
|
+
# The uri parser object options.
|
33
35
|
#
|
34
36
|
# @since 2.0.0
|
35
|
-
|
37
|
+
attr_reader :options
|
36
38
|
|
37
|
-
#
|
39
|
+
# The options specified in the uri.
|
38
40
|
#
|
39
|
-
# @since 2.
|
40
|
-
|
41
|
+
# @since 2.1.0
|
42
|
+
attr_reader :uri_options
|
41
43
|
|
42
|
-
#
|
44
|
+
# The servers specified in the uri.
|
43
45
|
#
|
44
46
|
# @since 2.0.0
|
45
|
-
|
47
|
+
attr_reader :servers
|
46
48
|
|
47
|
-
#
|
49
|
+
# Unsafe characters that must be urlencoded.
|
48
50
|
#
|
49
|
-
# @since 2.
|
50
|
-
|
51
|
+
# @since 2.1.0
|
52
|
+
UNSAFE = /[\:\/\+\@]/
|
51
53
|
|
52
|
-
#
|
54
|
+
# Unix socket suffix.
|
53
55
|
#
|
54
|
-
# @since 2.
|
55
|
-
|
56
|
+
# @since 2.1.0
|
57
|
+
UNIX_SOCKET = /.sock/
|
56
58
|
|
57
|
-
#
|
59
|
+
# The mongodb connection string scheme.
|
58
60
|
#
|
59
61
|
# @since 2.0.0
|
60
|
-
|
62
|
+
SCHEME = 'mongodb://'.freeze
|
61
63
|
|
62
|
-
#
|
64
|
+
# The character delimiting hosts.
|
63
65
|
#
|
64
|
-
# @since 2.
|
65
|
-
|
66
|
+
# @since 2.1.0
|
67
|
+
HOST_DELIM = ','.freeze
|
66
68
|
|
67
|
-
#
|
68
|
-
# be part of any MongoDB database name.
|
69
|
+
# The character separating a host and port.
|
69
70
|
#
|
70
|
-
# @since 2.
|
71
|
-
|
71
|
+
# @since 2.1.0
|
72
|
+
HOST_PORT_DELIM = ':'.freeze
|
72
73
|
|
73
|
-
#
|
74
|
-
# not allow for semicolon to be used to separate options.
|
74
|
+
# The character delimiting a database.
|
75
75
|
#
|
76
|
-
# @since 2.
|
77
|
-
|
76
|
+
# @since 2.1.0
|
77
|
+
DATABASE_DELIM = '/'.freeze
|
78
78
|
|
79
|
-
#
|
79
|
+
# The character delimiting options.
|
80
80
|
#
|
81
|
-
# @since 2.
|
82
|
-
|
81
|
+
# @since 2.1.0
|
82
|
+
URI_OPTS_DELIM = '?'.freeze
|
83
|
+
|
84
|
+
# The character delimiting multiple options.
|
85
|
+
#
|
86
|
+
# @since 2.1.0
|
87
|
+
INDIV_URI_OPTS_DELIM = '&'.freeze
|
88
|
+
|
89
|
+
# The character delimiting an option and its value.
|
90
|
+
#
|
91
|
+
# @since 2.1.0
|
92
|
+
URI_OPTS_VALUE_DELIM = '='.freeze
|
93
|
+
|
94
|
+
# The character separating a username from the password.
|
95
|
+
#
|
96
|
+
# @since 2.1.0
|
97
|
+
AUTH_USER_PWD_DELIM = ':'.freeze
|
83
98
|
|
99
|
+
# The character delimiting auth credentials.
|
100
|
+
#
|
101
|
+
# @since 2.1.0
|
102
|
+
AUTH_DELIM = '@'.freeze
|
103
|
+
|
104
|
+
# Error details for an invalid scheme.
|
105
|
+
#
|
106
|
+
# @since 2.1.0
|
107
|
+
INVALID_SCHEME = "Invalid scheme. Scheme must be '#{SCHEME}'".freeze
|
108
|
+
|
109
|
+
# Error details for an invalid options format.
|
110
|
+
#
|
111
|
+
# @since 2.1.0
|
112
|
+
INVALID_OPTS_VALUE_DELIM = "Options and their values must be delimited" +
|
113
|
+
" by '#{URI_OPTS_VALUE_DELIM}'".freeze
|
114
|
+
|
115
|
+
# Error details for an non-urlencoded user name or password.
|
116
|
+
#
|
117
|
+
# @since 2.1.0
|
118
|
+
UNESCAPED_USER_PWD = "User name and password must be urlencoded.".freeze
|
119
|
+
|
120
|
+
# Error details for a non-urlencoded unix socket path.
|
121
|
+
#
|
122
|
+
# @since 2.1.0
|
123
|
+
UNESCAPED_UNIX_SOCKET = "UNIX domain sockets must be urlencoded.".freeze
|
124
|
+
|
125
|
+
# Error details for a non-urlencoded auth databsae name.
|
126
|
+
#
|
127
|
+
# @since 2.1.0
|
128
|
+
UNESCAPED_DATABASE = "Auth database must be urlencoded.".freeze
|
129
|
+
|
130
|
+
# Error details for providing options without a database delimiter.
|
131
|
+
#
|
132
|
+
# @since 2.1.0
|
133
|
+
INVALID_OPTS_DELIM = "Database delimiter '#{DATABASE_DELIM}' must be present if options are specified.".freeze
|
134
|
+
|
135
|
+
# Error details for a missing host.
|
136
|
+
#
|
137
|
+
# @since 2.1.0
|
138
|
+
INVALID_HOST = "Missing host; at least one must be provided.".freeze
|
139
|
+
|
140
|
+
# Error details for an invalid port.
|
141
|
+
#
|
142
|
+
# @since 2.1.0
|
143
|
+
INVALID_PORT = "Invalid port. Port must be an integer greater than 0 and less than 65536".freeze
|
84
144
|
|
85
145
|
# MongoDB URI format specification.
|
86
146
|
#
|
@@ -113,32 +173,28 @@ module Mongo
|
|
113
173
|
'GSSAPI' => :gssapi
|
114
174
|
}.freeze
|
115
175
|
|
176
|
+
# Options that are allowed to appear more than once in the uri.
|
177
|
+
#
|
178
|
+
# @since 2.1.0
|
179
|
+
REPEATABLE_OPTIONS = [ :tag_sets ]
|
180
|
+
|
116
181
|
# Create the new uri from the provided string.
|
117
182
|
#
|
118
183
|
# @example Create the new URI.
|
119
184
|
# URI.new('mongodb://localhost:27017')
|
120
185
|
#
|
121
186
|
# @param [ String ] string The uri string.
|
187
|
+
# @param [ Hash ] options The options.
|
122
188
|
#
|
123
|
-
# @raise [
|
189
|
+
# @raise [ Error::InvalidURI ] If the uri does not match the spec.
|
124
190
|
#
|
125
191
|
# @since 2.0.0
|
126
|
-
def initialize(string)
|
192
|
+
def initialize(string, options = {})
|
127
193
|
@string = string
|
128
|
-
@
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
# Get the servers provided in the URI.
|
133
|
-
#
|
134
|
-
# @example Get the servers.
|
135
|
-
# uri.servers
|
136
|
-
#
|
137
|
-
# @return [ Array<String> ] The servers.
|
138
|
-
#
|
139
|
-
# @since 2.0.0
|
140
|
-
def servers
|
141
|
-
@match[3].split(',')
|
194
|
+
@options = options
|
195
|
+
empty, scheme, remaining = @string.partition(SCHEME)
|
196
|
+
raise_invalid_error!(INVALID_SCHEME) unless scheme == SCHEME
|
197
|
+
setup!(remaining)
|
142
198
|
end
|
143
199
|
|
144
200
|
# Gets the options hash that needs to be passed to a Mongo::Client on
|
@@ -152,8 +208,8 @@ module Mongo
|
|
152
208
|
#
|
153
209
|
# @since 2.0.0
|
154
210
|
def client_options
|
155
|
-
opts =
|
156
|
-
user ? opts.merge(credentials) : opts
|
211
|
+
opts = uri_options.merge(:database => database)
|
212
|
+
@user ? opts.merge(credentials) : opts
|
157
213
|
end
|
158
214
|
|
159
215
|
# Get the credentials provided in the URI.
|
@@ -167,7 +223,7 @@ module Mongo
|
|
167
223
|
#
|
168
224
|
# @since 2.0.0
|
169
225
|
def credentials
|
170
|
-
{ :user => user, :password => password }
|
226
|
+
{ :user => @user, :password => @password }
|
171
227
|
end
|
172
228
|
|
173
229
|
# Get the database provided in the URI.
|
@@ -179,115 +235,161 @@ module Mongo
|
|
179
235
|
#
|
180
236
|
# @since 2.0.0
|
181
237
|
def database
|
182
|
-
@
|
238
|
+
@database ? @database : Database::ADMIN
|
183
239
|
end
|
184
240
|
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
def
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
241
|
+
private
|
242
|
+
|
243
|
+
def setup!(remaining)
|
244
|
+
creds_hosts, db_opts = extract_db_opts!(remaining)
|
245
|
+
parse_creds_hosts!(creds_hosts)
|
246
|
+
parse_db_opts!(db_opts)
|
247
|
+
end
|
248
|
+
|
249
|
+
def extract_db_opts!(string)
|
250
|
+
db_opts, d, creds_hosts = string.reverse.partition(DATABASE_DELIM)
|
251
|
+
db_opts, creds_hosts = creds_hosts, db_opts if creds_hosts.empty?
|
252
|
+
if db_opts.empty? && creds_hosts.include?(URI_OPTS_DELIM)
|
253
|
+
raise_invalid_error!(INVALID_OPTS_DELIM)
|
254
|
+
end
|
255
|
+
[ creds_hosts, db_opts ].map { |s| s.reverse }
|
256
|
+
end
|
257
|
+
|
258
|
+
def parse_creds_hosts!(string)
|
259
|
+
hosts, creds = split_creds_hosts(string)
|
260
|
+
@servers = parse_servers!(hosts)
|
261
|
+
@user = parse_user!(creds)
|
262
|
+
@password = parse_password!(creds)
|
263
|
+
end
|
264
|
+
|
265
|
+
def split_creds_hosts(string)
|
266
|
+
hosts, d, creds = string.reverse.partition(AUTH_DELIM)
|
267
|
+
hosts, creds = creds, hosts if hosts.empty?
|
268
|
+
[ hosts, creds ].map { |s| s.reverse }
|
269
|
+
end
|
270
|
+
|
271
|
+
def parse_db_opts!(string)
|
272
|
+
auth_db, d, uri_opts = string.partition(URI_OPTS_DELIM)
|
273
|
+
@uri_options = Options::Redacted.new(parse_uri_options!(uri_opts))
|
274
|
+
@database = parse_database!(auth_db)
|
275
|
+
end
|
276
|
+
|
277
|
+
def parse_uri_options!(string)
|
278
|
+
return {} unless string
|
279
|
+
string.split(INDIV_URI_OPTS_DELIM).reduce({}) do |uri_options, opt|
|
280
|
+
raise_invalid_error!(INVALID_OPTS_VALUE_DELIM) unless opt.index(URI_OPTS_VALUE_DELIM)
|
281
|
+
key, value = opt.split(URI_OPTS_VALUE_DELIM)
|
282
|
+
strategy = URI_OPTION_MAP[key.downcase]
|
215
283
|
if strategy.nil?
|
216
|
-
log_warn(
|
217
|
-
"Unsupported URI option '#{key}' on URI '#{@string}'. It will be ignored."
|
218
|
-
])
|
284
|
+
log_warn("Unsupported URI option '#{key}' on URI '#{@string}'. It will be ignored.")
|
219
285
|
else
|
220
|
-
|
286
|
+
add_uri_option(strategy, value, uri_options)
|
221
287
|
end
|
222
|
-
|
288
|
+
uri_options
|
223
289
|
end
|
224
290
|
end
|
225
291
|
|
226
|
-
|
292
|
+
def parse_user!(string)
|
293
|
+
if (string && user = string.partition(AUTH_USER_PWD_DELIM)[0])
|
294
|
+
raise_invalid_error!(UNESCAPED_USER_PWD) if user =~ UNSAFE
|
295
|
+
decode(user) if user.length > 0
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
def parse_password!(string)
|
300
|
+
if (string && pwd = string.partition(AUTH_USER_PWD_DELIM)[2])
|
301
|
+
raise_invalid_error!(UNESCAPED_USER_PWD) if pwd =~ UNSAFE
|
302
|
+
decode(pwd) if pwd.length > 0
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
def parse_database!(string)
|
307
|
+
raise_invalid_error!(UNESCAPED_DATABASE) if string =~ UNSAFE
|
308
|
+
decode(string) if string.length > 0
|
309
|
+
end
|
310
|
+
|
311
|
+
def validate_port_string!(port)
|
312
|
+
unless port.nil? || (port.length > 0 && port.to_i > 0 && port.to_i <= 65535)
|
313
|
+
raise_invalid_error!(INVALID_PORT)
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
def parse_servers!(string)
|
318
|
+
raise_invalid_error!(INVALID_HOST) unless string.size > 0
|
319
|
+
string.split(HOST_DELIM).reduce([]) do |servers, host|
|
320
|
+
if host[0] == '['
|
321
|
+
if host.index(']:')
|
322
|
+
h, p = host.split(']:')
|
323
|
+
validate_port_string!(p)
|
324
|
+
end
|
325
|
+
elsif host.index(HOST_PORT_DELIM)
|
326
|
+
h, d, p = host.partition(HOST_PORT_DELIM)
|
327
|
+
raise_invalid_error!(INVALID_HOST) unless h.size > 0
|
328
|
+
validate_port_string!(p)
|
329
|
+
elsif host =~ UNIX_SOCKET
|
330
|
+
raise_invalid_error!(UNESCAPED_UNIX_SOCKET) if host =~ UNSAFE
|
331
|
+
end
|
332
|
+
servers << host
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
def raise_invalid_error!(details)
|
337
|
+
raise Error::InvalidURI.new(@string, details)
|
338
|
+
end
|
339
|
+
|
340
|
+
def decode(value)
|
341
|
+
::URI.decode(value)
|
342
|
+
end
|
227
343
|
|
228
344
|
# Hash for storing map of URI option parameters to conversion strategies
|
229
|
-
|
345
|
+
URI_OPTION_MAP = {}
|
230
346
|
|
231
|
-
# Simple internal dsl to register a MongoDB URI option in the
|
347
|
+
# Simple internal dsl to register a MongoDB URI option in the URI_OPTION_MAP.
|
232
348
|
#
|
233
349
|
# @param uri_key [String] The MongoDB URI option to register.
|
234
350
|
# @param name [Symbol] The name of the option in the driver.
|
235
351
|
# @param extra [Hash] Extra options.
|
236
352
|
# * :group [Symbol] Nested hash where option will go.
|
237
353
|
# * :type [Symbol] Name of function to transform value.
|
238
|
-
def self.
|
239
|
-
|
354
|
+
def self.uri_option(uri_key, name, extra = {})
|
355
|
+
URI_OPTION_MAP[uri_key] = { :name => name }.merge(extra)
|
240
356
|
end
|
241
357
|
|
242
358
|
# Replica Set Options
|
243
|
-
|
359
|
+
uri_option 'replicaset', :replica_set, :type => :replica_set
|
244
360
|
|
245
361
|
# Timeout Options
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
362
|
+
uri_option 'connecttimeoutms', :connect_timeout, :type => :ms_convert
|
363
|
+
uri_option 'sockettimeoutms', :socket_timeout, :type => :ms_convert
|
364
|
+
uri_option 'serverselectiontimeoutms', :server_selection_timeout, :type => :ms_convert
|
365
|
+
uri_option 'localthresholdms', :local_threshold, :type => :ms_convert
|
250
366
|
|
251
367
|
# Write Options
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
368
|
+
uri_option 'w', :w, :group => :write
|
369
|
+
uri_option 'journal', :j, :group => :write
|
370
|
+
uri_option 'fsync', :fsync, :group => :write
|
371
|
+
uri_option 'wtimeoutms', :timeout, :group => :write
|
256
372
|
|
257
373
|
# Read Options
|
258
|
-
|
259
|
-
|
374
|
+
uri_option 'readpreference', :mode, :group => :read, :type => :read_mode
|
375
|
+
uri_option 'readpreferencetags', :tag_sets, :group => :read, :type => :read_tags
|
260
376
|
|
261
377
|
# Pool options
|
262
|
-
|
263
|
-
|
264
|
-
|
378
|
+
uri_option 'minpoolsize', :min_pool_size
|
379
|
+
uri_option 'maxpoolsize', :max_pool_size
|
380
|
+
uri_option 'waitqueuetimeoutms', :wait_queue_timeout, :type => :ms_convert
|
265
381
|
|
266
382
|
# Security Options
|
267
|
-
|
383
|
+
uri_option 'ssl', :ssl
|
268
384
|
|
269
385
|
# Topology options
|
270
|
-
|
386
|
+
uri_option 'connect', :connect
|
271
387
|
|
272
388
|
# Auth Options
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
# Gets the user provided in the URI
|
279
|
-
#
|
280
|
-
# @return [String] The user.
|
281
|
-
def user
|
282
|
-
@match[1]
|
283
|
-
end
|
284
|
-
|
285
|
-
# Gets the password provided in the URI
|
286
|
-
#
|
287
|
-
# @return [String] The password.
|
288
|
-
def password
|
289
|
-
@match[2]
|
290
|
-
end
|
389
|
+
uri_option 'authsource', :source, :group => :auth, :type => :auth_source
|
390
|
+
uri_option 'authmechanism', :auth_mech, :type => :auth_mech
|
391
|
+
uri_option 'authmechanismproperties', :auth_mech_properties, :group => :auth,
|
392
|
+
:type => :auth_mech_props
|
291
393
|
|
292
394
|
# Casts option values that do not have a specifically provided
|
293
395
|
# transofrmation to the appropriate type.
|
@@ -303,7 +405,7 @@ module Mongo
|
|
303
405
|
elsif value =~ /[\d]/
|
304
406
|
value.to_i
|
305
407
|
else
|
306
|
-
value.to_sym
|
408
|
+
decode(value).to_sym
|
307
409
|
end
|
308
410
|
end
|
309
411
|
|
@@ -322,15 +424,15 @@ module Mongo
|
|
322
424
|
|
323
425
|
# Selects the output destination for an option.
|
324
426
|
#
|
325
|
-
# @param
|
326
|
-
# @param
|
427
|
+
# @param [Hash] uri_options The base target.
|
428
|
+
# @param [Symbol] group Group subtarget.
|
327
429
|
#
|
328
430
|
# @return [Hash] The target for the option.
|
329
|
-
def select_target(
|
431
|
+
def select_target(uri_options, group = nil)
|
330
432
|
if group
|
331
|
-
|
433
|
+
uri_options[group] ||= {}
|
332
434
|
else
|
333
|
-
|
435
|
+
uri_options
|
334
436
|
end
|
335
437
|
end
|
336
438
|
|
@@ -345,15 +447,19 @@ module Mongo
|
|
345
447
|
# @param target [Hash] The destination.
|
346
448
|
# @param value [Object] The value to be merged.
|
347
449
|
# @param name [Symbol] The name of the option.
|
348
|
-
def
|
450
|
+
def merge_uri_option(target, value, name)
|
349
451
|
if target.key?(name)
|
350
|
-
|
452
|
+
if REPEATABLE_OPTIONS.include?(name)
|
453
|
+
target[name] += value
|
454
|
+
else
|
455
|
+
log_warn("Repeated option key: #{name}.")
|
456
|
+
end
|
351
457
|
else
|
352
458
|
target.merge!(name => value)
|
353
459
|
end
|
354
460
|
end
|
355
461
|
|
356
|
-
# Adds an option to the options hash via the supplied strategy.
|
462
|
+
# Adds an option to the uri options hash via the supplied strategy.
|
357
463
|
#
|
358
464
|
# Acquires a target for the option based on group.
|
359
465
|
# Transforms the value.
|
@@ -361,11 +467,11 @@ module Mongo
|
|
361
467
|
#
|
362
468
|
# @param strategy [Symbol] The strategy for this option.
|
363
469
|
# @param value [String] The value of the option.
|
364
|
-
# @param
|
365
|
-
def
|
366
|
-
target = select_target(
|
470
|
+
# @param uri_options [Hash] The base option target.
|
471
|
+
def add_uri_option(strategy, value, uri_options)
|
472
|
+
target = select_target(uri_options, strategy[:group])
|
367
473
|
value = apply_transform(value, strategy[:type])
|
368
|
-
|
474
|
+
merge_uri_option(target, value, strategy[:name])
|
369
475
|
end
|
370
476
|
|
371
477
|
# Replica set transformation, avoid converting to Symbol.
|
@@ -374,7 +480,7 @@ module Mongo
|
|
374
480
|
#
|
375
481
|
# @return [String] Same value to avoid cast to Symbol.
|
376
482
|
def replica_set(value)
|
377
|
-
value
|
483
|
+
decode(value)
|
378
484
|
end
|
379
485
|
|
380
486
|
# Auth source transformation, either db string or :external.
|
@@ -384,7 +490,7 @@ module Mongo
|
|
384
490
|
# @return [String] If auth source is database name.
|
385
491
|
# @return [:external] If auth source is external authentication.
|
386
492
|
def auth_source(value)
|
387
|
-
value == '$external' ? :external : value
|
493
|
+
value == '$external' ? :external : decode(value)
|
388
494
|
end
|
389
495
|
|
390
496
|
# Authentication mechanism transformation.
|
@@ -458,7 +564,7 @@ module Mongo
|
|
458
564
|
def hash_extractor(value)
|
459
565
|
value.split(',').reduce({}) do |set, tag|
|
460
566
|
k, v = tag.split(':')
|
461
|
-
set.merge(k.downcase.to_sym => v)
|
567
|
+
set.merge(decode(k).downcase.to_sym => decode(v))
|
462
568
|
end
|
463
569
|
end
|
464
570
|
end
|
data/lib/mongo/version.rb
CHANGED
data/lib/mongo/write_concern.rb
CHANGED
@@ -52,7 +52,7 @@ module Mongo
|
|
52
52
|
# The default write concern is to acknowledge on a single server.
|
53
53
|
#
|
54
54
|
# @since 2.0.0
|
55
|
-
DEFAULT = {
|
55
|
+
DEFAULT = { }.freeze
|
56
56
|
|
57
57
|
# Get a write concern mode for the provided options.
|
58
58
|
#
|
@@ -72,17 +72,32 @@ module Mongo
|
|
72
72
|
#
|
73
73
|
# @return [ Unacknowledged, Acknowledged ] The appropriate concern.
|
74
74
|
#
|
75
|
+
# @raise [ Error::InvalidWriteConcern ] If the write concern is invalid.
|
76
|
+
#
|
75
77
|
# @since 2.0.0
|
76
78
|
def get(options)
|
77
|
-
if
|
78
|
-
|
79
|
-
|
80
|
-
|
79
|
+
if options
|
80
|
+
validate!(options)
|
81
|
+
if unacknowledged?(options)
|
82
|
+
Unacknowledged.new(options)
|
83
|
+
else
|
84
|
+
Acknowledged.new(options)
|
85
|
+
end
|
81
86
|
end
|
82
87
|
end
|
83
88
|
|
84
89
|
private
|
85
90
|
|
91
|
+
def validate!(options)
|
92
|
+
if options[W]
|
93
|
+
if options[W] == 0 && (options[J] || options[FSYNC])
|
94
|
+
raise Mongo::Error::InvalidWriteConcern.new
|
95
|
+
elsif options[W].is_a?(Integer) && options[W] < 0
|
96
|
+
raise Mongo::Error::InvalidWriteConcern.new
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
86
101
|
# Determine if the options are for an unacknowledged write concern.
|
87
102
|
#
|
88
103
|
# @api private
|
@@ -93,7 +108,7 @@ module Mongo
|
|
93
108
|
#
|
94
109
|
# @since 2.0.0
|
95
110
|
def unacknowledged?(options)
|
96
|
-
options
|
111
|
+
options[W] == 0
|
97
112
|
end
|
98
113
|
end
|
99
114
|
end
|
data/lib/mongo.rb
CHANGED
@@ -15,14 +15,16 @@
|
|
15
15
|
require 'forwardable'
|
16
16
|
require 'bson'
|
17
17
|
require 'openssl'
|
18
|
-
require 'mongo/
|
18
|
+
require 'mongo/options'
|
19
19
|
require 'mongo/loggable'
|
20
|
+
require 'mongo/monitoring'
|
20
21
|
require 'mongo/logger'
|
22
|
+
require 'mongo/retryable'
|
23
|
+
require 'mongo/operation'
|
21
24
|
require 'mongo/error'
|
22
25
|
require 'mongo/event'
|
23
26
|
require 'mongo/address'
|
24
27
|
require 'mongo/auth'
|
25
|
-
require 'mongo/bulk_write'
|
26
28
|
require 'mongo/client'
|
27
29
|
require 'mongo/cluster'
|
28
30
|
require 'mongo/collection'
|
@@ -31,8 +33,6 @@ require 'mongo/database'
|
|
31
33
|
require 'mongo/dbref'
|
32
34
|
require 'mongo/grid'
|
33
35
|
require 'mongo/index'
|
34
|
-
require 'mongo/operation'
|
35
|
-
require 'mongo/options'
|
36
36
|
require 'mongo/protocol'
|
37
37
|
require 'mongo/server'
|
38
38
|
require 'mongo/server_selector'
|
data/mongo.gemspec
CHANGED
@@ -4,7 +4,6 @@ require 'mongo/version'
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'mongo'
|
7
|
-
s.rubyforge_project = 'mongo'
|
8
7
|
s.version = Mongo::VERSION
|
9
8
|
s.platform = Gem::Platform::RUBY
|
10
9
|
|
@@ -30,5 +29,5 @@ Gem::Specification.new do |s|
|
|
30
29
|
s.has_rdoc = 'yard'
|
31
30
|
s.bindir = 'bin'
|
32
31
|
|
33
|
-
s.add_dependency 'bson', '~>
|
32
|
+
s.add_dependency 'bson', '~> 4.0'
|
34
33
|
end
|