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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1b1c17b52cc160be41aa083e33789a71d99b6b8
|
4
|
+
data.tar.gz: ba505d3b59d858a210a570670a98c6baded60489
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e770b0aee96c3226681ae96fb0de826fbb4c10ddb8851bd4d9ce763b0cd6d8c1067ec50f42748d84ac31e1ca009e641d2f7f66e780166a8cd4adc33e9db6183
|
7
|
+
data.tar.gz: 5a34d970f35bcd33d06dbfc61ae533cd05a5f585bb242d9e591805d3545902d2cfd74071587bbd47f997318ad9012012c3ad4d951ca0f79ce9c5488324d890cf
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
## Contributing to the MongoDB Ruby Driver
|
2
|
+
|
3
|
+
Thank you for your interest in contributing to the MongoDB Ruby driver.
|
4
|
+
|
5
|
+
We are building this software together and strongly encourage contributions
|
6
|
+
from the community that are within the guidelines set forth below.
|
7
|
+
|
8
|
+
Bug Fixes and New Features
|
9
|
+
--------------------------
|
10
|
+
|
11
|
+
Before starting to write code, look for existing [tickets]
|
12
|
+
(https://jira.mongodb.org/browse/RUBY) or [create one]
|
13
|
+
(https://jira.mongodb.org/secure/CreateIssue!default.jspa)
|
14
|
+
for your bug, issue, or feature request. This helps the community
|
15
|
+
avoid working on something that might not be of interest or which
|
16
|
+
has already been addressed.
|
17
|
+
|
18
|
+
Environment
|
19
|
+
-----------
|
20
|
+
|
21
|
+
We highly suggest using [RVM](https://rvm.io/) or [rbenv]
|
22
|
+
(https://github.com/sstephenson/rbenv) to set up Ruby development and
|
23
|
+
testing environments. In this way, moving between and testing code for
|
24
|
+
alternate Ruby versions (besides the one possibly included with your
|
25
|
+
system) is simple. This practice is essential for ensuring the quality
|
26
|
+
of the driver.
|
27
|
+
|
28
|
+
Pull Requests
|
29
|
+
-------------
|
30
|
+
|
31
|
+
Pull requests should be made against the master (development)
|
32
|
+
branch and include relevant tests, if applicable. The driver follows
|
33
|
+
the Git-Flow branching model where the traditional master branch is
|
34
|
+
known as release and the master (default) branch is considered under
|
35
|
+
development.
|
36
|
+
|
37
|
+
Tests should pass under all Ruby interpreters which the MongoDB Ruby
|
38
|
+
driver currently supports (1.8.7, 1.9.3, JRuby 1.6.x and 1.7.x) and will be
|
39
|
+
automatically tested.
|
40
|
+
|
41
|
+
The results of pull request testing will be appended to the request.
|
42
|
+
If any tests do not pass, or relavant tests are not included the pull
|
43
|
+
request will not be considered.
|
44
|
+
|
45
|
+
Clusters and Replica Sets
|
46
|
+
-------------------------
|
47
|
+
|
48
|
+
If your bug fix or enhancement deals with Cluster or Replica Set
|
49
|
+
code, please run all relevant tests for those code subsets before
|
50
|
+
issuing the request.
|
51
|
+
|
52
|
+
* `rake test:sharded_cluster` for sharded clusters
|
53
|
+
* `rake test:replica_set` for replica sets
|
54
|
+
|
55
|
+
Cluster and Replica Set testing is currently **not** automatically
|
56
|
+
performed so it is important they are run in a thorough fashion under
|
57
|
+
all supported interpreters before a pull request is made.
|
58
|
+
|
59
|
+
Talk To Us
|
60
|
+
----------
|
61
|
+
|
62
|
+
We love to hear from you. If you want to work on something or have
|
63
|
+
questions / complaints please reach out to us by creating a [question]
|
64
|
+
(https://jira.mongodb.org/secure/CreateIssue.jspa?pid=10005&issuetype=6).
|
data/LICENSE
CHANGED
@@ -175,7 +175,7 @@
|
|
175
175
|
|
176
176
|
END OF TERMS AND CONDITIONS
|
177
177
|
|
178
|
-
Copyright (C)
|
178
|
+
Copyright (C) 2009-2015 MongoDB, Inc.
|
179
179
|
|
180
180
|
Licensed under the Apache License, Version 2.0 (the "License");
|
181
181
|
you may not use this file except in compliance with the License.
|
data/README.md
CHANGED
@@ -2,103 +2,20 @@ MongoDB Ruby Driver [![Build Status][travis-img]][travis-url] [![Code Climate][c
|
|
2
2
|
-----
|
3
3
|
The officially supported Ruby driver for [MongoDB](http://www.mongodb.org).
|
4
4
|
|
5
|
-
|
5
|
+
Documentation
|
6
6
|
-----
|
7
7
|
|
8
|
-
|
9
|
-
The Ruby driver is released and distributed through RubyGems and it can be installed with the following command:
|
8
|
+
Documentation is located [here](http://docs.mongodb.org/ecosystem/drivers/ruby/).
|
10
9
|
|
11
|
-
|
12
|
-
gem install mongo
|
13
|
-
```
|
14
|
-
|
15
|
-
For a significant performance boost, you'll want to install the C-extension:
|
16
|
-
|
17
|
-
```bash
|
18
|
-
gem install bson_ext
|
19
|
-
```
|
20
|
-
|
21
|
-
**Github Installation**<br>
|
22
|
-
For development and test environments (not recommended for production) you can also install the Ruby driver directly from source:
|
23
|
-
|
24
|
-
```bash
|
25
|
-
# clone the repository
|
26
|
-
git clone https://github.com/mongodb/mongo-ruby-driver.git
|
27
|
-
cd mongo-ruby-driver
|
28
|
-
|
29
|
-
# checkout a specific version by tag (optional)
|
30
|
-
git checkout 1.x.x
|
31
|
-
|
32
|
-
# install all development dependencies
|
33
|
-
gem install bundler
|
34
|
-
bundle install
|
35
|
-
|
36
|
-
# install the ruby driver
|
37
|
-
rake install
|
38
|
-
```
|
39
|
-
|
40
|
-
To be able to use the driver with Kerberos authentication enabled, install the
|
41
|
-
`mongo_kerberos` gem and add it instead of mongo to your application:
|
42
|
-
|
43
|
-
```bash
|
44
|
-
gem install mongo_kerberos
|
45
|
-
```
|
46
|
-
|
47
|
-
```ruby
|
48
|
-
require 'mongo_kerberos'
|
49
|
-
```
|
50
|
-
|
51
|
-
Usage
|
52
|
-
-----
|
53
|
-
Here is a quick example of basic usage for the Ruby driver:
|
54
|
-
|
55
|
-
```ruby
|
56
|
-
require 'mongo'
|
57
|
-
include Mongo
|
58
|
-
|
59
|
-
# connecting to the database
|
60
|
-
client = MongoClient.new # defaults to localhost:27017
|
61
|
-
db = client['example-db']
|
62
|
-
coll = db['example-collection']
|
63
|
-
|
64
|
-
# inserting documents
|
65
|
-
10.times { |i| coll.insert({ :count => i+1 }) }
|
66
|
-
|
67
|
-
# finding documents
|
68
|
-
puts "There are #{coll.count} total documents. Here they are:"
|
69
|
-
coll.find.each { |doc| puts doc.inspect }
|
70
|
-
|
71
|
-
# updating documents
|
72
|
-
coll.update({ :count => 5 }, { :count => 'foobar' })
|
73
|
-
|
74
|
-
# removing documents
|
75
|
-
coll.remove({ :count => 8 })
|
76
|
-
coll.remove
|
77
|
-
```
|
78
|
-
|
79
|
-
Wiki - Tutorials & Examples
|
80
|
-
-----
|
81
|
-
For many more usage examples and a full tutorial, please visit our [wiki](https://github.com/mongodb/mongo-ruby-driver/wiki).<br>
|
82
|
-
|
83
|
-
API Reference Documentation
|
84
|
-
-----
|
85
|
-
For API reference documentation, please visit [here](http://api.mongodb.org/ruby).
|
86
|
-
|
87
|
-
Compatibility
|
88
|
-
-----
|
89
|
-
The MongoDB Ruby driver requires Ruby 1.8.7 or greater and is regularly tested against the platforms and environments listed below.
|
90
|
-
|
91
|
-
Ruby Platforms | Operating Systems | Architectures
|
92
|
-
-------------- | ----------------- | -------------
|
93
|
-
MRI 1.8.7, 1.9.3, 2.0.0<br>JRuby 1.7.x | Windows<br>Linux<br>OS X | x86<br>x64<br>ARM
|
10
|
+
API docs can be found [here](http://api.mongodb.org/ruby/).
|
94
11
|
|
95
12
|
Support & Feedback
|
96
13
|
-----
|
97
14
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
15
|
+
For issues, questions or feedback related to the Ruby driver, please look into
|
16
|
+
our [support channels](http://www.mongodb.org/about/support). Please
|
17
|
+
do not email any of the Ruby developers directly with issues or
|
18
|
+
questions - you're more likely to get an answer quickly on the [mongodb-user list](http://groups.google.com/group/mongodb-user) on Google Groups.
|
102
19
|
|
103
20
|
Bugs & Feature Requests
|
104
21
|
-----
|
@@ -111,45 +28,23 @@ Do you have a bug to report or a feature request to make?
|
|
111
28
|
|
112
29
|
When reporting an issue, please keep in mind that all information in JIRA for all driver projects (ex. RUBY, CSHARP, JAVA) and the Core Server (ex. SERVER) project is **PUBLICLY** visible.
|
113
30
|
|
114
|
-
**
|
115
|
-
|
116
|
-
Providing enough information so we can reproduce the issue immediately will reduce roundtrip communications and get you a useful response as quickly as possible.
|
117
|
-
That said, please provide the following information when logging an issue:
|
31
|
+
**PLEASE DO**
|
118
32
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
5. Stack traces and log data, keeping in mind that this info is public
|
33
|
+
* Provide as much information as possible about the issue.
|
34
|
+
* Provide detailed steps for reproducing the issue.
|
35
|
+
* Provide any applicable code snippets, stack traces and log data.
|
36
|
+
* Specify version information for the driver and MongoDB.
|
124
37
|
|
125
38
|
**PLEASE DO NOT**
|
126
39
|
|
127
40
|
* Provide any sensitive data or server logs.
|
128
41
|
* Report potential security issues publicly (see 'Security Issues').
|
129
42
|
|
130
|
-
**EXAMPLE BUG REPORT**
|
131
|
-
|
132
|
-
Example taken from [RUBY-775](https://jira.mongodb.org/browse/RUBY-775)
|
133
|
-
|
134
|
-
```
|
135
|
-
There appears to be a recursive locking condition in the replica set connection pooling.
|
136
|
-
|
137
|
-
Environment: AWS Linux 3.10.37-47.135.amzn1.x86_64 / jruby-1.7.12 / JDK java-1.7.0-openjdk-1.7.0.55-2.4.7.1.40.amzn1.x86_64
|
138
|
-
|
139
|
-
Component: Connection Pooling / Replica set
|
140
|
-
|
141
|
-
Here is a stack trace:
|
142
|
-
https://gist.githubusercontent.com/cheald/5ed01172c5b2c9943c87/raw/63075158dac4c78c1775cac8bf84ba3b6537bc1e/gistfile1.txt
|
143
|
-
|
144
|
-
The original lock occurs [here](https://github.com/mongodb/mongo-ruby-driver/blob/1.x-stable/lib/mongo/connection/pool_manager.rb#L60)
|
145
|
-
|
146
|
-
and then the process of reconnecting ends up attempting to resynchronize the same lock [here](https://github.com/mongodb/mongo-ruby-driver/blob/1.x-stable/lib/mongo/connection/pool_manager.rb#L150)
|
147
|
-
```
|
148
|
-
|
149
43
|
Security Issues
|
150
44
|
-----
|
151
45
|
|
152
|
-
If you’ve identified a potential security related issue in a driver or any other
|
46
|
+
If you’ve identified a potential security related issue in a driver or any other
|
47
|
+
MongoDB project, please report it by following the [instructions here](http://docs.mongodb.org/manual/tutorial/create-a-vulnerability-report).
|
153
48
|
|
154
49
|
Release History
|
155
50
|
-----
|
@@ -159,7 +54,7 @@ Full release notes and release history are available [here](https://github.com/m
|
|
159
54
|
License
|
160
55
|
-----
|
161
56
|
|
162
|
-
Copyright (C) 2009-
|
57
|
+
Copyright (C) 2009-2015 MongoDB, Inc.
|
163
58
|
|
164
59
|
Licensed under the Apache License, Version 2.0 (the "License");
|
165
60
|
you may not use this file except in compliance with the License.
|
@@ -175,9 +70,9 @@ License
|
|
175
70
|
|
176
71
|
[rubygems-img]: https://badge.fury.io/rb/mongo.png
|
177
72
|
[rubygems-url]: http://badge.fury.io/rb/mongo
|
178
|
-
[travis-img]: https://secure.travis-ci.org/mongodb/mongo-ruby-driver.png?branch=
|
179
|
-
[travis-url]: http://travis-ci.org/mongodb/mongo-ruby-driver?branch=
|
180
|
-
[codeclimate-img]: https://codeclimate.com/github/mongodb/mongo-ruby-driver.png?branch=
|
181
|
-
[codeclimate-url]: https://codeclimate.com/github/mongodb/mongo-ruby-driver?branch=
|
182
|
-
[coveralls-img]: https://coveralls.io/repos/mongodb/mongo-ruby-driver/badge.png?branch=
|
183
|
-
[coveralls-url]: https://coveralls.io/r/mongodb/mongo-ruby-driver?branch=
|
73
|
+
[travis-img]: https://secure.travis-ci.org/mongodb/mongo-ruby-driver.png?branch=master
|
74
|
+
[travis-url]: http://travis-ci.org/mongodb/mongo-ruby-driver?branch=master
|
75
|
+
[codeclimate-img]: https://codeclimate.com/github/mongodb/mongo-ruby-driver.png?branch=master
|
76
|
+
[codeclimate-url]: https://codeclimate.com/github/mongodb/mongo-ruby-driver?branch=master
|
77
|
+
[coveralls-img]: https://coveralls.io/repos/mongodb/mongo-ruby-driver/badge.png?branch=master
|
78
|
+
[coveralls-url]: https://coveralls.io/r/mongodb/mongo-ruby-driver?branch=master
|
data/Rakefile
CHANGED
@@ -1,31 +1,49 @@
|
|
1
|
-
|
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.
|
1
|
+
#!/usr/bin/env ruby
|
14
2
|
|
15
3
|
require 'rubygems'
|
16
4
|
|
17
5
|
begin
|
18
6
|
require 'bundler'
|
7
|
+
require 'bundler/gem_tasks'
|
19
8
|
rescue LoadError
|
20
|
-
raise '[FAIL] Bundler not found! Install it with
|
9
|
+
raise '[FAIL] Bundler not found! Install it with ' +
|
10
|
+
'`gem install bundler; bundle install`.'
|
21
11
|
end
|
22
12
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
13
|
+
default_groups = [:default, :testing]
|
14
|
+
Bundler.require(*default_groups)
|
15
|
+
|
16
|
+
require 'rspec/core/rake_task'
|
17
|
+
|
18
|
+
RSpec::Core::RakeTask.new(:spec)
|
19
|
+
task :default => :spec
|
20
|
+
|
21
|
+
namespace :spec do
|
22
|
+
if RUBY_VERSION > '1.9' && RUBY_VERSION < '2.2'
|
23
|
+
require 'coveralls/rake/task'
|
24
|
+
Coveralls::RakeTask.new
|
25
|
+
task :ci => [:spec, 'coveralls:push']
|
26
|
+
else
|
27
|
+
task :ci => [:spec]
|
28
|
+
end
|
29
29
|
end
|
30
30
|
|
31
|
-
|
31
|
+
task :release => :spec do
|
32
|
+
system "git tag -a #{Mongo::VERSION} -m 'Tagging release: #{Mongo::VERSION}'"
|
33
|
+
system "git push --tags"
|
34
|
+
system "gem build mongo.gemspec"
|
35
|
+
system "gem push mongo-#{Mongo::VERSION}.gem"
|
36
|
+
system "rm mongo-#{Mongo::VERSION}.gem"
|
37
|
+
end
|
38
|
+
|
39
|
+
desc "Generate all documentation"
|
40
|
+
task :docs => 'docs:yard'
|
41
|
+
|
42
|
+
namespace :docs do
|
43
|
+
desc "Generate yard documention"
|
44
|
+
task :yard do
|
45
|
+
out = File.join('docs', Mongo::VERSION)
|
46
|
+
FileUtils.rm_rf(out)
|
47
|
+
system "yardoc -o #{out} --title mongo-#{Mongo::VERSION}"
|
48
|
+
end
|
49
|
+
end
|
data/bin/mongo_console
CHANGED
@@ -1,43 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
|
17
|
-
org_argv = ARGV.dup
|
18
|
-
ARGV.clear
|
19
|
-
|
20
|
-
$LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
21
|
-
|
3
|
+
$LOAD_PATH[0, 0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
+
require 'pry'
|
22
5
|
require 'mongo'
|
23
|
-
include Mongo
|
24
6
|
|
25
|
-
|
26
|
-
|
27
|
-
dbnm = org_argv[2] || ENV['MONGO_RUBY_DRIVER_DB'] || 'ruby-mongo-console'
|
28
|
-
|
29
|
-
puts "Connecting to #{host}:#{port} (CLIENT) on with database #{dbnm} (DB)"
|
30
|
-
CLIENT = MongoClient.new(host, port)
|
31
|
-
DB = CLIENT.db(dbnm)
|
32
|
-
|
33
|
-
# try pry if available, fall back to irb
|
34
|
-
begin
|
35
|
-
require 'pry'
|
36
|
-
CONSOLE_CLASS = Pry
|
37
|
-
rescue LoadError
|
38
|
-
require 'irb'
|
39
|
-
CONSOLE_CLASS = IRB
|
40
|
-
end
|
7
|
+
# include the mongo namespace
|
8
|
+
include Mongo
|
41
9
|
|
42
|
-
|
43
|
-
|
10
|
+
Pry.config.prompt_name = 'mongo'
|
11
|
+
Pry.start
|
@@ -0,0 +1,85 @@
|
|
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 Address
|
17
|
+
|
18
|
+
# Sets up resolution with IPv4 support if the address is an ip
|
19
|
+
# address.
|
20
|
+
#
|
21
|
+
# @since 2.0.0
|
22
|
+
class IPv4
|
23
|
+
|
24
|
+
# @return [ String ] host The original host name.
|
25
|
+
attr_reader :host
|
26
|
+
|
27
|
+
# @return [ Integer ] port The port.
|
28
|
+
attr_reader :port
|
29
|
+
|
30
|
+
# @return [ String ] seed The seed address.
|
31
|
+
attr_reader :seed
|
32
|
+
|
33
|
+
# The regular expression to use to match an IPv4 ip address.
|
34
|
+
#
|
35
|
+
# @since 2.0.0
|
36
|
+
MATCH = Regexp.new('/\./').freeze
|
37
|
+
|
38
|
+
# Initialize the IPv4 resolver.
|
39
|
+
#
|
40
|
+
# @example Initialize the resolver.
|
41
|
+
# IPv4.new("127.0.0.1:28011")
|
42
|
+
#
|
43
|
+
# @param [ String ] address The address to resolve.
|
44
|
+
#
|
45
|
+
# @since 2.0.0
|
46
|
+
def initialize(address)
|
47
|
+
parts = address.split(':')
|
48
|
+
@host = parts[0]
|
49
|
+
@port = (parts[1] || 27017).to_i
|
50
|
+
@seed = address
|
51
|
+
end
|
52
|
+
|
53
|
+
# Get a socket for the provided address type, given the options.
|
54
|
+
#
|
55
|
+
# @example Get an IPv4 socket.
|
56
|
+
# ipv4.socket(5, :ssl => true)
|
57
|
+
#
|
58
|
+
# @param [ Float ] timeout The socket timeout.
|
59
|
+
# @param [ Hash ] ssl_options SSL options.
|
60
|
+
#
|
61
|
+
# @return [ Pool::Socket::SSL, Pool::Socket::TCP ] The socket.
|
62
|
+
#
|
63
|
+
# @since 2.0.0
|
64
|
+
def socket(timeout, ssl_options = {})
|
65
|
+
unless ssl_options.empty?
|
66
|
+
Socket::SSL.new(host, port, timeout, Socket::PF_INET, ssl_options)
|
67
|
+
else
|
68
|
+
Socket::TCP.new(host, port, timeout, Socket::PF_INET)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# Get the address as a string.
|
73
|
+
#
|
74
|
+
# @example Get the address as a string.
|
75
|
+
# ipv4.to_s
|
76
|
+
#
|
77
|
+
# @return [ String ] The nice string.
|
78
|
+
#
|
79
|
+
# @since 2.0.0
|
80
|
+
def to_s
|
81
|
+
"#{host}:#{port}"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,85 @@
|
|
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 Address
|
17
|
+
|
18
|
+
# Sets up resolution with IPv6 support if the address is an ip
|
19
|
+
# address.
|
20
|
+
#
|
21
|
+
# @since 2.0.0
|
22
|
+
class IPv6
|
23
|
+
|
24
|
+
# @return [ String ] host The original host name.
|
25
|
+
attr_reader :host
|
26
|
+
|
27
|
+
# @return [ Integer ] port The port.
|
28
|
+
attr_reader :port
|
29
|
+
|
30
|
+
# @return [ String ] seed The seed address.
|
31
|
+
attr_reader :seed
|
32
|
+
|
33
|
+
# The regular expression to use to match an IPv6 ip address.
|
34
|
+
#
|
35
|
+
# @since 2.0.0
|
36
|
+
MATCH = Regexp.new('::').freeze
|
37
|
+
|
38
|
+
# Initialize the IPv6 resolver.
|
39
|
+
#
|
40
|
+
# @example Initialize the resolver.
|
41
|
+
# IPv6.new("[::1]:28011")
|
42
|
+
#
|
43
|
+
# @param [ String ] address The address to resolve.
|
44
|
+
#
|
45
|
+
# @since 2.0.0
|
46
|
+
def initialize(address)
|
47
|
+
parts = address.match(/\[(.+)\]:?(.+)?/)
|
48
|
+
@host = parts[1]
|
49
|
+
@port = (parts[2] || 27017).to_i
|
50
|
+
@seed = address
|
51
|
+
end
|
52
|
+
|
53
|
+
# Get a socket for the provided address type, given the options.
|
54
|
+
#
|
55
|
+
# @example Get an IPv6 socket.
|
56
|
+
# ipv4.socket(5, :ssl => true)
|
57
|
+
#
|
58
|
+
# @param [ Float ] timeout The socket timeout.
|
59
|
+
# @param [ Hash ] ssl_options SSL options.
|
60
|
+
#
|
61
|
+
# @return [ Pool::Socket::SSL, Pool::Socket::TCP ] The socket.
|
62
|
+
#
|
63
|
+
# @since 2.0.0
|
64
|
+
def socket(timeout, ssl_options = {})
|
65
|
+
unless ssl_options.empty?
|
66
|
+
Socket::SSL.new(host, port, timeout, Socket::PF_INET6, ssl_options)
|
67
|
+
else
|
68
|
+
Socket::TCP.new(host, port, timeout, Socket::PF_INET6)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# Get the address as a string.
|
73
|
+
#
|
74
|
+
# @example Get the address as a string.
|
75
|
+
# ipv4.to_s
|
76
|
+
#
|
77
|
+
# @return [ String ] The nice string.
|
78
|
+
#
|
79
|
+
# @since 2.0.0
|
80
|
+
def to_s
|
81
|
+
"#{host}:#{port}"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,76 @@
|
|
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 Address
|
17
|
+
|
18
|
+
# Sets up socket addresses.
|
19
|
+
#
|
20
|
+
# @since 2.0.0
|
21
|
+
class Unix
|
22
|
+
|
23
|
+
# @return [ String ] host The original host name.
|
24
|
+
attr_reader :host
|
25
|
+
|
26
|
+
# @return [ nil ] port Will always be nil.
|
27
|
+
attr_reader :port
|
28
|
+
|
29
|
+
# @return [ String ] seed The seed address.
|
30
|
+
attr_reader :seed
|
31
|
+
|
32
|
+
# The regular expression to use to match a socket path.
|
33
|
+
#
|
34
|
+
# @since 2.0.0
|
35
|
+
MATCH = Regexp.new('\.sock').freeze
|
36
|
+
|
37
|
+
# Initialize the socket resolver.
|
38
|
+
#
|
39
|
+
# @example Initialize the resolver.
|
40
|
+
# Sock.new("/path/to/socket.sock")
|
41
|
+
#
|
42
|
+
# @param [ String ] address The socket path.
|
43
|
+
#
|
44
|
+
# @since 2.0.0
|
45
|
+
def initialize(address)
|
46
|
+
@host = address
|
47
|
+
@seed = address
|
48
|
+
end
|
49
|
+
|
50
|
+
# Get a socket for the provided address type, given the options.
|
51
|
+
#
|
52
|
+
# @example Get a Unix socket.
|
53
|
+
# ipv4.socket(5)
|
54
|
+
#
|
55
|
+
# @param [ Float ] timeout The socket timeout.
|
56
|
+
# @param [ Hash ] ssl_options SSL options - ignored.
|
57
|
+
#
|
58
|
+
# @return [ Pool::Socket::Unix ] The socket.
|
59
|
+
#
|
60
|
+
# @since 2.0.0
|
61
|
+
def socket(timeout, ssl_options = {})
|
62
|
+
Socket::Unix.new(host, timeout, Socket::AF_UNIX)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Get the address as a string.
|
66
|
+
#
|
67
|
+
# @example Get the address as a string.
|
68
|
+
# ipv4.to_s
|
69
|
+
#
|
70
|
+
# @return [ String ] The nice string.
|
71
|
+
#
|
72
|
+
# @since 2.0.0
|
73
|
+
alias :to_s :host
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|