mongo 1.12.5 → 2.0.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/CONTRIBUTING.md +64 -0
- data/LICENSE +1 -1
- data/README.md +21 -126
- data/Rakefile +39 -21
- data/bin/mongo_console +6 -38
- data/lib/mongo/address/ipv4.rb +85 -0
- data/lib/mongo/address/ipv6.rb +85 -0
- data/lib/mongo/address/unix.rb +76 -0
- data/lib/mongo/address.rb +111 -0
- data/lib/mongo/auth/cr/conversation.rb +119 -0
- data/lib/mongo/auth/cr.rb +44 -0
- data/lib/mongo/auth/executable.rb +52 -0
- data/lib/mongo/auth/ldap/conversation.rb +92 -0
- data/lib/mongo/auth/ldap.rb +48 -0
- data/lib/mongo/auth/roles.rb +104 -0
- data/lib/mongo/auth/scram/conversation.rb +450 -0
- data/lib/mongo/auth/scram.rb +53 -0
- data/lib/mongo/auth/user/view.rb +102 -0
- data/lib/mongo/auth/user.rb +159 -0
- data/lib/mongo/auth/x509/conversation.rb +92 -0
- data/lib/mongo/auth/x509.rb +48 -0
- data/lib/mongo/auth.rb +108 -0
- data/lib/mongo/bulk_write/bulk_writable.rb +191 -0
- data/lib/mongo/bulk_write/deletable.rb +60 -0
- data/lib/mongo/bulk_write/insertable.rb +52 -0
- data/lib/mongo/bulk_write/ordered_bulk_write.rb +48 -0
- data/lib/mongo/bulk_write/replacable.rb +57 -0
- data/lib/mongo/bulk_write/unordered_bulk_write.rb +46 -0
- data/lib/mongo/bulk_write/updatable.rb +68 -0
- data/lib/mongo/bulk_write.rb +52 -0
- data/lib/mongo/client.rb +246 -0
- data/lib/mongo/cluster/topology/replica_set.rb +160 -0
- data/lib/mongo/cluster/topology/sharded.rb +132 -0
- data/lib/mongo/cluster/topology/standalone.rb +132 -0
- data/lib/mongo/cluster/topology/unknown.rb +155 -0
- data/lib/mongo/cluster/topology.rb +60 -0
- data/lib/mongo/cluster.rb +203 -0
- data/lib/mongo/collection/view/aggregation.rb +108 -0
- data/lib/mongo/collection/view/explainable.rb +49 -0
- data/lib/mongo/collection/view/immutable.rb +43 -0
- data/lib/mongo/collection/view/iterable.rb +48 -0
- data/lib/mongo/collection/view/map_reduce.rb +191 -0
- data/lib/mongo/collection/view/readable.rb +363 -0
- data/lib/mongo/collection/view/writable.rb +185 -0
- data/lib/mongo/collection/view.rb +169 -0
- data/lib/mongo/collection.rb +130 -1101
- data/lib/mongo/cursor.rb +78 -681
- data/lib/mongo/database/view.rb +101 -0
- data/lib/mongo/database.rb +224 -0
- data/lib/mongo/error/bulk_write_error.rb +41 -0
- data/lib/mongo/error/invalid_bulk_operation.rb +36 -0
- data/lib/mongo/error/invalid_bulk_operation_type.rb +36 -0
- data/lib/mongo/error/invalid_collection_name.rb +39 -0
- data/lib/mongo/error/invalid_database_name.rb +39 -0
- data/{test/replica_set/ssl_test.rb → lib/mongo/error/invalid_document.rb} +21 -14
- data/lib/mongo/error/invalid_file.rb +38 -0
- data/lib/mongo/error/invalid_nonce.rb +46 -0
- data/lib/mongo/error/invalid_replacement_document.rb +39 -0
- data/lib/mongo/error/invalid_signature.rb +47 -0
- data/{test/functional/ssl_test.rb → lib/mongo/error/invalid_update_document.rb} +22 -12
- data/lib/mongo/error/max_bson_size.rb +40 -0
- data/lib/mongo/error/max_message_size.rb +42 -0
- data/{test/functional/db_connection_test.rb → lib/mongo/error/multi_index_drop.rb} +17 -8
- data/lib/mongo/{utils.rb → error/need_primary_server.rb} +10 -6
- data/lib/mongo/{connection.rb → error/operation_failure.rb} +10 -6
- data/lib/mongo/error/parser.rb +77 -0
- data/lib/mongo/{connection/socket.rb → error/socket_error.rb} +10 -5
- data/lib/mongo/error/socket_timeout_error.rb +23 -0
- data/lib/mongo/error/unsupported_features.rb +43 -0
- data/lib/mongo/error.rb +82 -0
- data/lib/mongo/event/listeners.rb +63 -0
- data/lib/mongo/event/primary_elected.rb +53 -0
- data/lib/mongo/event/publisher.rb +42 -0
- data/lib/mongo/event/server_added.rb +53 -0
- data/lib/mongo/event/server_removed.rb +53 -0
- data/lib/mongo/event/subscriber.rb +41 -0
- data/lib/mongo/event.rb +40 -0
- data/lib/mongo/grid/file/chunk.rb +184 -0
- data/lib/mongo/grid/file/metadata.rb +229 -0
- data/lib/mongo/grid/file.rb +106 -0
- data/lib/mongo/grid/fs.rb +149 -0
- data/lib/mongo/{gridfs.rb → grid.rb} +3 -5
- data/lib/mongo/index/view.rb +261 -0
- data/lib/mongo/index.rb +64 -0
- data/lib/mongo/loggable.rb +126 -0
- data/lib/mongo/logger.rb +132 -0
- data/lib/mongo/operation/aggregate/result.rb +88 -0
- data/lib/mongo/operation/aggregate.rb +100 -0
- data/lib/mongo/operation/command.rb +62 -0
- data/lib/mongo/operation/executable.rb +105 -0
- data/lib/mongo/operation/kill_cursors.rb +39 -0
- data/lib/mongo/operation/limited.rb +37 -0
- data/lib/mongo/operation/list_collections/result.rb +114 -0
- data/lib/mongo/operation/list_indexes/result.rb +118 -0
- data/lib/mongo/operation/map_reduce/result.rb +122 -0
- data/lib/mongo/operation/map_reduce.rb +96 -0
- data/lib/mongo/operation/read/collections_info.rb +67 -0
- data/lib/mongo/operation/read/get_more.rb +71 -0
- data/lib/mongo/operation/read/indexes.rb +68 -0
- data/lib/mongo/operation/read/list_collections.rb +75 -0
- data/lib/mongo/operation/read/list_indexes.rb +77 -0
- data/lib/mongo/operation/read/query.rb +71 -0
- data/lib/mongo/{functional.rb → operation/read.rb} +7 -7
- data/lib/mongo/operation/read_preferrable.rb +34 -0
- data/lib/mongo/operation/result.rb +259 -0
- data/lib/mongo/operation/specifiable.rb +397 -0
- data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +75 -0
- data/lib/mongo/operation/write/bulk/bulk_delete.rb +144 -0
- data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +68 -0
- data/lib/mongo/operation/write/bulk/bulk_insert.rb +129 -0
- data/lib/mongo/operation/write/bulk/bulk_mergable.rb +67 -0
- data/lib/mongo/operation/write/bulk/bulk_update/result.rb +162 -0
- data/lib/mongo/operation/write/bulk/bulk_update.rb +153 -0
- data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +83 -0
- data/lib/mongo/operation/write/bulk.rb +17 -0
- data/lib/mongo/operation/write/command/create_index.rb +50 -0
- data/lib/mongo/operation/write/command/create_user.rb +43 -0
- data/lib/mongo/operation/write/command/delete.rb +56 -0
- data/lib/mongo/operation/write/command/drop_index.rb +51 -0
- data/lib/mongo/operation/write/command/insert.rb +55 -0
- data/lib/mongo/operation/write/command/remove_user.rb +42 -0
- data/lib/mongo/operation/write/command/update.rb +60 -0
- data/lib/mongo/operation/write/command/writable.rb +61 -0
- data/lib/mongo/operation/write/command.rb +22 -0
- data/lib/mongo/operation/write/create_index.rb +89 -0
- data/lib/mongo/operation/write/create_user.rb +75 -0
- data/lib/mongo/operation/write/delete/result.rb +40 -0
- data/lib/mongo/operation/write/delete.rb +93 -0
- data/lib/mongo/operation/write/drop_index.rb +62 -0
- data/lib/mongo/{utils/thread_local_variable_manager.rb → operation/write/insert/result.rb} +15 -8
- data/lib/mongo/operation/write/insert.rb +90 -0
- data/lib/mongo/operation/write/remove_user.rb +70 -0
- data/lib/mongo/operation/write/update/result.rb +160 -0
- data/lib/mongo/operation/write/update.rb +103 -0
- data/lib/mongo/{connection/socket/socket_util.rb → operation/write.rb} +10 -24
- data/lib/mongo/operation.rb +25 -0
- data/lib/mongo/options/mapper.rb +78 -0
- data/lib/mongo/options.rb +15 -0
- data/lib/mongo/protocol/bit_vector.rb +61 -0
- data/lib/mongo/protocol/delete.rb +94 -0
- data/lib/mongo/protocol/get_more.rb +99 -0
- data/lib/mongo/protocol/insert.rb +99 -0
- data/lib/mongo/protocol/kill_cursors.rb +74 -0
- data/lib/mongo/protocol/message.rb +252 -0
- data/lib/mongo/protocol/query.rb +147 -0
- data/lib/mongo/protocol/reply.rb +72 -0
- data/lib/mongo/protocol/serializers.rb +180 -0
- data/lib/mongo/protocol/update.rb +111 -0
- data/lib/mongo/protocol.rb +15 -0
- data/lib/mongo/server/connectable.rb +110 -0
- data/lib/mongo/server/connection.rb +134 -0
- data/lib/mongo/server/connection_pool/queue.rb +182 -0
- data/lib/mongo/server/connection_pool.rb +141 -0
- data/lib/mongo/server/context.rb +66 -0
- data/lib/mongo/server/description/features.rb +85 -0
- data/lib/mongo/server/description/inspector/primary_elected.rb +58 -0
- data/lib/mongo/server/description/inspector/server_added.rb +59 -0
- data/lib/mongo/server/description/inspector/server_removed.rb +59 -0
- data/lib/mongo/server/description/inspector.rb +79 -0
- data/lib/mongo/server/description.rb +450 -0
- data/lib/mongo/server/monitor/connection.rb +89 -0
- data/lib/mongo/server/monitor.rb +176 -0
- data/lib/mongo/server.rb +163 -0
- data/lib/mongo/server_selector/nearest.rb +94 -0
- data/lib/mongo/server_selector/primary.rb +88 -0
- data/lib/mongo/server_selector/primary_preferred.rb +94 -0
- data/lib/mongo/server_selector/secondary.rb +91 -0
- data/lib/mongo/server_selector/secondary_preferred.rb +96 -0
- data/lib/mongo/server_selector/selectable.rb +209 -0
- data/lib/mongo/server_selector.rb +81 -0
- data/lib/mongo/socket/ssl.rb +130 -0
- data/lib/mongo/socket/tcp.rb +69 -0
- data/lib/mongo/socket/unix.rb +64 -0
- data/lib/mongo/socket.rb +179 -0
- data/lib/mongo/uri.rb +504 -0
- data/lib/mongo/version.rb +21 -0
- data/lib/mongo/write_concern/acknowledged.rb +52 -0
- data/lib/mongo/write_concern/normalizable.rb +51 -0
- data/lib/mongo/write_concern/unacknowledged.rb +55 -0
- data/lib/mongo/write_concern.rb +99 -0
- data/lib/mongo.rb +24 -82
- data/mongo.gemspec +17 -14
- data/spec/certificates/ca.pem +17 -0
- data/spec/certificates/client.pem +101 -0
- data/spec/certificates/crl.pem +10 -0
- data/spec/certificates/crl_client_revoked.pem +12 -0
- data/spec/certificates/password_protected.pem +51 -0
- data/spec/certificates/server.pem +34 -0
- data/spec/mongo/address/ipv4_spec.rb +74 -0
- data/spec/mongo/address/ipv6_spec.rb +74 -0
- data/spec/mongo/address/unix_spec.rb +30 -0
- data/spec/mongo/address_spec.rb +206 -0
- data/spec/mongo/auth/cr_spec.rb +59 -0
- data/spec/mongo/auth/ldap_spec.rb +40 -0
- data/spec/mongo/auth/scram/conversation_spec.rb +197 -0
- data/spec/mongo/auth/scram_spec.rb +55 -0
- data/spec/mongo/auth/user/view_spec.rb +76 -0
- data/spec/mongo/auth/user_spec.rb +190 -0
- data/spec/mongo/auth/x509_spec.rb +40 -0
- data/spec/mongo/auth_spec.rb +65 -0
- data/spec/mongo/bulk/bulk_write_spec.rb +262 -0
- data/spec/mongo/client_spec.rb +564 -0
- data/spec/mongo/cluster/topology/replica_set_spec.rb +101 -0
- data/spec/mongo/cluster/topology/sharded_spec.rb +74 -0
- data/spec/mongo/cluster/topology/standalone_spec.rb +79 -0
- data/spec/mongo/cluster/topology_spec.rb +65 -0
- data/spec/mongo/cluster_spec.rb +129 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +148 -0
- data/spec/mongo/collection/view/explainable_spec.rb +32 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +242 -0
- data/spec/mongo/collection/view/readable_spec.rb +603 -0
- data/spec/mongo/collection/view/writable_spec.rb +679 -0
- data/spec/mongo/collection/view_spec.rb +530 -0
- data/spec/mongo/collection_spec.rb +362 -0
- data/spec/mongo/crud_spec.rb +42 -0
- data/spec/mongo/cursor_spec.rb +295 -0
- data/spec/mongo/database_spec.rb +302 -0
- data/spec/mongo/error/parser_spec.rb +119 -0
- data/spec/mongo/event/publisher_spec.rb +50 -0
- data/spec/mongo/event/subscriber_spec.rb +34 -0
- data/spec/mongo/grid/file/chunk_spec.rb +226 -0
- data/spec/mongo/grid/file/metadata_spec.rb +92 -0
- data/spec/mongo/grid/file_spec.rb +172 -0
- data/spec/mongo/grid/fs_spec.rb +129 -0
- data/spec/mongo/index/view_spec.rb +330 -0
- data/spec/mongo/loggable_spec.rb +62 -0
- data/spec/mongo/logger_spec.rb +97 -0
- data/spec/mongo/operation/aggregate/result_spec.rb +80 -0
- data/spec/mongo/operation/aggregate_spec.rb +127 -0
- data/spec/mongo/operation/command_spec.rb +98 -0
- data/spec/mongo/operation/kill_cursors_spec.rb +66 -0
- data/spec/mongo/operation/limited_spec.rb +50 -0
- data/spec/mongo/operation/map_reduce_spec.rb +143 -0
- data/spec/mongo/operation/read/collections_info_spec.rb +40 -0
- data/spec/mongo/operation/read/get_more_spec.rb +81 -0
- data/spec/mongo/operation/read/indexes_spec.rb +31 -0
- data/spec/mongo/operation/read/query_spec.rb +84 -0
- data/spec/mongo/operation/result_spec.rb +275 -0
- data/spec/mongo/operation/specifiable_spec.rb +53 -0
- data/spec/mongo/operation/write/bulk_delete_spec.rb +235 -0
- data/spec/mongo/operation/write/bulk_insert_spec.rb +235 -0
- data/spec/mongo/operation/write/bulk_update_spec.rb +236 -0
- data/spec/mongo/operation/write/command/delete_spec.rb +103 -0
- data/spec/mongo/operation/write/command/insert_spec.rb +103 -0
- data/spec/mongo/operation/write/command/update_spec.rb +109 -0
- data/spec/mongo/operation/write/create_index_spec.rb +63 -0
- data/spec/mongo/operation/write/create_user_spec.rb +44 -0
- data/spec/mongo/operation/write/delete_spec.rb +186 -0
- data/spec/mongo/operation/write/drop_index_spec.rb +51 -0
- data/spec/mongo/operation/write/insert_spec.rb +244 -0
- data/spec/mongo/operation/write/remove_user_spec.rb +46 -0
- data/spec/mongo/operation/write/response_spec.rb +85 -0
- data/spec/mongo/operation/write/update_spec.rb +228 -0
- data/spec/mongo/protocol/delete_spec.rb +167 -0
- data/spec/mongo/protocol/get_more_spec.rb +146 -0
- data/spec/mongo/protocol/insert_spec.rb +161 -0
- data/spec/mongo/protocol/kill_cursors_spec.rb +101 -0
- data/spec/mongo/protocol/query_spec.rb +285 -0
- data/spec/mongo/protocol/reply_spec.rb +157 -0
- data/spec/mongo/protocol/update_spec.rb +186 -0
- data/spec/mongo/server/connection_pool/queue_spec.rb +170 -0
- data/spec/mongo/server/connection_pool_spec.rb +120 -0
- data/spec/mongo/server/connection_spec.rb +312 -0
- data/spec/mongo/server/description/features_spec.rb +138 -0
- data/spec/mongo/server/description/inspector/primary_elected_spec.rb +94 -0
- data/spec/mongo/server/description/inspector/server_added_spec.rb +92 -0
- data/spec/mongo/server/description/inspector/server_removed_spec.rb +95 -0
- data/spec/mongo/server/description_spec.rb +510 -0
- data/spec/mongo/server/monitor_spec.rb +144 -0
- data/spec/mongo/server_discovery_and_monitoring_spec.rb +103 -0
- data/spec/mongo/server_selection_rtt_spec.rb +104 -0
- data/spec/mongo/server_selection_spec.rb +89 -0
- data/spec/mongo/server_selector/nearest_spec.rb +250 -0
- data/spec/mongo/server_selector/primary_preferred_spec.rb +290 -0
- data/spec/mongo/server_selector/primary_spec.rb +114 -0
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +252 -0
- data/spec/mongo/server_selector/secondary_spec.rb +196 -0
- data/spec/mongo/server_selector_spec.rb +101 -0
- data/spec/mongo/server_spec.rb +131 -0
- data/spec/mongo/uri_spec.rb +517 -0
- data/spec/mongo/write_concern/acknowledged_spec.rb +44 -0
- data/spec/mongo/write_concern/unacknowledged_spec.rb +15 -0
- data/spec/spec_helper.rb +133 -0
- data/spec/support/authorization.rb +247 -0
- data/spec/support/crud/read.rb +144 -0
- data/spec/support/crud/write.rb +214 -0
- data/spec/support/crud.rb +203 -0
- data/spec/support/crud_tests/read/aggregate.yml +43 -0
- data/spec/support/crud_tests/read/count.yml +37 -0
- data/spec/support/crud_tests/read/distinct.yml +33 -0
- data/spec/support/crud_tests/read/find.yml +50 -0
- data/spec/support/crud_tests/write/deleteMany.yml +36 -0
- data/spec/support/crud_tests/write/deleteOne.yml +49 -0
- data/spec/support/crud_tests/write/findOneAndDelete.yml +54 -0
- data/spec/support/crud_tests/write/findOneAndReplace.yml +153 -0
- data/spec/support/crud_tests/write/findOneAndUpdate.yml +161 -0
- data/spec/support/crud_tests/write/insertMany.yml +24 -0
- data/spec/support/crud_tests/write/insertOne.yml +19 -0
- data/spec/support/crud_tests/write/replaceOne.yml +96 -0
- data/spec/support/crud_tests/write/updateMany.yml +83 -0
- data/spec/support/crud_tests/write/updateOne.yml +80 -0
- data/spec/support/helpers.rb +140 -0
- data/spec/support/matchers.rb +37 -0
- data/spec/support/sdam/rs/discover_arbiters.yml +41 -0
- data/spec/support/sdam/rs/discover_passives.yml +41 -0
- data/spec/support/sdam/rs/discover_primary.yml +40 -0
- data/spec/support/sdam/rs/discover_secondary.yml +41 -0
- data/spec/support/sdam/rs/discovery.yml +195 -0
- data/spec/support/sdam/rs/ghost_discovered.yml +39 -0
- data/spec/support/sdam/rs/hosts_differ_from_seeds.yml +34 -0
- data/spec/support/sdam/rs/member_reconfig.yml +68 -0
- data/spec/support/sdam/rs/member_standalone.yml +60 -0
- data/spec/support/sdam/rs/new_primary.yml +74 -0
- data/spec/support/sdam/rs/new_primary_wrong_set_name.yml +71 -0
- data/spec/support/sdam/rs/non_rs_member.yml +31 -0
- data/spec/support/sdam/rs/normalize_case.yml +49 -0
- data/spec/support/sdam/rs/primary_becomes_standalone.yml +52 -0
- data/spec/support/sdam/rs/primary_changes_set_name.yml +57 -0
- data/spec/support/sdam/rs/primary_disconnect.yml +56 -0
- data/spec/support/sdam/rs/primary_wrong_set_name.yml +27 -0
- data/spec/support/sdam/rs/response_from_removed.yml +63 -0
- data/spec/support/sdam/rs/rsother_discovered.yml +41 -0
- data/spec/support/sdam/rs/sec_not_auth.yml +49 -0
- data/spec/support/sdam/rs/secondary_wrong_set_name.yml +28 -0
- data/spec/support/sdam/rs/secondary_wrong_set_name_with_primary.yml +69 -0
- data/spec/support/sdam/rs/unexpected_mongos.yml +26 -0
- data/spec/support/sdam/rs/wrong_set_name.yml +35 -0
- data/spec/support/sdam/sharded/multiple_mongoses.yml +46 -0
- data/spec/support/sdam/sharded/non_mongos_removed.yml +41 -0
- data/spec/support/sdam/sharded/normalize_uri_case.yml +32 -0
- data/spec/support/sdam/single/direct_connection_external_ip.yml +34 -0
- data/spec/support/sdam/single/direct_connection_mongos.yml +33 -0
- data/spec/support/sdam/single/direct_connection_rsarbiter.yml +35 -0
- data/spec/support/sdam/single/direct_connection_rsprimary.yml +34 -0
- data/spec/support/sdam/single/direct_connection_rssecondary.yml +35 -0
- data/spec/support/sdam/single/direct_connection_slave.yml +32 -0
- data/spec/support/sdam/single/direct_connection_standalone.yml +32 -0
- data/spec/support/sdam/single/not_ok_response.yml +39 -0
- data/spec/support/sdam/single/standalone_removed.yml +32 -0
- data/spec/support/sdam/single/unavailable_seed.yml +28 -0
- data/spec/support/server_discovery_and_monitoring.rb +167 -0
- data/spec/support/server_selection/rtt/first_value.yml +4 -0
- data/spec/support/server_selection/rtt/first_value_zero.yml +4 -0
- data/spec/support/server_selection/rtt/value_test_1.yml +4 -0
- data/spec/support/server_selection/rtt/value_test_2.yml +4 -0
- data/spec/support/server_selection/rtt/value_test_3.yml +4 -0
- data/spec/support/server_selection/rtt/value_test_4.yml +4 -0
- data/spec/support/server_selection/rtt/value_test_5.yml +4 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest.yml +26 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +21 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Primary.yml +21 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +26 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +21 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary.yml +26 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +26 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +21 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +21 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest.yml +33 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +26 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Primary.yml +29 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +29 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +29 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary.yml +31 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred.yml +31 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.yml +29 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary_non_matching.yml +26 -0
- data/spec/support/server_selection/selection/Sharded/read/SecondaryPreferred.yml +26 -0
- data/spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml +19 -0
- data/spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml +11 -0
- data/spec/support/server_selection.rb +157 -0
- data/spec/support/server_selection_rtt.rb +41 -0
- data/spec/support/shared/bulk_write.rb +535 -0
- data/spec/support/shared/cursor.rb +38 -0
- data/spec/support/shared/operation.rb +77 -0
- data/spec/support/shared/protocol.rb +31 -0
- data/spec/support/shared/server_selector.rb +111 -0
- data/spec/support/shared/socket.rb +82 -0
- data/spec/support/travis.rb +14 -0
- data.tar.gz.sig +2 -3
- metadata +583 -186
- metadata.gz.sig +0 -0
- data/VERSION +0 -1
- data/lib/mongo/bulk_write_collection_view.rb +0 -387
- data/lib/mongo/collection_writer.rb +0 -364
- data/lib/mongo/connection/node.rb +0 -249
- data/lib/mongo/connection/pool.rb +0 -340
- data/lib/mongo/connection/pool_manager.rb +0 -320
- data/lib/mongo/connection/sharding_pool_manager.rb +0 -67
- data/lib/mongo/connection/socket/ssl_socket.rb +0 -95
- data/lib/mongo/connection/socket/tcp_socket.rb +0 -87
- data/lib/mongo/connection/socket/unix_socket.rb +0 -39
- data/lib/mongo/db.rb +0 -808
- data/lib/mongo/exception.rb +0 -145
- data/lib/mongo/functional/authentication.rb +0 -455
- data/lib/mongo/functional/logging.rb +0 -85
- data/lib/mongo/functional/read_preference.rb +0 -183
- data/lib/mongo/functional/scram.rb +0 -556
- data/lib/mongo/functional/uri_parser.rb +0 -409
- data/lib/mongo/functional/write_concern.rb +0 -66
- data/lib/mongo/gridfs/grid.rb +0 -112
- data/lib/mongo/gridfs/grid_ext.rb +0 -53
- data/lib/mongo/gridfs/grid_file_system.rb +0 -163
- data/lib/mongo/gridfs/grid_io.rb +0 -484
- data/lib/mongo/legacy.rb +0 -140
- data/lib/mongo/mongo_client.rb +0 -697
- data/lib/mongo/mongo_replica_set_client.rb +0 -535
- data/lib/mongo/mongo_sharded_client.rb +0 -159
- data/lib/mongo/networking.rb +0 -372
- data/lib/mongo/utils/conversions.rb +0 -110
- data/lib/mongo/utils/core_ext.rb +0 -70
- data/lib/mongo/utils/server_version.rb +0 -69
- data/lib/mongo/utils/support.rb +0 -80
- data/test/functional/authentication_test.rb +0 -39
- data/test/functional/bulk_api_stress_test.rb +0 -133
- data/test/functional/bulk_write_collection_view_test.rb +0 -1198
- data/test/functional/client_test.rb +0 -627
- data/test/functional/collection_test.rb +0 -2175
- data/test/functional/collection_writer_test.rb +0 -83
- data/test/functional/conversions_test.rb +0 -163
- data/test/functional/cursor_fail_test.rb +0 -57
- data/test/functional/cursor_message_test.rb +0 -56
- data/test/functional/cursor_test.rb +0 -683
- data/test/functional/db_api_test.rb +0 -835
- data/test/functional/db_test.rb +0 -348
- data/test/functional/grid_file_system_test.rb +0 -285
- data/test/functional/grid_io_test.rb +0 -252
- data/test/functional/grid_test.rb +0 -273
- data/test/functional/pool_test.rb +0 -136
- data/test/functional/safe_test.rb +0 -98
- data/test/functional/support_test.rb +0 -62
- data/test/functional/timeout_test.rb +0 -60
- data/test/functional/uri_test.rb +0 -446
- data/test/functional/write_concern_test.rb +0 -118
- data/test/helpers/general.rb +0 -50
- data/test/helpers/test_unit.rb +0 -476
- data/test/replica_set/authentication_test.rb +0 -37
- data/test/replica_set/basic_test.rb +0 -189
- data/test/replica_set/client_test.rb +0 -393
- data/test/replica_set/connection_test.rb +0 -138
- data/test/replica_set/count_test.rb +0 -66
- data/test/replica_set/cursor_test.rb +0 -220
- data/test/replica_set/insert_test.rb +0 -157
- data/test/replica_set/max_values_test.rb +0 -151
- data/test/replica_set/pinning_test.rb +0 -105
- data/test/replica_set/query_test.rb +0 -73
- data/test/replica_set/read_preference_test.rb +0 -219
- data/test/replica_set/refresh_test.rb +0 -211
- data/test/replica_set/replication_ack_test.rb +0 -95
- data/test/sharded_cluster/basic_test.rb +0 -203
- data/test/shared/authentication/basic_auth_shared.rb +0 -260
- data/test/shared/authentication/bulk_api_auth_shared.rb +0 -249
- data/test/shared/authentication/gssapi_shared.rb +0 -176
- data/test/shared/authentication/sasl_plain_shared.rb +0 -96
- data/test/shared/authentication/scram_shared.rb +0 -92
- data/test/shared/ssl_shared.rb +0 -235
- data/test/test_helper.rb +0 -61
- data/test/threading/basic_test.rb +0 -120
- data/test/tools/mongo_config.rb +0 -708
- data/test/tools/mongo_config_test.rb +0 -160
- data/test/unit/client_test.rb +0 -381
- data/test/unit/collection_test.rb +0 -166
- data/test/unit/connection_test.rb +0 -335
- data/test/unit/cursor_test.rb +0 -307
- data/test/unit/db_test.rb +0 -136
- data/test/unit/grid_test.rb +0 -76
- data/test/unit/mongo_sharded_client_test.rb +0 -48
- data/test/unit/node_test.rb +0 -93
- data/test/unit/pool_manager_test.rb +0 -111
- data/test/unit/read_pref_test.rb +0 -406
- data/test/unit/read_test.rb +0 -159
- data/test/unit/safe_test.rb +0 -158
- data/test/unit/sharding_pool_manager_test.rb +0 -84
- data/test/unit/write_concern_test.rb +0 -175
@@ -0,0 +1,101 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, 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
|
+
|
15
|
+
module Mongo
|
16
|
+
class Database
|
17
|
+
|
18
|
+
# A class representing a view of a database.
|
19
|
+
#
|
20
|
+
# @since 2.0.0
|
21
|
+
class View
|
22
|
+
extend Forwardable
|
23
|
+
include Enumerable
|
24
|
+
|
25
|
+
def_delegators :@database, :cluster, :read_preference
|
26
|
+
def_delegators :cluster, :next_primary
|
27
|
+
|
28
|
+
# @return [ Integer ] batch_size The size of the batch of results
|
29
|
+
# when sending the listCollections command.
|
30
|
+
attr_reader :batch_size
|
31
|
+
|
32
|
+
# @return [ Integer ] limit The limit when sending a command.
|
33
|
+
attr_reader :limit
|
34
|
+
|
35
|
+
# @return [ Collection ] collection The command collection.
|
36
|
+
attr_reader :collection
|
37
|
+
|
38
|
+
# Get all the names of the non system collections in the database.
|
39
|
+
#
|
40
|
+
# @example Get the collection names.
|
41
|
+
# database.collection_names
|
42
|
+
#
|
43
|
+
# @param [ Hash ] options Options for the listCollections command.
|
44
|
+
#
|
45
|
+
# @option options [ Integer ] :batch_size The batch size for results
|
46
|
+
# returned from the listCollections command.
|
47
|
+
#
|
48
|
+
# @return [ Array<String> ] The names of all non-system collections.
|
49
|
+
#
|
50
|
+
# @since 2.0.0
|
51
|
+
def collection_names(options = {})
|
52
|
+
@batch_size = options[:batch_size]
|
53
|
+
server = next_primary
|
54
|
+
collections_info(server).collect do |info|
|
55
|
+
server.context.features.list_collections_enabled? ?
|
56
|
+
info['name'] : info['name'].sub("#{@database.name}.", '')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Create the new database view.
|
61
|
+
#
|
62
|
+
# @example Create the new database view.
|
63
|
+
# View::Index.new(database)
|
64
|
+
#
|
65
|
+
# @param [ Database ] database The database.
|
66
|
+
#
|
67
|
+
# @since 2.0.0
|
68
|
+
def initialize(database)
|
69
|
+
@database = database
|
70
|
+
@batch_size = nil
|
71
|
+
@limit = -1
|
72
|
+
@collection = @database[Database::COMMAND]
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def collections_info(server, &block)
|
78
|
+
cursor = Cursor.new(self, send_initial_query(server), server).to_enum
|
79
|
+
cursor.each do |doc|
|
80
|
+
yield doc
|
81
|
+
end if block_given?
|
82
|
+
cursor
|
83
|
+
end
|
84
|
+
|
85
|
+
def collections_info_spec
|
86
|
+
{ selector: {
|
87
|
+
listCollections: 1,
|
88
|
+
cursor: batch_size ? { batchSize: batch_size } : {} },
|
89
|
+
db_name: @database.name }
|
90
|
+
end
|
91
|
+
|
92
|
+
def initial_query_op
|
93
|
+
Operation::Read::CollectionsInfo.new(collections_info_spec)
|
94
|
+
end
|
95
|
+
|
96
|
+
def send_initial_query(server)
|
97
|
+
initial_query_op.execute(server.context)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,224 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, 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
|
+
|
15
|
+
require 'mongo/database/view'
|
16
|
+
|
17
|
+
module Mongo
|
18
|
+
|
19
|
+
# Represents a database on the db server and operations that can execute on
|
20
|
+
# it at this level.
|
21
|
+
#
|
22
|
+
# @since 2.0.0
|
23
|
+
class Database
|
24
|
+
extend Forwardable
|
25
|
+
|
26
|
+
# The admin database name.
|
27
|
+
#
|
28
|
+
# @since 2.0.0
|
29
|
+
ADMIN = 'admin'.freeze
|
30
|
+
|
31
|
+
# The "collection" that database commands operate against.
|
32
|
+
#
|
33
|
+
# @since 2.0.0
|
34
|
+
COMMAND = '$cmd'.freeze
|
35
|
+
|
36
|
+
# The default database options.
|
37
|
+
#
|
38
|
+
# @since 2.0.0
|
39
|
+
DEFAULT_OPTIONS = { :database => ADMIN }.freeze
|
40
|
+
|
41
|
+
# The name of the collection that holds all the collection names.
|
42
|
+
#
|
43
|
+
# @since 2.0.0
|
44
|
+
NAMESPACES = 'system.namespaces'.freeze
|
45
|
+
|
46
|
+
# @return [ Client ] client The database client.
|
47
|
+
attr_reader :client
|
48
|
+
|
49
|
+
# @return [ String ] name The name of the database.
|
50
|
+
attr_reader :name
|
51
|
+
|
52
|
+
# @return [ Hash ] options The options.
|
53
|
+
attr_reader :options
|
54
|
+
|
55
|
+
# Get cluster, read preference, and write concern from client.
|
56
|
+
def_delegators :@client,
|
57
|
+
:cluster,
|
58
|
+
:read_preference,
|
59
|
+
:write_concern
|
60
|
+
|
61
|
+
# Check equality of the database object against another. Will simply check
|
62
|
+
# if the names are the same.
|
63
|
+
#
|
64
|
+
# @example Check database equality.
|
65
|
+
# database == other
|
66
|
+
#
|
67
|
+
# @param [ Object ] other The object to check against.
|
68
|
+
#
|
69
|
+
# @return [ true, false ] If the objects are equal.
|
70
|
+
#
|
71
|
+
# @since 2.0.0
|
72
|
+
def ==(other)
|
73
|
+
return false unless other.is_a?(Database)
|
74
|
+
name == other.name
|
75
|
+
end
|
76
|
+
|
77
|
+
# Get a collection in this database by the provided name.
|
78
|
+
#
|
79
|
+
# @example Get a collection.
|
80
|
+
# database[:users]
|
81
|
+
#
|
82
|
+
# @param [ String, Symbol ] collection_name The name of the collection.
|
83
|
+
# @param [ Hash ] options The options to the collection.
|
84
|
+
#
|
85
|
+
# @return [ Mongo::Collection ] The collection object.
|
86
|
+
#
|
87
|
+
# @since 2.0.0
|
88
|
+
def [](collection_name, options = {})
|
89
|
+
Collection.new(self, collection_name, options)
|
90
|
+
end
|
91
|
+
alias_method :collection, :[]
|
92
|
+
|
93
|
+
# Get all the names of the non system collections in the database.
|
94
|
+
#
|
95
|
+
# @example Get the collection names.
|
96
|
+
# database.collection_names
|
97
|
+
#
|
98
|
+
# @return [ Array<String> ] The names of all non-system collections.
|
99
|
+
#
|
100
|
+
# @since 2.0.0
|
101
|
+
def collection_names(options = {})
|
102
|
+
View.new(self).collection_names(options)
|
103
|
+
end
|
104
|
+
|
105
|
+
# Get all the collections that belong to this database.
|
106
|
+
#
|
107
|
+
# @example Get all the collections.
|
108
|
+
# database.collections
|
109
|
+
#
|
110
|
+
# @return [ Array<Mongo::Collection> ] All the collections.
|
111
|
+
#
|
112
|
+
# @since 2.0.0
|
113
|
+
def collections
|
114
|
+
collection_names.map { |name| collection(name) }
|
115
|
+
end
|
116
|
+
|
117
|
+
# Execute a command on the database.
|
118
|
+
#
|
119
|
+
# @example Execute a command.
|
120
|
+
# database.command(:ismaster => 1)
|
121
|
+
#
|
122
|
+
# @param [ Hash ] operation The command to execute.
|
123
|
+
# @param [ Hash ] opts The command options.
|
124
|
+
#
|
125
|
+
# @option opts :read [ Hash ] The read preference for this command.
|
126
|
+
#
|
127
|
+
# @return [ Hash ] The result of the command execution.
|
128
|
+
def command(operation, opts = {})
|
129
|
+
preference = opts[:read] ? ServerSelector.get(opts[:read], options) : read_preference
|
130
|
+
server = preference.select_server(cluster)
|
131
|
+
Operation::Command.new({
|
132
|
+
:selector => operation,
|
133
|
+
:db_name => name,
|
134
|
+
:options => { :limit => -1 },
|
135
|
+
:read => preference
|
136
|
+
}).execute(server.context)
|
137
|
+
end
|
138
|
+
|
139
|
+
# Drop the database and all its associated information.
|
140
|
+
#
|
141
|
+
# @example Drop the database.
|
142
|
+
# database.drop
|
143
|
+
#
|
144
|
+
# @return [ Result ] The result of the command.
|
145
|
+
#
|
146
|
+
# @since 2.0.0
|
147
|
+
def drop
|
148
|
+
command(:dropDatabase => 1)
|
149
|
+
end
|
150
|
+
|
151
|
+
# Instantiate a new database object.
|
152
|
+
#
|
153
|
+
# @example Instantiate the database.
|
154
|
+
# Mongo::Database.new(client, :test)
|
155
|
+
#
|
156
|
+
# @param [ Mongo::Client ] client The driver client.
|
157
|
+
# @param [ String, Symbol ] name The name of the database.
|
158
|
+
# @param [ Hash ] options The options.
|
159
|
+
#
|
160
|
+
# @raise [ Mongo::Database::InvalidName ] If the name is nil.
|
161
|
+
#
|
162
|
+
# @since 2.0.0
|
163
|
+
def initialize(client, name, options = {})
|
164
|
+
raise Error::InvalidDatabaseName.new unless name
|
165
|
+
@client = client
|
166
|
+
@name = name.to_s.freeze
|
167
|
+
@options = options.freeze
|
168
|
+
end
|
169
|
+
|
170
|
+
# Get a pretty printed string inspection for the database.
|
171
|
+
#
|
172
|
+
# @example Inspect the database.
|
173
|
+
# database.inspect
|
174
|
+
#
|
175
|
+
# @return [ String ] The database inspection.
|
176
|
+
#
|
177
|
+
# @since 2.0.0
|
178
|
+
def inspect
|
179
|
+
"#<Mongo::Database:0x#{object_id} name=#{name}>"
|
180
|
+
end
|
181
|
+
|
182
|
+
# Get the Grid "filesystem" for this database.
|
183
|
+
#
|
184
|
+
# @example Get the GridFS.
|
185
|
+
# database.fs
|
186
|
+
#
|
187
|
+
# @return [ Grid::FS ] The GridFS for the database.
|
188
|
+
#
|
189
|
+
# @since 2.0.0
|
190
|
+
def fs(options = {})
|
191
|
+
Grid::FS.new(self, options)
|
192
|
+
end
|
193
|
+
|
194
|
+
# Get the user view for this database.
|
195
|
+
#
|
196
|
+
# @example Get the user view.
|
197
|
+
# database.users
|
198
|
+
#
|
199
|
+
# @return [ View::User ] The user view.
|
200
|
+
#
|
201
|
+
# @since 2.0.0
|
202
|
+
def users
|
203
|
+
Auth::User::View.new(self)
|
204
|
+
end
|
205
|
+
|
206
|
+
# Create a database for the provided client, for use when we don't want the
|
207
|
+
# client's original database instance to be the same.
|
208
|
+
#
|
209
|
+
# @api private
|
210
|
+
#
|
211
|
+
# @example Create a database for the client.
|
212
|
+
# Database.create(client)
|
213
|
+
#
|
214
|
+
# @param [ Client ] client The client to create on.
|
215
|
+
#
|
216
|
+
# @return [ Database ] The database.
|
217
|
+
#
|
218
|
+
# @since 2.0.0
|
219
|
+
def self.create(client)
|
220
|
+
database = Database.new(client, client.options[:database], client.options)
|
221
|
+
client.instance_variable_set(:@database, database)
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, 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
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Exception raised if there are write errors upon executing the bulk
|
19
|
+
# operation.
|
20
|
+
#
|
21
|
+
# @since 2.0.0
|
22
|
+
class BulkWriteError < Error
|
23
|
+
|
24
|
+
# @return [ BSON::Document ] result The error result.
|
25
|
+
attr_reader :result
|
26
|
+
|
27
|
+
# Instantiate the new exception.
|
28
|
+
#
|
29
|
+
# @example Instantiate the exception.
|
30
|
+
# Mongo::Error::BulkWriteFailure.new(response)
|
31
|
+
#
|
32
|
+
# @param [ Hash ] result A processed response from the server
|
33
|
+
# reporting results of the operation.
|
34
|
+
#
|
35
|
+
# @since 2.0.0
|
36
|
+
def initialize(result)
|
37
|
+
@result = result
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, 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
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Exception raised if an non-existent operation type is used.
|
19
|
+
#
|
20
|
+
# @since 2.0.0
|
21
|
+
class InvalidBulkOperation < Error
|
22
|
+
|
23
|
+
# Instantiate the new exception.
|
24
|
+
#
|
25
|
+
# @example Instantiate the exception.
|
26
|
+
# Mongo::Error::InvalidBulkOperation.new(name)
|
27
|
+
#
|
28
|
+
# @param [ String ] name The attempted operation name.
|
29
|
+
#
|
30
|
+
# @since 2.0.0
|
31
|
+
def initialize(type, operation)
|
32
|
+
super("Invalid document format for bulk #{type} operation: #{operation}.")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, 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
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Exception raised if an non-existent operation type is used.
|
19
|
+
#
|
20
|
+
# @since 2.0.0
|
21
|
+
class InvalidBulkOperationType < Error
|
22
|
+
|
23
|
+
# Instantiate the new exception.
|
24
|
+
#
|
25
|
+
# @example Instantiate the exception.
|
26
|
+
# Mongo::Error::InvalidBulkOperationType.new(type)
|
27
|
+
#
|
28
|
+
# @param [ String ] type The attempted operation type.
|
29
|
+
#
|
30
|
+
# @since 2.0.0
|
31
|
+
def initialize(type)
|
32
|
+
super("Invalid bulk operation type: #{type}.")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, 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
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Exception that is raised when trying to create a collection with no name.
|
19
|
+
#
|
20
|
+
# @since 2.0.0
|
21
|
+
class InvalidCollectionName < Error
|
22
|
+
|
23
|
+
# The message is constant.
|
24
|
+
#
|
25
|
+
# @since 2.0.0
|
26
|
+
MESSAGE = 'nil is an invalid collection name. Please provide a string or symbol.'.freeze
|
27
|
+
|
28
|
+
# Instantiate the new exception.
|
29
|
+
#
|
30
|
+
# @example Instantiate the exception.
|
31
|
+
# Mongo::Collection::InvalidName.new
|
32
|
+
#
|
33
|
+
# @since 2.0.0
|
34
|
+
def initialize
|
35
|
+
super(MESSAGE)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, 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
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Exception that is raised when trying to create a database with no name.
|
19
|
+
#
|
20
|
+
# @since 2.0.0
|
21
|
+
class InvalidDatabaseName < Error
|
22
|
+
|
23
|
+
# The message is constant.
|
24
|
+
#
|
25
|
+
# @since 2.0.0
|
26
|
+
MESSAGE = 'nil is an invalid database name. Please provide a string or symbol.'.freeze
|
27
|
+
|
28
|
+
# Instantiate the new exception.
|
29
|
+
#
|
30
|
+
# @example Instantiate the exception.
|
31
|
+
# Mongo::Error::InvalidDatabaseName.new
|
32
|
+
#
|
33
|
+
# @since 2.0.0
|
34
|
+
def initialize
|
35
|
+
super(MESSAGE)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C)
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -12,21 +12,28 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
# Exception raised if the object is not a valid document.
|
19
|
+
#
|
20
|
+
# @since 2.0.0
|
21
|
+
class InvalidDocument < Error
|
21
22
|
|
22
|
-
|
23
|
-
|
23
|
+
# The error message.
|
24
|
+
#
|
25
|
+
# @since 2.0.0
|
26
|
+
MESSAGE = 'Invalid document provided'.freeze
|
24
27
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
# Instantiate the new exception.
|
29
|
+
#
|
30
|
+
# @example Instantiate the exception.
|
31
|
+
# Mongo::Error::InvalidDocument.new
|
32
|
+
#
|
33
|
+
# @since 2.0.0
|
34
|
+
def initialize
|
35
|
+
super(MESSAGE)
|
36
|
+
end
|
37
|
+
end
|
30
38
|
end
|
31
|
-
|
32
39
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, 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
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised if the file md5 and server md5 do not match when acknowledging
|
19
|
+
# GridFS writes.
|
20
|
+
#
|
21
|
+
# @since 2.0.0
|
22
|
+
class InvalidFile < Error
|
23
|
+
|
24
|
+
# Create the nex exception.
|
25
|
+
#
|
26
|
+
# @example Create the mew exception.
|
27
|
+
# Mongo::Error::InvalidFile.new(file_md5, server_md5)
|
28
|
+
#
|
29
|
+
# @param [ String ] client_md5 The client side file md5.
|
30
|
+
# @param [ String ] server_md5 The server side file md5.
|
31
|
+
#
|
32
|
+
# @since 2.0.0
|
33
|
+
def initialize(client_md5, server_md5)
|
34
|
+
super("File MD5 on client side is #{client_md5} but the server reported #{server_md5}.")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright (C) 2015 MongoDB, 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
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# This exception is raised when the server nonce returned does not
|
19
|
+
# match the client nonce sent to it.
|
20
|
+
#
|
21
|
+
# @since 2.0.0
|
22
|
+
class InvalidNonce < Error
|
23
|
+
|
24
|
+
# @return [ String ] nonce The client nonce.
|
25
|
+
attr_reader :nonce
|
26
|
+
|
27
|
+
# @return [ String ] rnonce The server nonce.
|
28
|
+
attr_reader :rnonce
|
29
|
+
|
30
|
+
# Instantiate the new exception.
|
31
|
+
#
|
32
|
+
# @example Create the exception.
|
33
|
+
# InvalidNonce.new(nonce, rnonce)
|
34
|
+
#
|
35
|
+
# @param [ String ] nonce The client nonce.
|
36
|
+
# @param [ String ] rnonce The server nonce.
|
37
|
+
#
|
38
|
+
# @since 2.0.0
|
39
|
+
def initialize(nonce, rnonce)
|
40
|
+
@nonce = nonce
|
41
|
+
@rnonce = rnonce
|
42
|
+
super("Expected server rnonce '#{rnonce}' to start with client nonce '#{nonce}'.")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, 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
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Exception raised if the object is not a valid replacement document.
|
19
|
+
#
|
20
|
+
# @since 2.0.0
|
21
|
+
class InvalidReplacementDocument < Error
|
22
|
+
|
23
|
+
# The error message.
|
24
|
+
#
|
25
|
+
# @since 2.0.0
|
26
|
+
MESSAGE = 'Invalid replacement document provided'.freeze
|
27
|
+
|
28
|
+
# Instantiate the new exception.
|
29
|
+
#
|
30
|
+
# @example Instantiate the exception.
|
31
|
+
# Mongo::Error::InvalidReplacementDoc.new
|
32
|
+
#
|
33
|
+
# @since 2.0.0
|
34
|
+
def initialize
|
35
|
+
super(MESSAGE)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|