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.
Files changed (475) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CONTRIBUTING.md +64 -0
  4. data/LICENSE +1 -1
  5. data/README.md +21 -126
  6. data/Rakefile +39 -21
  7. data/bin/mongo_console +6 -38
  8. data/lib/mongo/address/ipv4.rb +85 -0
  9. data/lib/mongo/address/ipv6.rb +85 -0
  10. data/lib/mongo/address/unix.rb +76 -0
  11. data/lib/mongo/address.rb +111 -0
  12. data/lib/mongo/auth/cr/conversation.rb +119 -0
  13. data/lib/mongo/auth/cr.rb +44 -0
  14. data/lib/mongo/auth/executable.rb +52 -0
  15. data/lib/mongo/auth/ldap/conversation.rb +92 -0
  16. data/lib/mongo/auth/ldap.rb +48 -0
  17. data/lib/mongo/auth/roles.rb +104 -0
  18. data/lib/mongo/auth/scram/conversation.rb +450 -0
  19. data/lib/mongo/auth/scram.rb +53 -0
  20. data/lib/mongo/auth/user/view.rb +102 -0
  21. data/lib/mongo/auth/user.rb +159 -0
  22. data/lib/mongo/auth/x509/conversation.rb +92 -0
  23. data/lib/mongo/auth/x509.rb +48 -0
  24. data/lib/mongo/auth.rb +108 -0
  25. data/lib/mongo/bulk_write/bulk_writable.rb +191 -0
  26. data/lib/mongo/bulk_write/deletable.rb +60 -0
  27. data/lib/mongo/bulk_write/insertable.rb +52 -0
  28. data/lib/mongo/bulk_write/ordered_bulk_write.rb +48 -0
  29. data/lib/mongo/bulk_write/replacable.rb +57 -0
  30. data/lib/mongo/bulk_write/unordered_bulk_write.rb +46 -0
  31. data/lib/mongo/bulk_write/updatable.rb +68 -0
  32. data/lib/mongo/bulk_write.rb +52 -0
  33. data/lib/mongo/client.rb +246 -0
  34. data/lib/mongo/cluster/topology/replica_set.rb +160 -0
  35. data/lib/mongo/cluster/topology/sharded.rb +132 -0
  36. data/lib/mongo/cluster/topology/standalone.rb +132 -0
  37. data/lib/mongo/cluster/topology/unknown.rb +155 -0
  38. data/lib/mongo/cluster/topology.rb +60 -0
  39. data/lib/mongo/cluster.rb +203 -0
  40. data/lib/mongo/collection/view/aggregation.rb +108 -0
  41. data/lib/mongo/collection/view/explainable.rb +49 -0
  42. data/lib/mongo/collection/view/immutable.rb +43 -0
  43. data/lib/mongo/collection/view/iterable.rb +48 -0
  44. data/lib/mongo/collection/view/map_reduce.rb +191 -0
  45. data/lib/mongo/collection/view/readable.rb +363 -0
  46. data/lib/mongo/collection/view/writable.rb +185 -0
  47. data/lib/mongo/collection/view.rb +169 -0
  48. data/lib/mongo/collection.rb +130 -1101
  49. data/lib/mongo/cursor.rb +78 -681
  50. data/lib/mongo/database/view.rb +101 -0
  51. data/lib/mongo/database.rb +224 -0
  52. data/lib/mongo/error/bulk_write_error.rb +41 -0
  53. data/lib/mongo/error/invalid_bulk_operation.rb +36 -0
  54. data/lib/mongo/error/invalid_bulk_operation_type.rb +36 -0
  55. data/lib/mongo/error/invalid_collection_name.rb +39 -0
  56. data/lib/mongo/error/invalid_database_name.rb +39 -0
  57. data/{test/replica_set/ssl_test.rb → lib/mongo/error/invalid_document.rb} +21 -14
  58. data/lib/mongo/error/invalid_file.rb +38 -0
  59. data/lib/mongo/error/invalid_nonce.rb +46 -0
  60. data/lib/mongo/error/invalid_replacement_document.rb +39 -0
  61. data/lib/mongo/error/invalid_signature.rb +47 -0
  62. data/{test/functional/ssl_test.rb → lib/mongo/error/invalid_update_document.rb} +22 -12
  63. data/lib/mongo/error/max_bson_size.rb +40 -0
  64. data/lib/mongo/error/max_message_size.rb +42 -0
  65. data/{test/functional/db_connection_test.rb → lib/mongo/error/multi_index_drop.rb} +17 -8
  66. data/lib/mongo/{utils.rb → error/need_primary_server.rb} +10 -6
  67. data/lib/mongo/{connection.rb → error/operation_failure.rb} +10 -6
  68. data/lib/mongo/error/parser.rb +77 -0
  69. data/lib/mongo/{connection/socket.rb → error/socket_error.rb} +10 -5
  70. data/lib/mongo/error/socket_timeout_error.rb +23 -0
  71. data/lib/mongo/error/unsupported_features.rb +43 -0
  72. data/lib/mongo/error.rb +82 -0
  73. data/lib/mongo/event/listeners.rb +63 -0
  74. data/lib/mongo/event/primary_elected.rb +53 -0
  75. data/lib/mongo/event/publisher.rb +42 -0
  76. data/lib/mongo/event/server_added.rb +53 -0
  77. data/lib/mongo/event/server_removed.rb +53 -0
  78. data/lib/mongo/event/subscriber.rb +41 -0
  79. data/lib/mongo/event.rb +40 -0
  80. data/lib/mongo/grid/file/chunk.rb +184 -0
  81. data/lib/mongo/grid/file/metadata.rb +229 -0
  82. data/lib/mongo/grid/file.rb +106 -0
  83. data/lib/mongo/grid/fs.rb +149 -0
  84. data/lib/mongo/{gridfs.rb → grid.rb} +3 -5
  85. data/lib/mongo/index/view.rb +261 -0
  86. data/lib/mongo/index.rb +64 -0
  87. data/lib/mongo/loggable.rb +126 -0
  88. data/lib/mongo/logger.rb +132 -0
  89. data/lib/mongo/operation/aggregate/result.rb +88 -0
  90. data/lib/mongo/operation/aggregate.rb +100 -0
  91. data/lib/mongo/operation/command.rb +62 -0
  92. data/lib/mongo/operation/executable.rb +105 -0
  93. data/lib/mongo/operation/kill_cursors.rb +39 -0
  94. data/lib/mongo/operation/limited.rb +37 -0
  95. data/lib/mongo/operation/list_collections/result.rb +114 -0
  96. data/lib/mongo/operation/list_indexes/result.rb +118 -0
  97. data/lib/mongo/operation/map_reduce/result.rb +122 -0
  98. data/lib/mongo/operation/map_reduce.rb +96 -0
  99. data/lib/mongo/operation/read/collections_info.rb +67 -0
  100. data/lib/mongo/operation/read/get_more.rb +71 -0
  101. data/lib/mongo/operation/read/indexes.rb +68 -0
  102. data/lib/mongo/operation/read/list_collections.rb +75 -0
  103. data/lib/mongo/operation/read/list_indexes.rb +77 -0
  104. data/lib/mongo/operation/read/query.rb +71 -0
  105. data/lib/mongo/{functional.rb → operation/read.rb} +7 -7
  106. data/lib/mongo/operation/read_preferrable.rb +34 -0
  107. data/lib/mongo/operation/result.rb +259 -0
  108. data/lib/mongo/operation/specifiable.rb +397 -0
  109. data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +75 -0
  110. data/lib/mongo/operation/write/bulk/bulk_delete.rb +144 -0
  111. data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +68 -0
  112. data/lib/mongo/operation/write/bulk/bulk_insert.rb +129 -0
  113. data/lib/mongo/operation/write/bulk/bulk_mergable.rb +67 -0
  114. data/lib/mongo/operation/write/bulk/bulk_update/result.rb +162 -0
  115. data/lib/mongo/operation/write/bulk/bulk_update.rb +153 -0
  116. data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +83 -0
  117. data/lib/mongo/operation/write/bulk.rb +17 -0
  118. data/lib/mongo/operation/write/command/create_index.rb +50 -0
  119. data/lib/mongo/operation/write/command/create_user.rb +43 -0
  120. data/lib/mongo/operation/write/command/delete.rb +56 -0
  121. data/lib/mongo/operation/write/command/drop_index.rb +51 -0
  122. data/lib/mongo/operation/write/command/insert.rb +55 -0
  123. data/lib/mongo/operation/write/command/remove_user.rb +42 -0
  124. data/lib/mongo/operation/write/command/update.rb +60 -0
  125. data/lib/mongo/operation/write/command/writable.rb +61 -0
  126. data/lib/mongo/operation/write/command.rb +22 -0
  127. data/lib/mongo/operation/write/create_index.rb +89 -0
  128. data/lib/mongo/operation/write/create_user.rb +75 -0
  129. data/lib/mongo/operation/write/delete/result.rb +40 -0
  130. data/lib/mongo/operation/write/delete.rb +93 -0
  131. data/lib/mongo/operation/write/drop_index.rb +62 -0
  132. data/lib/mongo/{utils/thread_local_variable_manager.rb → operation/write/insert/result.rb} +15 -8
  133. data/lib/mongo/operation/write/insert.rb +90 -0
  134. data/lib/mongo/operation/write/remove_user.rb +70 -0
  135. data/lib/mongo/operation/write/update/result.rb +160 -0
  136. data/lib/mongo/operation/write/update.rb +103 -0
  137. data/lib/mongo/{connection/socket/socket_util.rb → operation/write.rb} +10 -24
  138. data/lib/mongo/operation.rb +25 -0
  139. data/lib/mongo/options/mapper.rb +78 -0
  140. data/lib/mongo/options.rb +15 -0
  141. data/lib/mongo/protocol/bit_vector.rb +61 -0
  142. data/lib/mongo/protocol/delete.rb +94 -0
  143. data/lib/mongo/protocol/get_more.rb +99 -0
  144. data/lib/mongo/protocol/insert.rb +99 -0
  145. data/lib/mongo/protocol/kill_cursors.rb +74 -0
  146. data/lib/mongo/protocol/message.rb +252 -0
  147. data/lib/mongo/protocol/query.rb +147 -0
  148. data/lib/mongo/protocol/reply.rb +72 -0
  149. data/lib/mongo/protocol/serializers.rb +180 -0
  150. data/lib/mongo/protocol/update.rb +111 -0
  151. data/lib/mongo/protocol.rb +15 -0
  152. data/lib/mongo/server/connectable.rb +110 -0
  153. data/lib/mongo/server/connection.rb +134 -0
  154. data/lib/mongo/server/connection_pool/queue.rb +182 -0
  155. data/lib/mongo/server/connection_pool.rb +141 -0
  156. data/lib/mongo/server/context.rb +66 -0
  157. data/lib/mongo/server/description/features.rb +85 -0
  158. data/lib/mongo/server/description/inspector/primary_elected.rb +58 -0
  159. data/lib/mongo/server/description/inspector/server_added.rb +59 -0
  160. data/lib/mongo/server/description/inspector/server_removed.rb +59 -0
  161. data/lib/mongo/server/description/inspector.rb +79 -0
  162. data/lib/mongo/server/description.rb +450 -0
  163. data/lib/mongo/server/monitor/connection.rb +89 -0
  164. data/lib/mongo/server/monitor.rb +176 -0
  165. data/lib/mongo/server.rb +163 -0
  166. data/lib/mongo/server_selector/nearest.rb +94 -0
  167. data/lib/mongo/server_selector/primary.rb +88 -0
  168. data/lib/mongo/server_selector/primary_preferred.rb +94 -0
  169. data/lib/mongo/server_selector/secondary.rb +91 -0
  170. data/lib/mongo/server_selector/secondary_preferred.rb +96 -0
  171. data/lib/mongo/server_selector/selectable.rb +209 -0
  172. data/lib/mongo/server_selector.rb +81 -0
  173. data/lib/mongo/socket/ssl.rb +130 -0
  174. data/lib/mongo/socket/tcp.rb +69 -0
  175. data/lib/mongo/socket/unix.rb +64 -0
  176. data/lib/mongo/socket.rb +179 -0
  177. data/lib/mongo/uri.rb +504 -0
  178. data/lib/mongo/version.rb +21 -0
  179. data/lib/mongo/write_concern/acknowledged.rb +52 -0
  180. data/lib/mongo/write_concern/normalizable.rb +51 -0
  181. data/lib/mongo/write_concern/unacknowledged.rb +55 -0
  182. data/lib/mongo/write_concern.rb +99 -0
  183. data/lib/mongo.rb +24 -82
  184. data/mongo.gemspec +17 -14
  185. data/spec/certificates/ca.pem +17 -0
  186. data/spec/certificates/client.pem +101 -0
  187. data/spec/certificates/crl.pem +10 -0
  188. data/spec/certificates/crl_client_revoked.pem +12 -0
  189. data/spec/certificates/password_protected.pem +51 -0
  190. data/spec/certificates/server.pem +34 -0
  191. data/spec/mongo/address/ipv4_spec.rb +74 -0
  192. data/spec/mongo/address/ipv6_spec.rb +74 -0
  193. data/spec/mongo/address/unix_spec.rb +30 -0
  194. data/spec/mongo/address_spec.rb +206 -0
  195. data/spec/mongo/auth/cr_spec.rb +59 -0
  196. data/spec/mongo/auth/ldap_spec.rb +40 -0
  197. data/spec/mongo/auth/scram/conversation_spec.rb +197 -0
  198. data/spec/mongo/auth/scram_spec.rb +55 -0
  199. data/spec/mongo/auth/user/view_spec.rb +76 -0
  200. data/spec/mongo/auth/user_spec.rb +190 -0
  201. data/spec/mongo/auth/x509_spec.rb +40 -0
  202. data/spec/mongo/auth_spec.rb +65 -0
  203. data/spec/mongo/bulk/bulk_write_spec.rb +262 -0
  204. data/spec/mongo/client_spec.rb +564 -0
  205. data/spec/mongo/cluster/topology/replica_set_spec.rb +101 -0
  206. data/spec/mongo/cluster/topology/sharded_spec.rb +74 -0
  207. data/spec/mongo/cluster/topology/standalone_spec.rb +79 -0
  208. data/spec/mongo/cluster/topology_spec.rb +65 -0
  209. data/spec/mongo/cluster_spec.rb +129 -0
  210. data/spec/mongo/collection/view/aggregation_spec.rb +148 -0
  211. data/spec/mongo/collection/view/explainable_spec.rb +32 -0
  212. data/spec/mongo/collection/view/map_reduce_spec.rb +242 -0
  213. data/spec/mongo/collection/view/readable_spec.rb +603 -0
  214. data/spec/mongo/collection/view/writable_spec.rb +679 -0
  215. data/spec/mongo/collection/view_spec.rb +530 -0
  216. data/spec/mongo/collection_spec.rb +362 -0
  217. data/spec/mongo/crud_spec.rb +42 -0
  218. data/spec/mongo/cursor_spec.rb +295 -0
  219. data/spec/mongo/database_spec.rb +302 -0
  220. data/spec/mongo/error/parser_spec.rb +119 -0
  221. data/spec/mongo/event/publisher_spec.rb +50 -0
  222. data/spec/mongo/event/subscriber_spec.rb +34 -0
  223. data/spec/mongo/grid/file/chunk_spec.rb +226 -0
  224. data/spec/mongo/grid/file/metadata_spec.rb +92 -0
  225. data/spec/mongo/grid/file_spec.rb +172 -0
  226. data/spec/mongo/grid/fs_spec.rb +129 -0
  227. data/spec/mongo/index/view_spec.rb +330 -0
  228. data/spec/mongo/loggable_spec.rb +62 -0
  229. data/spec/mongo/logger_spec.rb +97 -0
  230. data/spec/mongo/operation/aggregate/result_spec.rb +80 -0
  231. data/spec/mongo/operation/aggregate_spec.rb +127 -0
  232. data/spec/mongo/operation/command_spec.rb +98 -0
  233. data/spec/mongo/operation/kill_cursors_spec.rb +66 -0
  234. data/spec/mongo/operation/limited_spec.rb +50 -0
  235. data/spec/mongo/operation/map_reduce_spec.rb +143 -0
  236. data/spec/mongo/operation/read/collections_info_spec.rb +40 -0
  237. data/spec/mongo/operation/read/get_more_spec.rb +81 -0
  238. data/spec/mongo/operation/read/indexes_spec.rb +31 -0
  239. data/spec/mongo/operation/read/query_spec.rb +84 -0
  240. data/spec/mongo/operation/result_spec.rb +275 -0
  241. data/spec/mongo/operation/specifiable_spec.rb +53 -0
  242. data/spec/mongo/operation/write/bulk_delete_spec.rb +235 -0
  243. data/spec/mongo/operation/write/bulk_insert_spec.rb +235 -0
  244. data/spec/mongo/operation/write/bulk_update_spec.rb +236 -0
  245. data/spec/mongo/operation/write/command/delete_spec.rb +103 -0
  246. data/spec/mongo/operation/write/command/insert_spec.rb +103 -0
  247. data/spec/mongo/operation/write/command/update_spec.rb +109 -0
  248. data/spec/mongo/operation/write/create_index_spec.rb +63 -0
  249. data/spec/mongo/operation/write/create_user_spec.rb +44 -0
  250. data/spec/mongo/operation/write/delete_spec.rb +186 -0
  251. data/spec/mongo/operation/write/drop_index_spec.rb +51 -0
  252. data/spec/mongo/operation/write/insert_spec.rb +244 -0
  253. data/spec/mongo/operation/write/remove_user_spec.rb +46 -0
  254. data/spec/mongo/operation/write/response_spec.rb +85 -0
  255. data/spec/mongo/operation/write/update_spec.rb +228 -0
  256. data/spec/mongo/protocol/delete_spec.rb +167 -0
  257. data/spec/mongo/protocol/get_more_spec.rb +146 -0
  258. data/spec/mongo/protocol/insert_spec.rb +161 -0
  259. data/spec/mongo/protocol/kill_cursors_spec.rb +101 -0
  260. data/spec/mongo/protocol/query_spec.rb +285 -0
  261. data/spec/mongo/protocol/reply_spec.rb +157 -0
  262. data/spec/mongo/protocol/update_spec.rb +186 -0
  263. data/spec/mongo/server/connection_pool/queue_spec.rb +170 -0
  264. data/spec/mongo/server/connection_pool_spec.rb +120 -0
  265. data/spec/mongo/server/connection_spec.rb +312 -0
  266. data/spec/mongo/server/description/features_spec.rb +138 -0
  267. data/spec/mongo/server/description/inspector/primary_elected_spec.rb +94 -0
  268. data/spec/mongo/server/description/inspector/server_added_spec.rb +92 -0
  269. data/spec/mongo/server/description/inspector/server_removed_spec.rb +95 -0
  270. data/spec/mongo/server/description_spec.rb +510 -0
  271. data/spec/mongo/server/monitor_spec.rb +144 -0
  272. data/spec/mongo/server_discovery_and_monitoring_spec.rb +103 -0
  273. data/spec/mongo/server_selection_rtt_spec.rb +104 -0
  274. data/spec/mongo/server_selection_spec.rb +89 -0
  275. data/spec/mongo/server_selector/nearest_spec.rb +250 -0
  276. data/spec/mongo/server_selector/primary_preferred_spec.rb +290 -0
  277. data/spec/mongo/server_selector/primary_spec.rb +114 -0
  278. data/spec/mongo/server_selector/secondary_preferred_spec.rb +252 -0
  279. data/spec/mongo/server_selector/secondary_spec.rb +196 -0
  280. data/spec/mongo/server_selector_spec.rb +101 -0
  281. data/spec/mongo/server_spec.rb +131 -0
  282. data/spec/mongo/uri_spec.rb +517 -0
  283. data/spec/mongo/write_concern/acknowledged_spec.rb +44 -0
  284. data/spec/mongo/write_concern/unacknowledged_spec.rb +15 -0
  285. data/spec/spec_helper.rb +133 -0
  286. data/spec/support/authorization.rb +247 -0
  287. data/spec/support/crud/read.rb +144 -0
  288. data/spec/support/crud/write.rb +214 -0
  289. data/spec/support/crud.rb +203 -0
  290. data/spec/support/crud_tests/read/aggregate.yml +43 -0
  291. data/spec/support/crud_tests/read/count.yml +37 -0
  292. data/spec/support/crud_tests/read/distinct.yml +33 -0
  293. data/spec/support/crud_tests/read/find.yml +50 -0
  294. data/spec/support/crud_tests/write/deleteMany.yml +36 -0
  295. data/spec/support/crud_tests/write/deleteOne.yml +49 -0
  296. data/spec/support/crud_tests/write/findOneAndDelete.yml +54 -0
  297. data/spec/support/crud_tests/write/findOneAndReplace.yml +153 -0
  298. data/spec/support/crud_tests/write/findOneAndUpdate.yml +161 -0
  299. data/spec/support/crud_tests/write/insertMany.yml +24 -0
  300. data/spec/support/crud_tests/write/insertOne.yml +19 -0
  301. data/spec/support/crud_tests/write/replaceOne.yml +96 -0
  302. data/spec/support/crud_tests/write/updateMany.yml +83 -0
  303. data/spec/support/crud_tests/write/updateOne.yml +80 -0
  304. data/spec/support/helpers.rb +140 -0
  305. data/spec/support/matchers.rb +37 -0
  306. data/spec/support/sdam/rs/discover_arbiters.yml +41 -0
  307. data/spec/support/sdam/rs/discover_passives.yml +41 -0
  308. data/spec/support/sdam/rs/discover_primary.yml +40 -0
  309. data/spec/support/sdam/rs/discover_secondary.yml +41 -0
  310. data/spec/support/sdam/rs/discovery.yml +195 -0
  311. data/spec/support/sdam/rs/ghost_discovered.yml +39 -0
  312. data/spec/support/sdam/rs/hosts_differ_from_seeds.yml +34 -0
  313. data/spec/support/sdam/rs/member_reconfig.yml +68 -0
  314. data/spec/support/sdam/rs/member_standalone.yml +60 -0
  315. data/spec/support/sdam/rs/new_primary.yml +74 -0
  316. data/spec/support/sdam/rs/new_primary_wrong_set_name.yml +71 -0
  317. data/spec/support/sdam/rs/non_rs_member.yml +31 -0
  318. data/spec/support/sdam/rs/normalize_case.yml +49 -0
  319. data/spec/support/sdam/rs/primary_becomes_standalone.yml +52 -0
  320. data/spec/support/sdam/rs/primary_changes_set_name.yml +57 -0
  321. data/spec/support/sdam/rs/primary_disconnect.yml +56 -0
  322. data/spec/support/sdam/rs/primary_wrong_set_name.yml +27 -0
  323. data/spec/support/sdam/rs/response_from_removed.yml +63 -0
  324. data/spec/support/sdam/rs/rsother_discovered.yml +41 -0
  325. data/spec/support/sdam/rs/sec_not_auth.yml +49 -0
  326. data/spec/support/sdam/rs/secondary_wrong_set_name.yml +28 -0
  327. data/spec/support/sdam/rs/secondary_wrong_set_name_with_primary.yml +69 -0
  328. data/spec/support/sdam/rs/unexpected_mongos.yml +26 -0
  329. data/spec/support/sdam/rs/wrong_set_name.yml +35 -0
  330. data/spec/support/sdam/sharded/multiple_mongoses.yml +46 -0
  331. data/spec/support/sdam/sharded/non_mongos_removed.yml +41 -0
  332. data/spec/support/sdam/sharded/normalize_uri_case.yml +32 -0
  333. data/spec/support/sdam/single/direct_connection_external_ip.yml +34 -0
  334. data/spec/support/sdam/single/direct_connection_mongos.yml +33 -0
  335. data/spec/support/sdam/single/direct_connection_rsarbiter.yml +35 -0
  336. data/spec/support/sdam/single/direct_connection_rsprimary.yml +34 -0
  337. data/spec/support/sdam/single/direct_connection_rssecondary.yml +35 -0
  338. data/spec/support/sdam/single/direct_connection_slave.yml +32 -0
  339. data/spec/support/sdam/single/direct_connection_standalone.yml +32 -0
  340. data/spec/support/sdam/single/not_ok_response.yml +39 -0
  341. data/spec/support/sdam/single/standalone_removed.yml +32 -0
  342. data/spec/support/sdam/single/unavailable_seed.yml +28 -0
  343. data/spec/support/server_discovery_and_monitoring.rb +167 -0
  344. data/spec/support/server_selection/rtt/first_value.yml +4 -0
  345. data/spec/support/server_selection/rtt/first_value_zero.yml +4 -0
  346. data/spec/support/server_selection/rtt/value_test_1.yml +4 -0
  347. data/spec/support/server_selection/rtt/value_test_2.yml +4 -0
  348. data/spec/support/server_selection/rtt/value_test_3.yml +4 -0
  349. data/spec/support/server_selection/rtt/value_test_4.yml +4 -0
  350. data/spec/support/server_selection/rtt/value_test_5.yml +4 -0
  351. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest.yml +26 -0
  352. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +21 -0
  353. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Primary.yml +21 -0
  354. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +26 -0
  355. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +21 -0
  356. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary.yml +26 -0
  357. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +26 -0
  358. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +21 -0
  359. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +21 -0
  360. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest.yml +33 -0
  361. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +26 -0
  362. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Primary.yml +29 -0
  363. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +29 -0
  364. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +29 -0
  365. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary.yml +31 -0
  366. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred.yml +31 -0
  367. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.yml +29 -0
  368. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary_non_matching.yml +26 -0
  369. data/spec/support/server_selection/selection/Sharded/read/SecondaryPreferred.yml +26 -0
  370. data/spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml +19 -0
  371. data/spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml +11 -0
  372. data/spec/support/server_selection.rb +157 -0
  373. data/spec/support/server_selection_rtt.rb +41 -0
  374. data/spec/support/shared/bulk_write.rb +535 -0
  375. data/spec/support/shared/cursor.rb +38 -0
  376. data/spec/support/shared/operation.rb +77 -0
  377. data/spec/support/shared/protocol.rb +31 -0
  378. data/spec/support/shared/server_selector.rb +111 -0
  379. data/spec/support/shared/socket.rb +82 -0
  380. data/spec/support/travis.rb +14 -0
  381. data.tar.gz.sig +2 -3
  382. metadata +583 -186
  383. metadata.gz.sig +0 -0
  384. data/VERSION +0 -1
  385. data/lib/mongo/bulk_write_collection_view.rb +0 -387
  386. data/lib/mongo/collection_writer.rb +0 -364
  387. data/lib/mongo/connection/node.rb +0 -249
  388. data/lib/mongo/connection/pool.rb +0 -340
  389. data/lib/mongo/connection/pool_manager.rb +0 -320
  390. data/lib/mongo/connection/sharding_pool_manager.rb +0 -67
  391. data/lib/mongo/connection/socket/ssl_socket.rb +0 -95
  392. data/lib/mongo/connection/socket/tcp_socket.rb +0 -87
  393. data/lib/mongo/connection/socket/unix_socket.rb +0 -39
  394. data/lib/mongo/db.rb +0 -808
  395. data/lib/mongo/exception.rb +0 -145
  396. data/lib/mongo/functional/authentication.rb +0 -455
  397. data/lib/mongo/functional/logging.rb +0 -85
  398. data/lib/mongo/functional/read_preference.rb +0 -183
  399. data/lib/mongo/functional/scram.rb +0 -556
  400. data/lib/mongo/functional/uri_parser.rb +0 -409
  401. data/lib/mongo/functional/write_concern.rb +0 -66
  402. data/lib/mongo/gridfs/grid.rb +0 -112
  403. data/lib/mongo/gridfs/grid_ext.rb +0 -53
  404. data/lib/mongo/gridfs/grid_file_system.rb +0 -163
  405. data/lib/mongo/gridfs/grid_io.rb +0 -484
  406. data/lib/mongo/legacy.rb +0 -140
  407. data/lib/mongo/mongo_client.rb +0 -697
  408. data/lib/mongo/mongo_replica_set_client.rb +0 -535
  409. data/lib/mongo/mongo_sharded_client.rb +0 -159
  410. data/lib/mongo/networking.rb +0 -372
  411. data/lib/mongo/utils/conversions.rb +0 -110
  412. data/lib/mongo/utils/core_ext.rb +0 -70
  413. data/lib/mongo/utils/server_version.rb +0 -69
  414. data/lib/mongo/utils/support.rb +0 -80
  415. data/test/functional/authentication_test.rb +0 -39
  416. data/test/functional/bulk_api_stress_test.rb +0 -133
  417. data/test/functional/bulk_write_collection_view_test.rb +0 -1198
  418. data/test/functional/client_test.rb +0 -627
  419. data/test/functional/collection_test.rb +0 -2175
  420. data/test/functional/collection_writer_test.rb +0 -83
  421. data/test/functional/conversions_test.rb +0 -163
  422. data/test/functional/cursor_fail_test.rb +0 -57
  423. data/test/functional/cursor_message_test.rb +0 -56
  424. data/test/functional/cursor_test.rb +0 -683
  425. data/test/functional/db_api_test.rb +0 -835
  426. data/test/functional/db_test.rb +0 -348
  427. data/test/functional/grid_file_system_test.rb +0 -285
  428. data/test/functional/grid_io_test.rb +0 -252
  429. data/test/functional/grid_test.rb +0 -273
  430. data/test/functional/pool_test.rb +0 -136
  431. data/test/functional/safe_test.rb +0 -98
  432. data/test/functional/support_test.rb +0 -62
  433. data/test/functional/timeout_test.rb +0 -60
  434. data/test/functional/uri_test.rb +0 -446
  435. data/test/functional/write_concern_test.rb +0 -118
  436. data/test/helpers/general.rb +0 -50
  437. data/test/helpers/test_unit.rb +0 -476
  438. data/test/replica_set/authentication_test.rb +0 -37
  439. data/test/replica_set/basic_test.rb +0 -189
  440. data/test/replica_set/client_test.rb +0 -393
  441. data/test/replica_set/connection_test.rb +0 -138
  442. data/test/replica_set/count_test.rb +0 -66
  443. data/test/replica_set/cursor_test.rb +0 -220
  444. data/test/replica_set/insert_test.rb +0 -157
  445. data/test/replica_set/max_values_test.rb +0 -151
  446. data/test/replica_set/pinning_test.rb +0 -105
  447. data/test/replica_set/query_test.rb +0 -73
  448. data/test/replica_set/read_preference_test.rb +0 -219
  449. data/test/replica_set/refresh_test.rb +0 -211
  450. data/test/replica_set/replication_ack_test.rb +0 -95
  451. data/test/sharded_cluster/basic_test.rb +0 -203
  452. data/test/shared/authentication/basic_auth_shared.rb +0 -260
  453. data/test/shared/authentication/bulk_api_auth_shared.rb +0 -249
  454. data/test/shared/authentication/gssapi_shared.rb +0 -176
  455. data/test/shared/authentication/sasl_plain_shared.rb +0 -96
  456. data/test/shared/authentication/scram_shared.rb +0 -92
  457. data/test/shared/ssl_shared.rb +0 -235
  458. data/test/test_helper.rb +0 -61
  459. data/test/threading/basic_test.rb +0 -120
  460. data/test/tools/mongo_config.rb +0 -708
  461. data/test/tools/mongo_config_test.rb +0 -160
  462. data/test/unit/client_test.rb +0 -381
  463. data/test/unit/collection_test.rb +0 -166
  464. data/test/unit/connection_test.rb +0 -335
  465. data/test/unit/cursor_test.rb +0 -307
  466. data/test/unit/db_test.rb +0 -136
  467. data/test/unit/grid_test.rb +0 -76
  468. data/test/unit/mongo_sharded_client_test.rb +0 -48
  469. data/test/unit/node_test.rb +0 -93
  470. data/test/unit/pool_manager_test.rb +0 -111
  471. data/test/unit/read_pref_test.rb +0 -406
  472. data/test/unit/read_test.rb +0 -159
  473. data/test/unit/safe_test.rb +0 -158
  474. data/test/unit/sharding_pool_manager_test.rb +0 -84
  475. data/test/unit/write_concern_test.rb +0 -175
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 756bee5f8dcecc237006f5ebfe8d4087ae06f855
4
- data.tar.gz: c504ef1e1492dee4ff6e5bdab83fac92cdf54069
3
+ metadata.gz: f1b1c17b52cc160be41aa083e33789a71d99b6b8
4
+ data.tar.gz: ba505d3b59d858a210a570670a98c6baded60489
5
5
  SHA512:
6
- metadata.gz: d87e98fa9b33d9d446128a61efc85e0b7e0c67ebfd58bc2e42758156a4794d2c5aa09ff4dd3a87900b1593213145d813aa663df58d6d1fb11325441214fc29fe
7
- data.tar.gz: 07ec6387420ed99a2308266fa50342de858f0fbac16ee308853f2fe36e633901e61c160b67ad292e1cc25b47135ae19267ec08d14fea3cb8a7e3f3b4fa6d4916
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) 2008-2013 MongoDB, Inc.
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
- Installation
5
+ Documentation
6
6
  -----
7
7
 
8
- **Gem Installation**<br>
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
- ```bash
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
- **Support Channels**
99
-
100
- For issues, questions or feedback related to the Ruby driver, please look into our [support channels](http://www.mongodb.org/about/support).
101
- Please do not email any of the Ruby developers directly with issues or questions. You'll get a quicker answer on the [mongodb-user list](http://groups.google.com/group/mongodb-user) Google Group.
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
- **HOW TO ASK FOR HELP**
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
- 1. Environment
120
- 2. Ruby version, including patch-level
121
- 3. MongoDB version
122
- 4. A test case or code snippets
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 MongoDB project, please report it by following the [instructions here](http://docs.mongodb.org/manual/tutorial/create-a-vulnerability-report).
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-2013 MongoDB, Inc.
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=1.x-stable
179
- [travis-url]: http://travis-ci.org/mongodb/mongo-ruby-driver?branch=1.x-stable
180
- [codeclimate-img]: https://codeclimate.com/github/mongodb/mongo-ruby-driver.png?branch=1.x-stable
181
- [codeclimate-url]: https://codeclimate.com/github/mongodb/mongo-ruby-driver?branch=1.x-stable
182
- [coveralls-img]: https://coveralls.io/repos/mongodb/mongo-ruby-driver/badge.png?branch=1.x-stable
183
- [coveralls-url]: https://coveralls.io/r/mongodb/mongo-ruby-driver?branch=1.x-stable
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
- # Copyright (C) 2009-2013 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.
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 `gem install bundler && bundle`.'
9
+ raise '[FAIL] Bundler not found! Install it with ' +
10
+ '`gem install bundler; bundle install`.'
21
11
  end
22
12
 
23
- rake_tasks = Dir.glob(File.join('tasks', '**', '*.rake')).sort
24
- if ENV.keys.any? { |k| k.end_with?('_CI') }
25
- Bundler.require(:default, :testing)
26
- rake_tasks.reject! { |r| r =~ /deploy/ }
27
- else
28
- Bundler.require(:default, :testing, :deploy, :development)
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
- rake_tasks.each { |rake| load File.expand_path(rake) }
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
- # Copyright (C) 2009-2013 MongoDB, Inc.
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
- host = org_argv[0] || ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost'
26
- port = org_argv[1] || ENV['MONGO_RUBY_DRIVER_PORT'] || MongoClient::DEFAULT_PORT
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
- puts "Starting #{CONSOLE_CLASS.name} session..."
43
- CONSOLE_CLASS.start(__FILE__)
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