mongo 1.12.5 → 2.0.0.beta
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/CONTRIBUTING.md +64 -0
- data/LICENSE +1 -1
- data/README.md +23 -125
- data/Rakefile +26 -21
- data/bin/mongo_console +6 -38
- data/lib/mongo.rb +23 -82
- data/lib/mongo/address.rb +111 -0
- 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/auth.rb +108 -0
- data/lib/mongo/auth/cr.rb +44 -0
- data/lib/mongo/auth/cr/conversation.rb +119 -0
- data/lib/mongo/auth/executable.rb +52 -0
- data/lib/mongo/auth/ldap.rb +48 -0
- data/lib/mongo/auth/ldap/conversation.rb +92 -0
- data/lib/mongo/auth/roles.rb +104 -0
- data/lib/mongo/auth/scram.rb +53 -0
- data/lib/mongo/auth/scram/conversation.rb +450 -0
- data/lib/mongo/auth/user.rb +159 -0
- data/lib/mongo/auth/user/view.rb +102 -0
- data/lib/mongo/auth/x509.rb +48 -0
- data/lib/mongo/auth/x509/conversation.rb +92 -0
- data/lib/mongo/{gridfs.rb → bulk.rb} +2 -5
- data/lib/mongo/bulk/bulk_write.rb +307 -0
- data/lib/mongo/client.rb +233 -0
- data/lib/mongo/cluster.rb +203 -0
- data/lib/mongo/cluster/topology.rb +60 -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/collection.rb +130 -1101
- data/lib/mongo/collection/view.rb +169 -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 +169 -0
- data/lib/mongo/cursor.rb +79 -680
- data/lib/mongo/database.rb +224 -0
- data/lib/mongo/database/view.rb +101 -0
- data/lib/mongo/error.rb +81 -0
- data/lib/mongo/error/bulk_write_failure.rb +41 -0
- data/lib/mongo/{utils/thread_local_variable_manager.rb → error/empty_batch.rb} +22 -8
- data/{test/functional/db_connection_test.rb → lib/mongo/error/invalid_bulk_operation.rb} +19 -8
- 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/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/event.rb +40 -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/grid.rb +16 -0
- data/lib/mongo/grid/file.rb +94 -0
- data/lib/mongo/grid/file/chunk.rb +184 -0
- data/lib/mongo/grid/file/metadata.rb +223 -0
- data/lib/mongo/grid/fs.rb +149 -0
- data/lib/mongo/index.rb +64 -0
- data/lib/mongo/index/view.rb +205 -0
- data/lib/mongo/loggable.rb +126 -0
- data/lib/mongo/logger.rb +132 -0
- data/lib/mongo/operation.rb +26 -0
- data/lib/mongo/operation/aggregate.rb +100 -0
- data/lib/mongo/operation/aggregate/result.rb +84 -0
- data/lib/mongo/operation/batchable.rb +103 -0
- data/lib/mongo/operation/bulk_delete/result.rb +197 -0
- data/lib/mongo/operation/bulk_insert/result.rb +195 -0
- data/lib/mongo/operation/bulk_update/result.rb +295 -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 +116 -0
- data/lib/mongo/operation/list_indexes/result.rb +118 -0
- data/lib/mongo/operation/map_reduce.rb +96 -0
- data/lib/mongo/operation/map_reduce/result.rb +122 -0
- data/lib/mongo/{functional.rb → operation/read.rb} +7 -7
- 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/operation/read_preferrable.rb +34 -0
- data/lib/mongo/operation/result.rb +259 -0
- data/lib/mongo/operation/specifiable.rb +380 -0
- data/lib/mongo/operation/write.rb +25 -0
- data/lib/mongo/operation/write/bulk_delete.rb +158 -0
- data/lib/mongo/operation/write/bulk_insert.rb +160 -0
- data/lib/mongo/operation/write/bulk_update.rb +167 -0
- data/lib/mongo/{connection/socket/socket_util.rb → operation/write/command.rb} +9 -24
- 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/ensure_index.rb +55 -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/create_index.rb +84 -0
- data/lib/mongo/operation/write/create_user.rb +75 -0
- data/lib/mongo/operation/write/delete.rb +91 -0
- data/lib/mongo/operation/write/drop_index.rb +62 -0
- data/lib/mongo/operation/write/insert.rb +88 -0
- data/lib/mongo/operation/write/remove_user.rb +70 -0
- data/lib/mongo/operation/write/update.rb +98 -0
- data/lib/mongo/protocol.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/server.rb +163 -0
- data/lib/mongo/server/connectable.rb +99 -0
- data/lib/mongo/server/connection.rb +133 -0
- data/lib/mongo/server/connection_pool.rb +141 -0
- data/lib/mongo/server/connection_pool/queue.rb +182 -0
- data/lib/mongo/server/context.rb +66 -0
- data/lib/mongo/server/description.rb +450 -0
- data/lib/mongo/server/description/features.rb +85 -0
- data/lib/mongo/server/description/inspector.rb +79 -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/monitor.rb +160 -0
- data/lib/mongo/server/monitor/connection.rb +88 -0
- data/lib/mongo/server_selector.rb +81 -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/socket.rb +179 -0
- data/lib/mongo/socket/ssl.rb +108 -0
- data/lib/mongo/socket/tcp.rb +69 -0
- data/lib/mongo/socket/unix.rb +66 -0
- data/lib/mongo/uri.rb +504 -0
- data/lib/mongo/version.rb +21 -0
- data/lib/mongo/write_concern.rb +99 -0
- data/lib/mongo/write_concern/acknowledged.rb +38 -0
- data/lib/mongo/write_concern/normalizable.rb +73 -0
- data/lib/mongo/write_concern/unacknowledged.rb +43 -0
- data/mongo.gemspec +17 -14
- 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 +175 -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 +135 -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 +504 -0
- data/spec/mongo/collection/view_spec.rb +521 -0
- data/spec/mongo/collection_spec.rb +362 -0
- data/spec/mongo/cursor_spec.rb +295 -0
- data/spec/mongo/database_spec.rb +306 -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 +69 -0
- data/spec/mongo/grid/file_spec.rb +138 -0
- data/spec/mongo/grid/fs_spec.rb +129 -0
- data/spec/mongo/index/view_spec.rb +226 -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 +135 -0
- data/spec/mongo/operation/command_spec.rb +106 -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 +473 -0
- data/spec/mongo/operation/write/bulk_insert_spec.rb +466 -0
- data/spec/mongo/operation/write/bulk_update_spec.rb +524 -0
- data/spec/mongo/operation/write/command/delete_spec.rb +116 -0
- data/spec/mongo/operation/write/command/insert_spec.rb +117 -0
- data/spec/mongo/operation/write/command/update_spec.rb +123 -0
- data/spec/mongo/operation/write/create_user_spec.rb +44 -0
- data/spec/mongo/operation/write/delete_spec.rb +178 -0
- data/spec/mongo/operation/write/drop_index_spec.rb +51 -0
- data/spec/mongo/operation/write/ensure_index_spec.rb +81 -0
- data/spec/mongo/operation/write/insert_spec.rb +231 -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 +177 -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 +289 -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 +130 -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/mongo_orchestration_spec.rb +70 -0
- data/spec/spec_helper.rb +148 -0
- data/spec/support/authorization.rb +245 -0
- data/spec/support/helpers.rb +140 -0
- data/spec/support/matchers.rb +37 -0
- data/spec/support/mongo_orchestration.rb +61 -0
- data/spec/support/mongo_orchestration/requestable.rb +109 -0
- data/spec/support/mongo_orchestration/standalone.rb +57 -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.rb +140 -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 +32 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +27 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Primary.yml +23 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +32 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +27 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary.yml +32 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +32 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +27 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +27 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest.yml +41 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +34 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Primary.yml +33 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +39 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +36 -0
- data/spec/support/server_selection/selection/Sharded/read/SecondaryPreferred.yml +32 -0
- data/spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml +23 -0
- data/spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml +13 -0
- data/spec/support/server_selection_rtt.rb +41 -0
- data/spec/support/shared/bulk_write.rb +498 -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
- metadata +523 -189
- 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,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,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
|
data/lib/mongo/error.rb
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
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
|
+
# Base error class for all Mongo related errors.
|
|
17
|
+
#
|
|
18
|
+
# @since 2.0.0
|
|
19
|
+
class Error < StandardError
|
|
20
|
+
|
|
21
|
+
# The error code field.
|
|
22
|
+
#
|
|
23
|
+
# @since 2.0.0
|
|
24
|
+
CODE = 'code'.freeze
|
|
25
|
+
|
|
26
|
+
# An error field, MongoDB < 2.6
|
|
27
|
+
#
|
|
28
|
+
# @since 2.0.0
|
|
29
|
+
ERR = '$err'.freeze
|
|
30
|
+
|
|
31
|
+
# An error field, MongoDB < 2.4
|
|
32
|
+
#
|
|
33
|
+
# @since 2.0.0
|
|
34
|
+
ERROR = 'err'.freeze
|
|
35
|
+
|
|
36
|
+
# The standard error message field, MongoDB 3.0+
|
|
37
|
+
#
|
|
38
|
+
# @since 2.0.0
|
|
39
|
+
ERRMSG = 'errmsg'.freeze
|
|
40
|
+
|
|
41
|
+
# The constant for the writeErrors array.
|
|
42
|
+
#
|
|
43
|
+
# @sicne 2.0.0
|
|
44
|
+
WRITE_ERRORS = 'writeErrors'.freeze
|
|
45
|
+
|
|
46
|
+
# The constant for write concern errors.
|
|
47
|
+
#
|
|
48
|
+
# @since 2.0.0
|
|
49
|
+
WRITE_CONCERN_ERROR = 'writeConcernError'.freeze
|
|
50
|
+
|
|
51
|
+
# Constant for an unknown error.
|
|
52
|
+
#
|
|
53
|
+
# @since 2.0.0
|
|
54
|
+
UNKNOWN_ERROR = 8.freeze
|
|
55
|
+
|
|
56
|
+
# Constant for a bad value error.
|
|
57
|
+
#
|
|
58
|
+
# @since 2.0.0
|
|
59
|
+
BAD_VALUE = 2.freeze
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
require 'mongo/error/parser'
|
|
64
|
+
require 'mongo/error/bulk_write_failure'
|
|
65
|
+
require 'mongo/error/operation_failure'
|
|
66
|
+
require 'mongo/error/empty_batch'
|
|
67
|
+
require 'mongo/error/invalid_bulk_operation'
|
|
68
|
+
require 'mongo/error/invalid_collection_name'
|
|
69
|
+
require 'mongo/error/invalid_database_name'
|
|
70
|
+
require 'mongo/error/invalid_document'
|
|
71
|
+
require 'mongo/error/invalid_file'
|
|
72
|
+
require 'mongo/error/invalid_nonce'
|
|
73
|
+
require 'mongo/error/invalid_replacement_document'
|
|
74
|
+
require 'mongo/error/invalid_signature'
|
|
75
|
+
require 'mongo/error/invalid_update_document'
|
|
76
|
+
require 'mongo/error/max_bson_size'
|
|
77
|
+
require 'mongo/error/max_message_size'
|
|
78
|
+
require 'mongo/error/need_primary_server'
|
|
79
|
+
require 'mongo/error/socket_error'
|
|
80
|
+
require 'mongo/error/socket_timeout_error'
|
|
81
|
+
require 'mongo/error/unsupported_features'
|
|
@@ -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 BulkWriteFailure < 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
|
+
# @params [ 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
|