mongoid 8.1.4 → 9.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 (1016) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +1 -3
  3. data/LICENSE +1 -1
  4. data/README.md +4 -9
  5. data/Rakefile +42 -26
  6. data/lib/config/locales/en.yml +66 -5
  7. data/lib/mongoid/association/accessors.rb +16 -16
  8. data/lib/mongoid/association/bindable.rb +27 -8
  9. data/lib/mongoid/association/builders.rb +3 -2
  10. data/lib/mongoid/association/constrainable.rb +1 -0
  11. data/lib/mongoid/association/depending.rb +16 -1
  12. data/lib/mongoid/association/eager.rb +160 -0
  13. data/lib/mongoid/association/eager_loadable.rb +15 -4
  14. data/lib/mongoid/association/embedded/batchable.rb +6 -7
  15. data/lib/mongoid/association/embedded/cyclic.rb +1 -0
  16. data/lib/mongoid/association/embedded/eager.rb +23 -0
  17. data/lib/mongoid/association/embedded/embedded_in/binding.rb +5 -4
  18. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +1 -0
  19. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +21 -7
  20. data/lib/mongoid/association/embedded/embedded_in.rb +7 -0
  21. data/lib/mongoid/association/embedded/embeds_many/binding.rb +3 -2
  22. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +1 -0
  23. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +134 -144
  24. data/lib/mongoid/association/embedded/embeds_many.rb +1 -0
  25. data/lib/mongoid/association/embedded/embeds_one/binding.rb +3 -2
  26. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +1 -0
  27. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +112 -54
  28. data/lib/mongoid/association/embedded/embeds_one.rb +1 -0
  29. data/lib/mongoid/association/embedded.rb +2 -0
  30. data/lib/mongoid/association/macros.rb +17 -14
  31. data/lib/mongoid/association/many.rb +1 -0
  32. data/lib/mongoid/association/marshalable.rb +4 -0
  33. data/lib/mongoid/association/nested/many.rb +8 -3
  34. data/lib/mongoid/association/nested/nested_buildable.rb +32 -0
  35. data/lib/mongoid/association/nested/one.rb +6 -3
  36. data/lib/mongoid/association/nested.rb +1 -0
  37. data/lib/mongoid/association/one.rb +1 -0
  38. data/lib/mongoid/association/options.rb +9 -2
  39. data/lib/mongoid/association/proxy.rb +30 -18
  40. data/lib/mongoid/association/referenced/auto_save.rb +6 -2
  41. data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
  42. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -0
  43. data/lib/mongoid/association/referenced/belongs_to/eager.rb +2 -1
  44. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +19 -14
  45. data/lib/mongoid/association/referenced/belongs_to.rb +2 -1
  46. data/lib/mongoid/association/referenced/counter_cache.rb +7 -2
  47. data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +15 -3
  48. data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +1 -0
  49. data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -1
  50. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +132 -94
  51. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +8 -3
  52. data/lib/mongoid/association/referenced/has_many/binding.rb +1 -0
  53. data/lib/mongoid/association/referenced/has_many/buildable.rb +1 -0
  54. data/lib/mongoid/association/referenced/has_many/eager.rb +2 -1
  55. data/lib/mongoid/association/referenced/has_many/enumerable.rb +39 -6
  56. data/lib/mongoid/association/referenced/has_many/proxy.rb +131 -104
  57. data/lib/mongoid/association/referenced/has_many.rb +2 -1
  58. data/lib/mongoid/association/referenced/has_one/binding.rb +1 -0
  59. data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -0
  60. data/lib/mongoid/association/referenced/has_one/eager.rb +3 -3
  61. data/lib/mongoid/association/referenced/has_one/proxy.rb +37 -28
  62. data/lib/mongoid/association/referenced/has_one.rb +5 -1
  63. data/lib/mongoid/association/referenced/syncable.rb +7 -6
  64. data/lib/mongoid/association/referenced.rb +1 -0
  65. data/lib/mongoid/association/reflections.rb +5 -4
  66. data/lib/mongoid/association/relatable.rb +10 -4
  67. data/lib/mongoid/association.rb +5 -0
  68. data/lib/mongoid/atomic/modifiers.rb +1 -0
  69. data/lib/mongoid/atomic/paths/embedded/many.rb +2 -1
  70. data/lib/mongoid/atomic/paths/embedded/one.rb +1 -0
  71. data/lib/mongoid/atomic/paths/embedded.rb +1 -0
  72. data/lib/mongoid/atomic/paths/root.rb +1 -0
  73. data/lib/mongoid/atomic/paths.rb +1 -0
  74. data/lib/mongoid/atomic.rb +32 -69
  75. data/lib/mongoid/atomic_update_preparer.rb +88 -0
  76. data/lib/mongoid/attributes/dynamic.rb +1 -0
  77. data/lib/mongoid/attributes/embedded.rb +34 -0
  78. data/lib/mongoid/attributes/nested.rb +3 -2
  79. data/lib/mongoid/attributes/processing.rb +11 -10
  80. data/lib/mongoid/attributes/projector.rb +1 -0
  81. data/lib/mongoid/attributes/readonly.rb +1 -0
  82. data/lib/mongoid/attributes.rb +6 -4
  83. data/lib/mongoid/cacheable.rb +2 -1
  84. data/lib/mongoid/changeable.rb +58 -49
  85. data/lib/mongoid/clients/factory.rb +37 -1
  86. data/lib/mongoid/clients/options.rb +113 -3
  87. data/lib/mongoid/clients/sessions.rb +245 -64
  88. data/lib/mongoid/clients/storage_options.rb +37 -1
  89. data/lib/mongoid/clients/validators/storage.rb +1 -0
  90. data/lib/mongoid/clients/validators.rb +1 -0
  91. data/lib/mongoid/clients.rb +36 -4
  92. data/lib/mongoid/collection_configurable.rb +1 -0
  93. data/lib/mongoid/composable.rb +5 -0
  94. data/lib/mongoid/config/defaults.rb +16 -36
  95. data/lib/mongoid/config/encryption.rb +213 -0
  96. data/lib/mongoid/config/environment.rb +2 -5
  97. data/lib/mongoid/config/introspection.rb +152 -0
  98. data/lib/mongoid/config/options.rb +8 -3
  99. data/lib/mongoid/config/validators/async_query_executor.rb +12 -2
  100. data/lib/mongoid/config/validators/client.rb +1 -0
  101. data/lib/mongoid/config/validators/option.rb +1 -0
  102. data/lib/mongoid/config/validators.rb +1 -0
  103. data/lib/mongoid/config.rb +57 -91
  104. data/lib/mongoid/contextual/aggregable/memory.rb +1 -0
  105. data/lib/mongoid/contextual/aggregable/mongo.rb +2 -5
  106. data/lib/mongoid/contextual/aggregable/none.rb +1 -0
  107. data/lib/mongoid/contextual/aggregable.rb +1 -0
  108. data/lib/mongoid/contextual/atomic.rb +98 -11
  109. data/lib/mongoid/contextual/command.rb +3 -0
  110. data/lib/mongoid/contextual/map_reduce.rb +6 -0
  111. data/lib/mongoid/contextual/memory.rb +45 -42
  112. data/lib/mongoid/contextual/mongo/documents_loader.rb +3 -2
  113. data/lib/mongoid/contextual/mongo.rb +32 -60
  114. data/lib/mongoid/contextual/none.rb +15 -32
  115. data/lib/mongoid/contextual/queryable.rb +4 -0
  116. data/lib/mongoid/contextual.rb +4 -0
  117. data/lib/mongoid/copyable.rb +3 -2
  118. data/lib/mongoid/criteria/findable.rb +44 -4
  119. data/lib/mongoid/criteria/includable.rb +5 -4
  120. data/lib/mongoid/criteria/inspectable.rb +4 -0
  121. data/lib/mongoid/criteria/marshalable.rb +4 -0
  122. data/lib/mongoid/criteria/modifiable.rb +5 -0
  123. data/lib/mongoid/criteria/options.rb +1 -0
  124. data/lib/mongoid/criteria/permission.rb +5 -0
  125. data/lib/mongoid/criteria/queryable/aggregable.rb +1 -0
  126. data/lib/mongoid/criteria/queryable/expandable.rb +1 -0
  127. data/lib/mongoid/criteria/queryable/extensions/array.rb +2 -1
  128. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -5
  129. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -1
  130. data/lib/mongoid/criteria/queryable/extensions/date.rb +4 -3
  131. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +2 -1
  132. data/lib/mongoid/criteria/queryable/extensions/hash.rb +2 -1
  133. data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +2 -1
  134. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +2 -1
  135. data/lib/mongoid/criteria/queryable/extensions/object.rb +4 -1
  136. data/lib/mongoid/criteria/queryable/extensions/range.rb +2 -1
  137. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +7 -1
  138. data/lib/mongoid/criteria/queryable/extensions/set.rb +2 -1
  139. data/lib/mongoid/criteria/queryable/extensions/string.rb +15 -3
  140. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +2 -1
  141. data/lib/mongoid/criteria/queryable/extensions/time.rb +2 -1
  142. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +3 -1
  143. data/lib/mongoid/criteria/queryable/extensions.rb +1 -0
  144. data/lib/mongoid/criteria/queryable/key.rb +10 -0
  145. data/lib/mongoid/criteria/queryable/macroable.rb +1 -0
  146. data/lib/mongoid/criteria/queryable/mergeable.rb +1 -0
  147. data/lib/mongoid/criteria/queryable/optional.rb +1 -0
  148. data/lib/mongoid/criteria/queryable/options.rb +1 -0
  149. data/lib/mongoid/criteria/queryable/pipeline.rb +1 -0
  150. data/lib/mongoid/criteria/queryable/selectable.rb +11 -26
  151. data/lib/mongoid/criteria/queryable/selector.rb +5 -2
  152. data/lib/mongoid/criteria/queryable/smash.rb +1 -0
  153. data/lib/mongoid/criteria/queryable/storable.rb +4 -3
  154. data/lib/mongoid/criteria/queryable.rb +1 -0
  155. data/lib/mongoid/criteria/scopable.rb +5 -0
  156. data/lib/mongoid/criteria/translator.rb +1 -0
  157. data/lib/mongoid/criteria.rb +37 -10
  158. data/lib/mongoid/deprecable.rb +1 -0
  159. data/lib/mongoid/deprecation.rb +8 -4
  160. data/lib/mongoid/document.rb +170 -117
  161. data/lib/mongoid/encryptable.rb +53 -0
  162. data/lib/mongoid/equality.rb +2 -21
  163. data/lib/mongoid/errors/ambiguous_relationship.rb +1 -0
  164. data/lib/mongoid/errors/attribute_not_loaded.rb +34 -0
  165. data/lib/mongoid/errors/callback.rb +1 -0
  166. data/lib/mongoid/errors/create_collection_failure.rb +1 -0
  167. data/lib/mongoid/errors/criteria_argument_required.rb +1 -0
  168. data/lib/mongoid/errors/delete_restriction.rb +1 -0
  169. data/lib/mongoid/errors/document_not_destroyed.rb +1 -0
  170. data/lib/mongoid/errors/document_not_found.rb +1 -0
  171. data/lib/mongoid/errors/drop_collection_failure.rb +1 -0
  172. data/lib/mongoid/errors/empty_config_file.rb +1 -0
  173. data/lib/mongoid/errors/immutable_attribute.rb +1 -0
  174. data/lib/mongoid/errors/in_memory_collation_not_supported.rb +1 -0
  175. data/lib/mongoid/errors/invalid_async_query_executor.rb +1 -0
  176. data/lib/mongoid/errors/invalid_auto_encryption_configuration.rb +33 -0
  177. data/lib/mongoid/errors/invalid_collection.rb +1 -0
  178. data/lib/mongoid/errors/invalid_config_file.rb +1 -0
  179. data/lib/mongoid/errors/invalid_config_option.rb +1 -0
  180. data/lib/mongoid/errors/invalid_dependent_strategy.rb +1 -0
  181. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +1 -0
  182. data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +1 -0
  183. data/lib/mongoid/errors/invalid_elem_match_operator.rb +1 -0
  184. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +6 -4
  185. data/lib/mongoid/errors/invalid_estimated_count_scoping.rb +27 -0
  186. data/lib/mongoid/errors/invalid_expression_operator.rb +1 -0
  187. data/lib/mongoid/errors/invalid_field.rb +1 -0
  188. data/lib/mongoid/errors/invalid_field_operator.rb +1 -0
  189. data/lib/mongoid/errors/invalid_field_option.rb +1 -0
  190. data/lib/mongoid/errors/invalid_field_type.rb +1 -0
  191. data/lib/mongoid/errors/invalid_find.rb +1 -0
  192. data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +1 -0
  193. data/lib/mongoid/errors/invalid_includes.rb +1 -0
  194. data/lib/mongoid/errors/invalid_index.rb +1 -0
  195. data/lib/mongoid/errors/invalid_options.rb +1 -0
  196. data/lib/mongoid/errors/invalid_path.rb +1 -0
  197. data/lib/mongoid/errors/invalid_persistence_option.rb +1 -0
  198. data/lib/mongoid/errors/invalid_query.rb +1 -0
  199. data/lib/mongoid/errors/invalid_relation.rb +1 -0
  200. data/lib/mongoid/errors/invalid_relation_option.rb +1 -0
  201. data/lib/mongoid/errors/invalid_scope.rb +1 -0
  202. data/lib/mongoid/errors/invalid_session_nesting.rb +17 -0
  203. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +1 -1
  204. data/lib/mongoid/errors/invalid_storage_options.rb +1 -0
  205. data/lib/mongoid/errors/invalid_time.rb +1 -0
  206. data/lib/mongoid/errors/invalid_transaction_nesting.rb +17 -0
  207. data/lib/mongoid/errors/inverse_not_found.rb +1 -0
  208. data/lib/mongoid/errors/mixed_client_configuration.rb +1 -0
  209. data/lib/mongoid/errors/mixed_relations.rb +1 -0
  210. data/lib/mongoid/errors/mongoid_error.rb +4 -3
  211. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -0
  212. data/lib/mongoid/errors/no_client_config.rb +1 -0
  213. data/lib/mongoid/errors/no_client_database.rb +1 -0
  214. data/lib/mongoid/errors/no_client_hosts.rb +1 -0
  215. data/lib/mongoid/errors/no_clients_config.rb +1 -0
  216. data/lib/mongoid/errors/no_default_client.rb +1 -0
  217. data/lib/mongoid/errors/no_environment.rb +1 -0
  218. data/lib/mongoid/errors/no_map_reduce_output.rb +1 -0
  219. data/lib/mongoid/errors/no_metadata.rb +1 -0
  220. data/lib/mongoid/errors/no_parent.rb +1 -0
  221. data/lib/mongoid/errors/readonly_attribute.rb +1 -0
  222. data/lib/mongoid/errors/readonly_document.rb +1 -0
  223. data/lib/mongoid/errors/rollback.rb +15 -0
  224. data/lib/mongoid/errors/scope_overwrite.rb +1 -0
  225. data/lib/mongoid/errors/sessions_not_supported.rb +17 -0
  226. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -0
  227. data/lib/mongoid/errors/transaction_error.rb +25 -0
  228. data/lib/mongoid/errors/transactions_not_supported.rb +17 -0
  229. data/lib/mongoid/errors/unknown_attribute.rb +1 -0
  230. data/lib/mongoid/errors/unknown_model.rb +1 -0
  231. data/lib/mongoid/errors/unsaved_document.rb +1 -0
  232. data/lib/mongoid/errors/unsupported_javascript.rb +1 -0
  233. data/lib/mongoid/errors/validations.rb +1 -0
  234. data/lib/mongoid/errors.rb +10 -1
  235. data/lib/mongoid/evolvable.rb +1 -0
  236. data/lib/mongoid/extensions/array.rb +10 -24
  237. data/lib/mongoid/extensions/big_decimal.rb +14 -6
  238. data/lib/mongoid/extensions/binary.rb +3 -0
  239. data/lib/mongoid/extensions/boolean.rb +3 -0
  240. data/lib/mongoid/extensions/date.rb +7 -2
  241. data/lib/mongoid/extensions/date_time.rb +4 -6
  242. data/lib/mongoid/extensions/decimal128.rb +3 -0
  243. data/lib/mongoid/extensions/false_class.rb +5 -2
  244. data/lib/mongoid/extensions/float.rb +4 -1
  245. data/lib/mongoid/extensions/hash.rb +21 -143
  246. data/lib/mongoid/extensions/integer.rb +6 -1
  247. data/lib/mongoid/extensions/module.rb +4 -1
  248. data/lib/mongoid/extensions/nil_class.rb +5 -2
  249. data/lib/mongoid/extensions/object.rb +23 -35
  250. data/lib/mongoid/extensions/object_id.rb +3 -0
  251. data/lib/mongoid/extensions/range.rb +9 -6
  252. data/lib/mongoid/extensions/raw_value.rb +34 -0
  253. data/lib/mongoid/extensions/regexp.rb +3 -0
  254. data/lib/mongoid/extensions/set.rb +13 -2
  255. data/lib/mongoid/extensions/string.rb +18 -10
  256. data/lib/mongoid/extensions/symbol.rb +5 -0
  257. data/lib/mongoid/extensions/time.rb +7 -19
  258. data/lib/mongoid/extensions/time_with_zone.rb +6 -2
  259. data/lib/mongoid/extensions/true_class.rb +5 -2
  260. data/lib/mongoid/extensions.rb +2 -32
  261. data/lib/mongoid/factory.rb +134 -40
  262. data/lib/mongoid/fields/encrypted.rb +48 -0
  263. data/lib/mongoid/fields/foreign_key.rb +29 -3
  264. data/lib/mongoid/fields/localized.rb +6 -0
  265. data/lib/mongoid/fields/standard.rb +5 -0
  266. data/lib/mongoid/fields/validators/macro.rb +3 -1
  267. data/lib/mongoid/fields/validators.rb +1 -0
  268. data/lib/mongoid/fields.rb +35 -35
  269. data/lib/mongoid/findable.rb +2 -2
  270. data/lib/mongoid/indexable/specification.rb +55 -19
  271. data/lib/mongoid/indexable/validators/options.rb +1 -0
  272. data/lib/mongoid/indexable.rb +1 -0
  273. data/lib/mongoid/inspectable.rb +32 -0
  274. data/lib/mongoid/interceptable.rb +13 -2
  275. data/lib/mongoid/loadable.rb +83 -0
  276. data/lib/mongoid/loggable.rb +1 -0
  277. data/lib/mongoid/matchable.rb +1 -0
  278. data/lib/mongoid/matcher/all.rb +15 -0
  279. data/lib/mongoid/matcher/and.rb +14 -0
  280. data/lib/mongoid/matcher/bits.rb +19 -0
  281. data/lib/mongoid/matcher/bits_all_clear.rb +21 -0
  282. data/lib/mongoid/matcher/bits_all_set.rb +21 -0
  283. data/lib/mongoid/matcher/bits_any_clear.rb +21 -0
  284. data/lib/mongoid/matcher/bits_any_set.rb +21 -0
  285. data/lib/mongoid/matcher/elem_match.rb +15 -0
  286. data/lib/mongoid/matcher/elem_match_expression.rb +14 -2
  287. data/lib/mongoid/matcher/eq.rb +15 -0
  288. data/lib/mongoid/matcher/eq_impl.rb +33 -16
  289. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +14 -2
  290. data/lib/mongoid/matcher/exists.rb +15 -0
  291. data/lib/mongoid/matcher/expression.rb +13 -0
  292. data/lib/mongoid/matcher/expression_operator.rb +14 -0
  293. data/lib/mongoid/matcher/field_expression.rb +15 -0
  294. data/lib/mongoid/matcher/field_operator.rb +24 -0
  295. data/lib/mongoid/matcher/gt.rb +15 -0
  296. data/lib/mongoid/matcher/gte.rb +15 -0
  297. data/lib/mongoid/matcher/in.rb +15 -0
  298. data/lib/mongoid/matcher/lt.rb +15 -0
  299. data/lib/mongoid/matcher/lte.rb +15 -0
  300. data/lib/mongoid/matcher/mod.rb +16 -0
  301. data/lib/mongoid/matcher/ne.rb +15 -0
  302. data/lib/mongoid/matcher/nin.rb +15 -0
  303. data/lib/mongoid/matcher/nor.rb +14 -0
  304. data/lib/mongoid/matcher/not.rb +16 -0
  305. data/lib/mongoid/matcher/or.rb +14 -0
  306. data/lib/mongoid/matcher/regex.rb +24 -0
  307. data/lib/mongoid/matcher/size.rb +16 -0
  308. data/lib/mongoid/matcher/type.rb +25 -0
  309. data/lib/mongoid/matcher.rb +4 -0
  310. data/lib/mongoid/persistable/creatable.rb +14 -9
  311. data/lib/mongoid/persistable/deletable.rb +7 -2
  312. data/lib/mongoid/persistable/destroyable.rb +34 -7
  313. data/lib/mongoid/persistable/incrementable.rb +2 -1
  314. data/lib/mongoid/persistable/logical.rb +1 -0
  315. data/lib/mongoid/persistable/maxable.rb +37 -0
  316. data/lib/mongoid/persistable/minable.rb +37 -0
  317. data/lib/mongoid/persistable/multipliable.rb +36 -0
  318. data/lib/mongoid/persistable/poppable.rb +1 -0
  319. data/lib/mongoid/persistable/pullable.rb +1 -0
  320. data/lib/mongoid/persistable/pushable.rb +1 -0
  321. data/lib/mongoid/persistable/renamable.rb +1 -0
  322. data/lib/mongoid/persistable/savable.rb +1 -0
  323. data/lib/mongoid/persistable/settable.rb +1 -0
  324. data/lib/mongoid/persistable/unsettable.rb +1 -0
  325. data/lib/mongoid/persistable/updatable.rb +37 -18
  326. data/lib/mongoid/persistable/upsertable.rb +20 -7
  327. data/lib/mongoid/persistable.rb +11 -1
  328. data/lib/mongoid/persistence_context.rb +46 -6
  329. data/lib/mongoid/positional.rb +1 -0
  330. data/lib/mongoid/railtie.rb +24 -1
  331. data/lib/mongoid/railties/bson_object_id_serializer.rb +39 -0
  332. data/lib/mongoid/railties/console_sandbox.rb +42 -0
  333. data/lib/mongoid/railties/controller_runtime.rb +20 -4
  334. data/lib/mongoid/railties/database.rake +12 -0
  335. data/lib/mongoid/reloadable.rb +38 -30
  336. data/lib/mongoid/scopable.rb +19 -23
  337. data/lib/mongoid/search_indexable.rb +167 -0
  338. data/lib/mongoid/selectable.rb +1 -0
  339. data/lib/mongoid/serializable.rb +1 -0
  340. data/lib/mongoid/shardable.rb +1 -0
  341. data/lib/mongoid/stateful.rb +9 -3
  342. data/lib/mongoid/stringified_symbol.rb +19 -6
  343. data/lib/mongoid/tasks/database.rake +13 -0
  344. data/lib/mongoid/tasks/database.rb +63 -0
  345. data/lib/mongoid/tasks/encryption.rake +59 -0
  346. data/lib/mongoid/tasks/encryption.rb +108 -0
  347. data/lib/mongoid/threaded/lifecycle.rb +1 -0
  348. data/lib/mongoid/threaded.rb +94 -30
  349. data/lib/mongoid/timestamps/created/short.rb +1 -0
  350. data/lib/mongoid/timestamps/created.rb +4 -3
  351. data/lib/mongoid/timestamps/short.rb +1 -0
  352. data/lib/mongoid/timestamps/timeless.rb +29 -0
  353. data/lib/mongoid/timestamps/updated/short.rb +1 -0
  354. data/lib/mongoid/timestamps/updated.rb +2 -1
  355. data/lib/mongoid/timestamps.rb +1 -0
  356. data/lib/mongoid/touchable.rb +154 -49
  357. data/lib/mongoid/traversable.rb +128 -88
  358. data/lib/mongoid/utils.rb +32 -2
  359. data/lib/mongoid/validatable/associated.rb +97 -18
  360. data/lib/mongoid/validatable/format.rb +1 -0
  361. data/lib/mongoid/validatable/length.rb +1 -0
  362. data/lib/mongoid/validatable/localizable.rb +1 -0
  363. data/lib/mongoid/validatable/macros.rb +5 -0
  364. data/lib/mongoid/validatable/presence.rb +1 -0
  365. data/lib/mongoid/validatable/queryable.rb +9 -0
  366. data/lib/mongoid/validatable/uniqueness.rb +2 -1
  367. data/lib/mongoid/validatable.rb +11 -2
  368. data/lib/mongoid/version.rb +2 -1
  369. data/lib/mongoid/warnings.rb +9 -16
  370. data/lib/mongoid.rb +38 -5
  371. data/lib/rails/generators/mongoid/config/config_generator.rb +17 -3
  372. data/lib/rails/generators/mongoid/config/templates/mongoid.rb +25 -0
  373. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +36 -62
  374. data/lib/rails/generators/mongoid/model/model_generator.rb +4 -0
  375. data/lib/rails/generators/mongoid_generator.rb +13 -0
  376. data/lib/rails/mongoid.rb +4 -29
  377. data/spec/config/mongoid.yml +0 -1
  378. data/spec/integration/active_job_spec.rb +32 -0
  379. data/spec/integration/app_spec.rb +69 -36
  380. data/spec/integration/associations/belongs_to_spec.rb +1 -0
  381. data/spec/integration/associations/embedded_dirty_spec.rb +1 -0
  382. data/spec/integration/associations/embedded_spec.rb +75 -6
  383. data/spec/integration/associations/embeds_many_spec.rb +1 -0
  384. data/spec/integration/associations/embeds_one_spec.rb +1 -0
  385. data/spec/integration/associations/foreign_key_spec.rb +1 -0
  386. data/spec/integration/associations/foreign_key_spec_models.rb +1 -0
  387. data/spec/integration/associations/has_and_belongs_to_many_spec.rb +41 -0
  388. data/spec/integration/associations/has_many_spec.rb +1 -0
  389. data/spec/integration/associations/has_one_spec.rb +1 -0
  390. data/spec/integration/associations/nested_attributes_assignment_spec.rb +1 -0
  391. data/spec/integration/associations/reverse_population_spec.rb +1 -0
  392. data/spec/integration/associations/reverse_population_spec_models.rb +1 -0
  393. data/spec/integration/associations/scope_option_spec.rb +1 -0
  394. data/spec/integration/atomic/modifiers_spec.rb +1 -0
  395. data/spec/integration/bson_regexp_raw_spec.rb +1 -0
  396. data/spec/integration/callbacks_models.rb +3 -2
  397. data/spec/integration/callbacks_spec.rb +2 -1
  398. data/spec/integration/contextual/empty_spec.rb +1 -0
  399. data/spec/integration/criteria/alias_query_spec.rb +25 -88
  400. data/spec/integration/criteria/date_field_spec.rb +1 -0
  401. data/spec/integration/criteria/default_scope_spec.rb +1 -0
  402. data/spec/integration/criteria/logical_spec.rb +10 -28
  403. data/spec/integration/criteria/range_spec.rb +1 -2
  404. data/spec/integration/criteria/raw_value_spec.rb +525 -0
  405. data/spec/integration/criteria/time_with_zone_spec.rb +1 -0
  406. data/spec/integration/discriminator_key_spec.rb +1 -0
  407. data/spec/integration/discriminator_value_spec.rb +1 -0
  408. data/spec/integration/document_spec.rb +1 -0
  409. data/spec/integration/dots_and_dollars_spec.rb +1 -0
  410. data/spec/integration/encryption_spec.rb +100 -0
  411. data/spec/integration/i18n_fallbacks_spec.rb +7 -33
  412. data/spec/integration/matcher_examples_spec.rb +1 -0
  413. data/spec/integration/matcher_operator_data/bits_all_clear.yml +0 -15
  414. data/spec/integration/matcher_operator_data/bits_all_set.yml +0 -15
  415. data/spec/integration/matcher_operator_data/bits_any_clear.yml +0 -15
  416. data/spec/integration/matcher_operator_data/bits_any_set.yml +0 -15
  417. data/spec/integration/matcher_operator_data/size.yml +0 -3
  418. data/spec/integration/matcher_operator_data/type.yml +0 -6
  419. data/spec/integration/matcher_operator_data/type_array.yml +0 -1
  420. data/spec/integration/matcher_operator_data/type_decimal.yml +0 -4
  421. data/spec/integration/matcher_operator_spec.rb +1 -0
  422. data/spec/integration/matcher_spec.rb +21 -66
  423. data/spec/integration/persistence/range_field_spec.rb +1 -0
  424. data/spec/integration/server_query_spec.rb +1 -0
  425. data/spec/integration/shardable_spec.rb +1 -0
  426. data/spec/integration/stringified_symbol_field_spec.rb +1 -0
  427. data/spec/lite_spec_helper.rb +36 -10
  428. data/spec/mongoid/association/accessors_spec.rb +11 -28
  429. data/spec/mongoid/association/auto_save_spec.rb +1 -0
  430. data/spec/mongoid/association/builders_spec.rb +1 -0
  431. data/spec/mongoid/association/constrainable_spec.rb +1 -0
  432. data/spec/mongoid/association/counter_cache_spec.rb +1 -0
  433. data/spec/mongoid/association/depending_spec.rb +1 -0
  434. data/spec/mongoid/association/eager_spec.rb +50 -0
  435. data/spec/mongoid/association/embedded/cyclic_spec.rb +1 -0
  436. data/spec/mongoid/association/embedded/dirty_spec.rb +1 -0
  437. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +1 -0
  438. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +1 -0
  439. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +1 -0
  440. data/spec/mongoid/association/embedded/embedded_in_spec.rb +19 -7
  441. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +1 -0
  442. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +1 -0
  443. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +1 -0
  444. data/spec/mongoid/association/embedded/embeds_many_models.rb +17 -2
  445. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +4 -3
  446. data/spec/mongoid/association/embedded/embeds_many_spec.rb +1 -0
  447. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +1 -0
  448. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +1 -0
  449. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +1 -0
  450. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +1 -0
  451. data/spec/mongoid/association/embedded/embeds_one_models.rb +6 -1
  452. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +2 -1
  453. data/spec/mongoid/association/embedded/embeds_one_spec.rb +1 -0
  454. data/spec/mongoid/association/macros_spec.rb +1 -0
  455. data/spec/mongoid/association/nested/many_spec.rb +1 -0
  456. data/spec/mongoid/association/nested/one_spec.rb +1 -0
  457. data/spec/mongoid/association/options_spec.rb +1 -0
  458. data/spec/mongoid/association/polymorphic_spec.rb +1 -0
  459. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +1 -0
  460. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +1 -0
  461. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +1 -0
  462. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +1 -0
  463. data/spec/mongoid/association/referenced/belongs_to_models.rb +1 -0
  464. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +2 -1
  465. data/spec/mongoid/association/referenced/belongs_to_spec.rb +1 -0
  466. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +1 -0
  467. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +2 -1
  468. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +1 -0
  469. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +1 -0
  470. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +1 -3
  471. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +1 -0
  472. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +2 -1
  473. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +1 -0
  474. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +1 -0
  475. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +1 -0
  476. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +1 -0
  477. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +1 -0
  478. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +1 -0
  479. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +1085 -2002
  480. data/spec/mongoid/association/referenced/has_many_models.rb +1 -0
  481. data/spec/mongoid/association/referenced/has_many_query_spec.rb +2 -1
  482. data/spec/mongoid/association/referenced/has_many_spec.rb +1 -0
  483. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +1 -0
  484. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +1 -0
  485. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +1 -0
  486. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +1 -0
  487. data/spec/mongoid/association/referenced/has_one_models.rb +1 -0
  488. data/spec/mongoid/association/referenced/has_one_query_spec.rb +2 -1
  489. data/spec/mongoid/association/referenced/has_one_spec.rb +1 -0
  490. data/spec/mongoid/association/reflections_spec.rb +1 -0
  491. data/spec/mongoid/association/syncable_spec.rb +1 -0
  492. data/spec/mongoid/association_spec.rb +1 -0
  493. data/spec/mongoid/atomic/modifiers_spec.rb +1 -0
  494. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +1 -0
  495. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +1 -0
  496. data/spec/mongoid/atomic/paths/root_spec.rb +1 -0
  497. data/spec/mongoid/atomic/paths_spec.rb +1 -0
  498. data/spec/mongoid/atomic_spec.rb +1 -0
  499. data/spec/mongoid/atomic_update_preparer_spec.rb +83 -0
  500. data/spec/mongoid/attributes/dynamic_spec.rb +1 -0
  501. data/spec/mongoid/attributes/embedded_spec.rb +118 -0
  502. data/spec/mongoid/attributes/nested_spec.rb +1 -0
  503. data/spec/mongoid/attributes/nested_spec_models.rb +1 -0
  504. data/spec/mongoid/attributes/projector_spec.rb +1 -0
  505. data/spec/mongoid/attributes/readonly_spec.rb +1 -0
  506. data/spec/mongoid/attributes_spec.rb +18 -19
  507. data/spec/mongoid/cacheable_spec.rb +1 -0
  508. data/spec/mongoid/changeable_spec.rb +4 -3
  509. data/spec/mongoid/clients/factory_spec.rb +77 -0
  510. data/spec/mongoid/clients/options_spec.rb +9 -5
  511. data/spec/mongoid/clients/sessions_spec.rb +27 -10
  512. data/spec/mongoid/clients/transactions_spec.rb +958 -185
  513. data/spec/mongoid/clients/transactions_spec_models.rb +159 -0
  514. data/spec/mongoid/clients_spec.rb +47 -2
  515. data/spec/mongoid/collection_configurable_spec.rb +1 -0
  516. data/spec/mongoid/composable_spec.rb +1 -0
  517. data/spec/mongoid/config/defaults_spec.rb +31 -92
  518. data/spec/mongoid/config/encryption_spec.rb +152 -0
  519. data/spec/mongoid/config/environment_spec.rb +13 -41
  520. data/spec/mongoid/config/introspection_spec.rb +114 -0
  521. data/spec/mongoid/config/options_spec.rb +1 -0
  522. data/spec/mongoid/config_spec.rb +20 -133
  523. data/spec/mongoid/contextual/aggregable/memory_spec.rb +1 -0
  524. data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +1 -0
  525. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +5 -29
  526. data/spec/mongoid/contextual/aggregable/none_spec.rb +3 -14
  527. data/spec/mongoid/contextual/atomic_spec.rb +203 -12
  528. data/spec/mongoid/contextual/map_reduce_spec.rb +1 -0
  529. data/spec/mongoid/contextual/memory_spec.rb +364 -534
  530. data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +10 -3
  531. data/spec/mongoid/contextual/mongo_spec.rb +98 -205
  532. data/spec/mongoid/contextual/none_spec.rb +1 -0
  533. data/spec/mongoid/copyable_spec.rb +1 -0
  534. data/spec/mongoid/copyable_spec_models.rb +1 -0
  535. data/spec/mongoid/criteria/findable_spec.rb +191 -0
  536. data/spec/mongoid/criteria/includable_spec.rb +1 -0
  537. data/spec/mongoid/criteria/includable_spec_models.rb +1 -0
  538. data/spec/mongoid/criteria/inspectable_spec.rb +1 -0
  539. data/spec/mongoid/criteria/marshalable_spec.rb +3 -2
  540. data/spec/mongoid/criteria/modifiable_spec.rb +1 -0
  541. data/spec/mongoid/criteria/options_spec.rb +1 -0
  542. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -0
  543. data/spec/mongoid/criteria/queryable/expandable_spec.rb +1 -0
  544. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +1 -0
  545. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +8 -7
  546. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +1 -0
  547. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +21 -11
  548. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +1 -0
  549. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +1 -0
  550. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +1 -0
  551. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +1 -0
  552. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +1 -0
  553. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +1 -0
  554. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +1 -0
  555. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +1 -0
  556. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +1 -11
  557. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +1 -11
  558. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +1 -0
  559. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +48 -66
  560. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +5 -0
  561. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +1 -0
  562. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +1 -0
  563. data/spec/mongoid/criteria/queryable/key_spec.rb +1 -0
  564. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +1 -0
  565. data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -0
  566. data/spec/mongoid/criteria/queryable/options_spec.rb +1 -0
  567. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +1 -0
  568. data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -0
  569. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +4 -3
  570. data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +1 -0
  571. data/spec/mongoid/criteria/queryable/selectable_spec.rb +51 -185
  572. data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +1 -0
  573. data/spec/mongoid/criteria/queryable/selector_spec.rb +96 -0
  574. data/spec/mongoid/criteria/queryable/smash_spec.rb +1 -0
  575. data/spec/mongoid/criteria/queryable/storable_spec.rb +10 -32
  576. data/spec/mongoid/criteria/scopable_spec.rb +1 -0
  577. data/spec/mongoid/criteria/translator_spec.rb +1 -0
  578. data/spec/mongoid/criteria_projection_spec.rb +6 -5
  579. data/spec/mongoid/criteria_spec.rb +221 -359
  580. data/spec/mongoid/document_fields_spec.rb +1 -0
  581. data/spec/mongoid/document_persistence_context_spec.rb +77 -0
  582. data/spec/mongoid/document_query_spec.rb +5 -4
  583. data/spec/mongoid/document_spec.rb +3 -121
  584. data/spec/mongoid/equality_spec.rb +41 -143
  585. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +1 -0
  586. data/spec/mongoid/errors/attribute_not_loaded_spec.rb +32 -0
  587. data/spec/mongoid/errors/callback_spec.rb +1 -0
  588. data/spec/mongoid/errors/delete_restriction_spec.rb +1 -0
  589. data/spec/mongoid/errors/document_not_destroyed_spec.rb +1 -0
  590. data/spec/mongoid/errors/document_not_found_spec.rb +1 -0
  591. data/spec/mongoid/errors/invalid_collection_spec.rb +1 -0
  592. data/spec/mongoid/errors/invalid_config_file_spec.rb +1 -0
  593. data/spec/mongoid/errors/invalid_config_option_spec.rb +1 -0
  594. data/spec/mongoid/errors/invalid_field_option_spec.rb +1 -0
  595. data/spec/mongoid/errors/invalid_field_spec.rb +1 -0
  596. data/spec/mongoid/errors/invalid_field_type_spec.rb +1 -0
  597. data/spec/mongoid/errors/invalid_find_spec.rb +1 -0
  598. data/spec/mongoid/errors/invalid_includes_spec.rb +1 -0
  599. data/spec/mongoid/errors/invalid_index_spec.rb +1 -0
  600. data/spec/mongoid/errors/invalid_options_spec.rb +1 -0
  601. data/spec/mongoid/errors/invalid_path_spec.rb +1 -0
  602. data/spec/mongoid/errors/invalid_relation_spec.rb +1 -0
  603. data/spec/mongoid/errors/invalid_scope_spec.rb +1 -0
  604. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +1 -0
  605. data/spec/mongoid/errors/invalid_storage_options_spec.rb +1 -0
  606. data/spec/mongoid/errors/invalid_time_spec.rb +1 -0
  607. data/spec/mongoid/errors/inverse_not_found_spec.rb +1 -0
  608. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +1 -0
  609. data/spec/mongoid/errors/mixed_relations_spec.rb +1 -0
  610. data/spec/mongoid/errors/mongoid_error_spec.rb +9 -22
  611. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +1 -0
  612. data/spec/mongoid/errors/no_client_config_spec.rb +1 -0
  613. data/spec/mongoid/errors/no_client_database_spec.rb +1 -0
  614. data/spec/mongoid/errors/no_client_hosts_spec.rb +1 -0
  615. data/spec/mongoid/errors/no_clients_config_spec.rb +1 -0
  616. data/spec/mongoid/errors/no_environment_spec.rb +1 -0
  617. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +1 -0
  618. data/spec/mongoid/errors/no_metadata_spec.rb +1 -0
  619. data/spec/mongoid/errors/no_parent_spec.rb +1 -0
  620. data/spec/mongoid/errors/readonly_attribute_spec.rb +1 -0
  621. data/spec/mongoid/errors/readonly_document_spec.rb +1 -0
  622. data/spec/mongoid/errors/scope_overwrite_spec.rb +1 -0
  623. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -0
  624. data/spec/mongoid/errors/unknown_attribute_spec.rb +1 -0
  625. data/spec/mongoid/errors/unsaved_document_spec.rb +1 -0
  626. data/spec/mongoid/errors/unsupported_javascript_spec.rb +1 -0
  627. data/spec/mongoid/errors/validations_spec.rb +1 -0
  628. data/spec/mongoid/extensions/array_spec.rb +3 -262
  629. data/spec/mongoid/extensions/big_decimal_spec.rb +5 -4
  630. data/spec/mongoid/extensions/binary_spec.rb +1 -0
  631. data/spec/mongoid/extensions/boolean_spec.rb +1 -0
  632. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +8 -7
  633. data/spec/mongoid/extensions/date_spec.rb +3 -20
  634. data/spec/mongoid/extensions/date_time_spec.rb +3 -9
  635. data/spec/mongoid/extensions/decimal128_spec.rb +1 -0
  636. data/spec/mongoid/extensions/false_class_spec.rb +1 -7
  637. data/spec/mongoid/extensions/float_spec.rb +3 -9
  638. data/spec/mongoid/extensions/hash_spec.rb +19 -222
  639. data/spec/mongoid/extensions/integer_spec.rb +3 -8
  640. data/spec/mongoid/extensions/module_spec.rb +1 -0
  641. data/spec/mongoid/extensions/nil_class_spec.rb +1 -0
  642. data/spec/mongoid/extensions/object_id_spec.rb +1 -0
  643. data/spec/mongoid/extensions/object_spec.rb +1 -176
  644. data/spec/mongoid/extensions/range_spec.rb +1 -11
  645. data/spec/mongoid/extensions/raw_value_spec.rb +67 -0
  646. data/spec/mongoid/extensions/regexp_spec.rb +1 -0
  647. data/spec/mongoid/extensions/set_spec.rb +2 -3
  648. data/spec/mongoid/extensions/string_spec.rb +3 -113
  649. data/spec/mongoid/extensions/stringified_symbol_spec.rb +1 -0
  650. data/spec/mongoid/extensions/symbol_spec.rb +1 -31
  651. data/spec/mongoid/extensions/time_spec.rb +32 -350
  652. data/spec/mongoid/extensions/time_with_zone_spec.rb +17 -30
  653. data/spec/mongoid/extensions/true_class_spec.rb +1 -7
  654. data/spec/mongoid/factory_spec.rb +1 -0
  655. data/spec/mongoid/fields/foreign_key_spec.rb +282 -119
  656. data/spec/mongoid/fields/localized_spec.rb +1 -0
  657. data/spec/mongoid/fields/standard_spec.rb +1 -0
  658. data/spec/mongoid/fields_spec.rb +60 -66
  659. data/spec/mongoid/findable_spec.rb +2 -61
  660. data/spec/mongoid/indexable/specification_spec.rb +132 -13
  661. data/spec/mongoid/indexable_spec.rb +323 -9
  662. data/spec/mongoid/inspectable_spec.rb +81 -0
  663. data/spec/mongoid/interceptable_spec.rb +3 -2
  664. data/spec/mongoid/interceptable_spec_models.rb +1 -0
  665. data/spec/mongoid/loading_spec.rb +110 -0
  666. data/spec/mongoid/loggable_spec.rb +1 -0
  667. data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -0
  668. data/spec/mongoid/mongoizable_spec.rb +1 -0
  669. data/spec/mongoid/monkey_patches_spec.rb +211 -0
  670. data/spec/mongoid/persistable/creatable_spec.rb +1 -0
  671. data/spec/mongoid/persistable/deletable_spec.rb +78 -31
  672. data/spec/mongoid/persistable/destroyable_spec.rb +230 -52
  673. data/spec/mongoid/persistable/incrementable_spec.rb +1 -0
  674. data/spec/mongoid/persistable/logical_spec.rb +1 -0
  675. data/spec/mongoid/persistable/maxable_spec.rb +147 -0
  676. data/spec/mongoid/persistable/minable_spec.rb +147 -0
  677. data/spec/mongoid/persistable/multipliable_spec.rb +227 -0
  678. data/spec/mongoid/persistable/poppable_spec.rb +1 -0
  679. data/spec/mongoid/persistable/pullable_spec.rb +1 -0
  680. data/spec/mongoid/persistable/pushable_spec.rb +1 -0
  681. data/spec/mongoid/persistable/renamable_spec.rb +1 -0
  682. data/spec/mongoid/persistable/savable_spec.rb +2 -6
  683. data/spec/mongoid/persistable/settable_spec.rb +5 -4
  684. data/spec/mongoid/persistable/unsettable_spec.rb +1 -0
  685. data/spec/mongoid/persistable/updatable_spec.rb +3 -2
  686. data/spec/mongoid/persistable/upsertable_spec.rb +34 -1
  687. data/spec/mongoid/persistable_spec.rb +1 -0
  688. data/spec/mongoid/persistence_context_spec.rb +1 -0
  689. data/spec/mongoid/positional_spec.rb +1 -0
  690. data/spec/mongoid/railties/bson_object_id_serializer_spec.rb +24 -0
  691. data/spec/mongoid/railties/console_sandbox_spec.rb +44 -0
  692. data/spec/mongoid/relations/proxy_spec.rb +1 -0
  693. data/spec/mongoid/reloadable_spec.rb +28 -83
  694. data/spec/mongoid/scopable_spec.rb +39 -50
  695. data/spec/mongoid/search_indexable_spec.rb +147 -0
  696. data/spec/mongoid/selectable_spec.rb +1 -0
  697. data/spec/mongoid/serializable_spec.rb +1 -0
  698. data/spec/mongoid/shardable_models.rb +1 -0
  699. data/spec/mongoid/shardable_spec.rb +1 -0
  700. data/spec/mongoid/stateful_spec.rb +1 -0
  701. data/spec/mongoid/tasks/database_rake_spec.rb +127 -49
  702. data/spec/mongoid/tasks/database_spec.rb +48 -1
  703. data/spec/mongoid/tasks/encryption_spec.rb +187 -0
  704. data/spec/mongoid/threaded_spec.rb +38 -0
  705. data/spec/mongoid/timestamps/created/short_spec.rb +1 -0
  706. data/spec/mongoid/timestamps/created_spec.rb +1 -0
  707. data/spec/mongoid/timestamps/timeless_spec.rb +1 -0
  708. data/spec/mongoid/timestamps/updated/short_spec.rb +1 -0
  709. data/spec/mongoid/timestamps/updated_spec.rb +1 -0
  710. data/spec/mongoid/timestamps_spec.rb +1 -0
  711. data/spec/mongoid/timestamps_spec_models.rb +1 -0
  712. data/spec/mongoid/touchable_spec.rb +490 -62
  713. data/spec/mongoid/touchable_spec_models.rb +96 -1
  714. data/spec/mongoid/traversable_spec.rb +1 -0
  715. data/spec/mongoid/validatable/associated_spec.rb +14 -30
  716. data/spec/mongoid/validatable/format_spec.rb +1 -0
  717. data/spec/mongoid/validatable/length_spec.rb +1 -0
  718. data/spec/mongoid/validatable/numericality_spec.rb +1 -0
  719. data/spec/mongoid/validatable/presence_spec.rb +1 -0
  720. data/spec/mongoid/validatable/uniqueness_spec.rb +48 -3
  721. data/spec/mongoid/validatable_spec.rb +1 -0
  722. data/spec/mongoid/warnings_spec.rb +1 -0
  723. data/spec/mongoid_spec.rb +27 -0
  724. data/spec/rails/controller_extension/controller_runtime_spec.rb +1 -0
  725. data/spec/rails/mongoid_spec.rb +26 -117
  726. data/spec/shared/lib/mrss/docker_runner.rb +0 -1
  727. data/spec/shared/share/Dockerfile.erb +12 -52
  728. data/spec/shared/shlib/server.sh +1 -0
  729. data/spec/shared/shlib/set_env.sh +5 -28
  730. data/spec/spec_helper.rb +26 -28
  731. data/spec/support/authorization.rb +1 -0
  732. data/spec/support/client_registry.rb +1 -0
  733. data/spec/support/constraints.rb +1 -0
  734. data/spec/support/crypt/models.rb +50 -0
  735. data/spec/support/crypt.rb +80 -0
  736. data/spec/support/expectations.rb +1 -0
  737. data/spec/support/feature_sandbox.rb +72 -0
  738. data/spec/support/helpers.rb +1 -0
  739. data/spec/support/immutable_ids.rb +22 -21
  740. data/spec/support/macros.rb +4 -6
  741. data/spec/support/models/account.rb +1 -0
  742. data/spec/support/models/acolyte.rb +1 -0
  743. data/spec/support/models/actor.rb +1 -0
  744. data/spec/support/models/actress.rb +1 -0
  745. data/spec/support/models/address.rb +3 -0
  746. data/spec/support/models/address_component.rb +1 -0
  747. data/spec/support/models/address_number.rb +1 -0
  748. data/spec/support/models/agency.rb +1 -0
  749. data/spec/support/models/agent.rb +1 -0
  750. data/spec/support/models/album.rb +1 -0
  751. data/spec/support/models/alert.rb +1 -0
  752. data/spec/support/models/animal.rb +1 -0
  753. data/spec/support/models/answer.rb +1 -0
  754. data/spec/support/models/appointment.rb +1 -0
  755. data/spec/support/models/armrest.rb +1 -0
  756. data/spec/support/models/array_field.rb +1 -0
  757. data/spec/support/models/article.rb +1 -0
  758. data/spec/support/models/artist.rb +1 -0
  759. data/spec/support/models/artwork.rb +1 -0
  760. data/spec/support/models/audible_sound.rb +1 -0
  761. data/spec/support/models/audio.rb +1 -0
  762. data/spec/support/models/augmentation.rb +1 -0
  763. data/spec/support/models/author.rb +1 -0
  764. data/spec/support/models/baby.rb +1 -0
  765. data/spec/support/models/band.rb +5 -0
  766. data/spec/support/models/bar.rb +1 -0
  767. data/spec/support/models/basic.rb +1 -0
  768. data/spec/support/models/bed.rb +1 -0
  769. data/spec/support/models/big_palette.rb +1 -0
  770. data/spec/support/models/birthday.rb +1 -0
  771. data/spec/support/models/bolt.rb +1 -0
  772. data/spec/support/models/bomb.rb +1 -0
  773. data/spec/support/models/book.rb +1 -0
  774. data/spec/support/models/breed.rb +1 -0
  775. data/spec/support/models/browser.rb +1 -0
  776. data/spec/support/models/building.rb +1 -0
  777. data/spec/support/models/building_address.rb +1 -0
  778. data/spec/support/models/bus.rb +1 -0
  779. data/spec/support/models/business.rb +1 -0
  780. data/spec/support/models/callback_test.rb +1 -0
  781. data/spec/support/models/canvas.rb +1 -0
  782. data/spec/support/models/car.rb +1 -0
  783. data/spec/support/models/cat.rb +1 -0
  784. data/spec/support/models/catalog.rb +1 -0
  785. data/spec/support/models/category.rb +1 -0
  786. data/spec/support/models/child.rb +1 -0
  787. data/spec/support/models/child_doc.rb +1 -0
  788. data/spec/support/models/church.rb +1 -0
  789. data/spec/support/models/circle.rb +1 -0
  790. data/spec/support/models/circuit.rb +1 -0
  791. data/spec/support/models/circus.rb +1 -0
  792. data/spec/support/models/code.rb +1 -0
  793. data/spec/support/models/coding/pull_request.rb +1 -0
  794. data/spec/support/models/coding.rb +1 -0
  795. data/spec/support/models/comment.rb +1 -0
  796. data/spec/support/models/company.rb +1 -0
  797. data/spec/support/models/consumption_period.rb +1 -0
  798. data/spec/support/models/contextable_item.rb +1 -0
  799. data/spec/support/models/contractor.rb +1 -0
  800. data/spec/support/models/cookie.rb +1 -0
  801. data/spec/support/models/country_code.rb +1 -0
  802. data/spec/support/models/courier_job.rb +1 -0
  803. data/spec/support/models/cover.rb +1 -0
  804. data/spec/support/models/crate.rb +1 -0
  805. data/spec/support/models/customer.rb +1 -0
  806. data/spec/support/models/customer_address.rb +1 -0
  807. data/spec/support/models/deed.rb +1 -0
  808. data/spec/support/models/definition.rb +1 -0
  809. data/spec/support/models/delegating_patient.rb +1 -0
  810. data/spec/support/models/description.rb +1 -0
  811. data/spec/support/models/dictionary.rb +1 -0
  812. data/spec/support/models/division.rb +1 -0
  813. data/spec/support/models/doctor.rb +1 -0
  814. data/spec/support/models/dog.rb +1 -0
  815. data/spec/support/models/dokument.rb +1 -0
  816. data/spec/support/models/draft.rb +1 -0
  817. data/spec/support/models/dragon.rb +1 -0
  818. data/spec/support/models/driver.rb +1 -0
  819. data/spec/support/models/drug.rb +1 -0
  820. data/spec/support/models/dungeon.rb +1 -0
  821. data/spec/support/models/edit.rb +1 -0
  822. data/spec/support/models/email.rb +1 -0
  823. data/spec/support/models/employer.rb +1 -0
  824. data/spec/support/models/entry.rb +1 -0
  825. data/spec/support/models/eraser.rb +1 -0
  826. data/spec/support/models/even.rb +1 -0
  827. data/spec/support/models/event.rb +1 -0
  828. data/spec/support/models/exhibition.rb +1 -0
  829. data/spec/support/models/exhibitor.rb +1 -0
  830. data/spec/support/models/explosion.rb +1 -0
  831. data/spec/support/models/eye.rb +1 -0
  832. data/spec/support/models/eye_bowl.rb +1 -0
  833. data/spec/support/models/face.rb +1 -0
  834. data/spec/support/models/fanatic.rb +1 -0
  835. data/spec/support/models/favorite.rb +8 -1
  836. data/spec/support/models/filesystem.rb +1 -0
  837. data/spec/support/models/fire_hydrant.rb +1 -0
  838. data/spec/support/models/firefox.rb +1 -0
  839. data/spec/support/models/fish.rb +1 -0
  840. data/spec/support/models/folder.rb +1 -0
  841. data/spec/support/models/folder_item.rb +1 -0
  842. data/spec/support/models/fruits.rb +1 -0
  843. data/spec/support/models/game.rb +1 -0
  844. data/spec/support/models/ghost.rb +1 -0
  845. data/spec/support/models/guitar.rb +1 -0
  846. data/spec/support/models/hole.rb +1 -0
  847. data/spec/support/models/home.rb +1 -0
  848. data/spec/support/models/house.rb +1 -0
  849. data/spec/support/models/html_writer.rb +1 -0
  850. data/spec/support/models/id_key.rb +1 -0
  851. data/spec/support/models/idnodef.rb +1 -0
  852. data/spec/support/models/image.rb +1 -0
  853. data/spec/support/models/implant.rb +1 -0
  854. data/spec/support/models/instrument.rb +1 -0
  855. data/spec/support/models/item.rb +1 -0
  856. data/spec/support/models/jar.rb +1 -0
  857. data/spec/support/models/kaleidoscope.rb +1 -0
  858. data/spec/support/models/kangaroo.rb +1 -0
  859. data/spec/support/models/label.rb +1 -0
  860. data/spec/support/models/language.rb +1 -0
  861. data/spec/support/models/lat_lng.rb +1 -0
  862. data/spec/support/models/league.rb +1 -0
  863. data/spec/support/models/learner.rb +1 -0
  864. data/spec/support/models/line_item.rb +1 -0
  865. data/spec/support/models/location.rb +1 -0
  866. data/spec/support/models/login.rb +1 -0
  867. data/spec/support/models/manufacturer.rb +1 -0
  868. data/spec/support/models/meat.rb +1 -0
  869. data/spec/support/models/membership.rb +1 -0
  870. data/spec/support/models/message.rb +1 -0
  871. data/spec/support/models/minim.rb +1 -0
  872. data/spec/support/models/mixed_drink.rb +1 -0
  873. data/spec/support/models/mop.rb +1 -0
  874. data/spec/support/models/movie.rb +1 -0
  875. data/spec/support/models/my_hash.rb +1 -0
  876. data/spec/support/models/name.rb +11 -0
  877. data/spec/support/models/name_only.rb +1 -0
  878. data/spec/support/models/node.rb +1 -0
  879. data/spec/support/models/note.rb +1 -0
  880. data/spec/support/models/nut.rb +1 -0
  881. data/spec/support/models/odd.rb +1 -0
  882. data/spec/support/models/order.rb +1 -0
  883. data/spec/support/models/ordered_post.rb +1 -0
  884. data/spec/support/models/ordered_preference.rb +1 -0
  885. data/spec/support/models/oscar.rb +1 -0
  886. data/spec/support/models/other_owner_object.rb +1 -0
  887. data/spec/support/models/override.rb +1 -0
  888. data/spec/support/models/ownable.rb +1 -0
  889. data/spec/support/models/owner.rb +1 -0
  890. data/spec/support/models/pack.rb +1 -0
  891. data/spec/support/models/page.rb +1 -0
  892. data/spec/support/models/page_question.rb +1 -0
  893. data/spec/support/models/palette.rb +1 -0
  894. data/spec/support/models/parent.rb +1 -0
  895. data/spec/support/models/parent_doc.rb +1 -0
  896. data/spec/support/models/passport.rb +1 -0
  897. data/spec/support/models/patient.rb +1 -0
  898. data/spec/support/models/pdf_writer.rb +1 -0
  899. data/spec/support/models/pencil.rb +1 -0
  900. data/spec/support/models/person.rb +1 -0
  901. data/spec/support/models/pet.rb +1 -0
  902. data/spec/support/models/pet_owner.rb +1 -0
  903. data/spec/support/models/phone.rb +1 -0
  904. data/spec/support/models/piano.rb +1 -0
  905. data/spec/support/models/pizza.rb +1 -0
  906. data/spec/support/models/player.rb +1 -0
  907. data/spec/support/models/post.rb +1 -0
  908. data/spec/support/models/post_genre.rb +1 -0
  909. data/spec/support/models/powerup.rb +1 -0
  910. data/spec/support/models/preference.rb +1 -0
  911. data/spec/support/models/princess.rb +1 -0
  912. data/spec/support/models/product.rb +1 -0
  913. data/spec/support/models/profile.rb +1 -0
  914. data/spec/support/models/pronunciation.rb +1 -0
  915. data/spec/support/models/pub.rb +1 -0
  916. data/spec/support/models/publication/encyclopedia.rb +1 -0
  917. data/spec/support/models/publication/review.rb +1 -0
  918. data/spec/support/models/publication.rb +1 -0
  919. data/spec/support/models/purchase.rb +1 -0
  920. data/spec/support/models/purchased_item.rb +1 -0
  921. data/spec/support/models/question.rb +1 -0
  922. data/spec/support/models/quiz.rb +1 -0
  923. data/spec/support/models/rating.rb +1 -0
  924. data/spec/support/models/record.rb +1 -0
  925. data/spec/support/models/registry.rb +1 -0
  926. data/spec/support/models/role.rb +1 -0
  927. data/spec/support/models/root_category.rb +1 -0
  928. data/spec/support/models/sandbox/app/models/app_models_message.rb +4 -0
  929. data/spec/support/models/sandbox/lib/models/lib_models_message.rb +4 -0
  930. data/spec/support/models/sandbox/sandbox_message.rb +4 -0
  931. data/spec/support/models/sandbox/sandbox_user.rb +4 -0
  932. data/spec/support/models/sandbox/subdir/sandbox_comment.rb +4 -0
  933. data/spec/support/models/sandwich.rb +1 -0
  934. data/spec/support/models/scheduler.rb +1 -0
  935. data/spec/support/models/school.rb +1 -0
  936. data/spec/support/models/scribe.rb +1 -0
  937. data/spec/support/models/sealer.rb +1 -0
  938. data/spec/support/models/seat.rb +1 -0
  939. data/spec/support/models/seo.rb +1 -0
  940. data/spec/support/models/series.rb +1 -0
  941. data/spec/support/models/server.rb +1 -0
  942. data/spec/support/models/service.rb +1 -0
  943. data/spec/support/models/shape.rb +1 -0
  944. data/spec/support/models/shelf.rb +1 -0
  945. data/spec/support/models/shield.rb +1 -0
  946. data/spec/support/models/shipment_address.rb +1 -0
  947. data/spec/support/models/shipping_container.rb +1 -0
  948. data/spec/support/models/shipping_pack.rb +1 -0
  949. data/spec/support/models/shirt.rb +1 -0
  950. data/spec/support/models/shop.rb +1 -0
  951. data/spec/support/models/short_agent.rb +1 -0
  952. data/spec/support/models/short_quiz.rb +1 -0
  953. data/spec/support/models/simple.rb +1 -0
  954. data/spec/support/models/slave.rb +1 -0
  955. data/spec/support/models/song.rb +1 -0
  956. data/spec/support/models/sound.rb +1 -0
  957. data/spec/support/models/spacer.rb +1 -0
  958. data/spec/support/models/square.rb +1 -0
  959. data/spec/support/models/staff.rb +1 -0
  960. data/spec/support/models/store_as_dup_test1.rb +1 -0
  961. data/spec/support/models/store_as_dup_test2.rb +1 -0
  962. data/spec/support/models/store_as_dup_test3.rb +1 -0
  963. data/spec/support/models/store_as_dup_test4.rb +1 -0
  964. data/spec/support/models/strategy.rb +1 -0
  965. data/spec/support/models/student.rb +1 -0
  966. data/spec/support/models/sub_item.rb +1 -0
  967. data/spec/support/models/subscription.rb +1 -0
  968. data/spec/support/models/survey.rb +1 -0
  969. data/spec/support/models/symptom.rb +1 -0
  970. data/spec/support/models/system_role.rb +1 -0
  971. data/spec/support/models/tag.rb +1 -0
  972. data/spec/support/models/target.rb +1 -0
  973. data/spec/support/models/template.rb +1 -0
  974. data/spec/support/models/thing.rb +1 -0
  975. data/spec/support/models/threadlocker.rb +1 -0
  976. data/spec/support/models/title.rb +1 -0
  977. data/spec/support/models/tool.rb +1 -0
  978. data/spec/support/models/topping.rb +1 -0
  979. data/spec/support/models/toy.rb +1 -0
  980. data/spec/support/models/track.rb +1 -0
  981. data/spec/support/models/translation.rb +1 -0
  982. data/spec/support/models/tree.rb +1 -0
  983. data/spec/support/models/truck.rb +1 -0
  984. data/spec/support/models/updatable.rb +1 -0
  985. data/spec/support/models/user.rb +1 -0
  986. data/spec/support/models/user_account.rb +1 -0
  987. data/spec/support/models/validation_callback.rb +1 -0
  988. data/spec/support/models/vehicle.rb +1 -0
  989. data/spec/support/models/version.rb +1 -0
  990. data/spec/support/models/vertex.rb +1 -0
  991. data/spec/support/models/vet_visit.rb +1 -0
  992. data/spec/support/models/video.rb +1 -0
  993. data/spec/support/models/video_game.rb +1 -0
  994. data/spec/support/models/washer.rb +1 -0
  995. data/spec/support/models/weapon.rb +1 -0
  996. data/spec/support/models/wiki_page.rb +1 -0
  997. data/spec/support/models/word.rb +1 -0
  998. data/spec/support/models/word_origin.rb +1 -0
  999. data/spec/support/models/writer.rb +1 -0
  1000. data/spec/support/rails_mock.rb +32 -0
  1001. data/spec/support/shared/time.rb +3 -21
  1002. data/spec/support/sinatra_mock.rb +7 -0
  1003. data/spec/support/spec_config.rb +30 -9
  1004. data.tar.gz.sig +0 -0
  1005. metadata +102 -44
  1006. metadata.gz.sig +0 -0
  1007. data/lib/mongoid/association/referenced/eager.rb +0 -163
  1008. data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -113
  1009. data/lib/mongoid/contextual/geo_near.rb +0 -236
  1010. data/lib/mongoid/errors/invalid_session_use.rb +0 -21
  1011. data/lib/mongoid/errors/invalid_storage_parent.rb +0 -27
  1012. data/lib/mongoid/query_cache.rb +0 -68
  1013. data/spec/mongoid/contextual/geo_near_spec.rb +0 -471
  1014. data/spec/mongoid/extensions_spec.rb +0 -43
  1015. data/spec/mongoid/query_cache_middleware_spec.rb +0 -50
  1016. data/spec/mongoid/query_cache_spec.rb +0 -865
@@ -13,7 +13,7 @@ server_archive_basename = File.basename(server_url)
13
13
  server_extracted_dir = server_archive_basename.sub(/\.(tar\.gz|tgz)$/, '')
14
14
 
15
15
  # When changing, also update the hash in shlib/set_env.sh.
16
- TOOLCHAIN_VERSION='e8c60866f54bed7e336a37df3a97d6ae1b971b7d'
16
+ TOOLCHAIN_VERSION='ded7ea845b08cf96f11a747d9540ba3199580dea'
17
17
 
18
18
  def ruby_toolchain_url(ruby)
19
19
  "http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/#{TOOLCHAIN_VERSION}/#{distro}/#{ruby}.tar.xz"
@@ -56,7 +56,7 @@ ENV DOCKER=1
56
56
  # Ruby runtime dependencies: libyaml-0-2
57
57
  # Compiling ruby libraries: gcc make
58
58
  # Compiling python packages: python3-dev
59
- # JRuby: openjdk-8-jdk-headless
59
+ # JRuby: openjdk-17-jdk-headless
60
60
  # Server dependencies: libsnmp30 libcurl3/libcurl4
61
61
  # Determining OS we are running on: lsb-release
62
62
  # Load balancer testing: haproxy
@@ -78,11 +78,12 @@ ENV DOCKER=1
78
78
 
79
79
  <% packages = %w(
80
80
  procps lsb-release bzip2 curl wget gpg zsh
81
- git make gcc libyaml-0-2 libgmp-dev zlib1g-dev libsnappy-dev
81
+ git make gcc g++ libyaml-dev libgmp-dev zlib1g-dev libsnappy-dev
82
82
  krb5-user krb5-kdc krb5-admin-server libsasl2-dev libsasl2-modules-gssapi-mit
83
- haproxy
83
+ haproxy libcurl4
84
84
  python3-pip
85
- tzdata shared-mime-info software-properties-common
85
+ tzdata shared-mime-info software-properties-common xz-utils nodejs npm
86
+ openjdk-17-jdk-headless
86
87
  ) %>
87
88
 
88
89
  <% if distro =~ /ubuntu2004/ %>
@@ -101,26 +102,6 @@ ENV DOCKER=1
101
102
  <% packages << 'python3-venv' %>
102
103
  <% end %>
103
104
 
104
- <% if distro =~ /debian10|ubuntu2204|debian11/ %>
105
- <% packages << 'openjdk-11-jdk-headless' %>
106
- <% elsif distro =~ /ubuntu1404/ %>
107
- # Ubuntu 14.04 only has openjdk 7, this is too old to be useful
108
- <% else %>
109
- <% packages << 'openjdk-8-jdk-headless' %>
110
- <% end %>
111
-
112
- # ubuntu1404, ubuntu1604: libcurl3
113
- # ubuntu1804, ubuntu2004, debian10: libcurl4
114
- <% if distro =~ /ubuntu1804|ubuntu2004|ubuntu2204|debian10|debian11/ %>
115
- <% packages << 'libcurl4' %>
116
- <% else %>
117
- <% packages << 'libcurl3' %>
118
- <% end %>
119
-
120
- <% if distro =~ /ubuntu1804|ubuntu2004|ubuntu2204/ %>
121
- <% packages << 'nodejs' %>
122
- <% end %>
123
-
124
105
  <% if distro =~ /ubuntu2004|ubuntu2204/ %>
125
106
  <% packages += %w(ruby bundler) %>
126
107
  <% end %>
@@ -135,29 +116,6 @@ ENV DOCKER=1
135
116
 
136
117
  <% else %>
137
118
 
138
- <% if distro =~ /rhel6/ %>
139
-
140
- # CentOS 6 is dead - to use it retrieve the packages from vault:
141
- # https://stackoverflow.com/questions/53562691/error-cannot-retrieve-repository-metadata-repomd-xml-for-repository-base-pl
142
-
143
- <%
144
-
145
- cfg = <<-CFG
146
- [base]
147
- name=CentOS-$releasever - Base
148
- #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
149
- #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
150
- baseurl=http://vault.centos.org/6.10/os/x86_64/
151
- gpgcheck=1
152
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
153
- CFG
154
-
155
- %>
156
-
157
- RUN printf "<%= cfg.gsub("\n", "\\n") %>" >/etc/yum.repos.d/CentOS-Base.repo
158
-
159
- <% end %>
160
-
161
119
  # Enterprise server: net-snmp
162
120
  # lsb_release: redhat-lsb-core
163
121
  # our runner scripts: which
@@ -166,15 +124,15 @@ CFG
166
124
  # Kerberos tests: krb5-workstation + cyrus-sasl-devel to build the
167
125
  # mongo_kerberos gem + cyrus-sasl-gssapi for authentication to work
168
126
  # Local Kerberos server: krb5-server
169
- # JRuby: java-1.8.0-openjdk
127
+ # JRuby: java-17-openjdk
170
128
  #
171
129
  # Note: lacking cyrus-sasl-gssapi produces a cryptic message
172
130
  # "SASL(-4): no mechanism available: No worthy mechs found"
173
131
  # https://github.com/farorm/python-ad/issues/10
174
132
 
175
- RUN yum install -y redhat-lsb-core which git gcc libyaml krb5-server \
176
- krb5-workstation cyrus-sasl-devel cyrus-sasl-gssapi java-1.8.0-openjdk \
177
- net-snmp python38 python38-devel cmake nodejs
133
+ RUN yum --enablerepo=powertools install -y redhat-lsb-core which git gcc gcc-c++ libyaml-devel krb5-server \
134
+ krb5-workstation cyrus-sasl-devel cyrus-sasl-gssapi java-17-openjdk \
135
+ net-snmp python38 python38-devel cmake nodejs npm xz
178
136
 
179
137
  <% end %>
180
138
 
@@ -291,6 +249,8 @@ WORKDIR /app
291
249
  ENV DOCKER_PRELOAD=1
292
250
  <% end %>
293
251
 
252
+ RUN npm install --global yarn
253
+
294
254
  ENV MONGO_ORCHESTRATION_HOME=/tmpfs \
295
255
  PROJECT_DIRECTORY=/app \
296
256
  <%= @env.map { |k, v| %Q`#{k}="#{v.gsub('$', "\\$").gsub('"', "\\\"")}"` }.join(" \\\n ") %>
@@ -104,6 +104,7 @@ install_mlaunch_venv() {
104
104
  #pip install 'mtools==1.7' 'pymongo==4.1' python-dateutil psutil
105
105
 
106
106
  # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
107
+ pip install --upgrade setuptools
107
108
  pip install 'mtools-legacy[mlaunch]' 'pymongo<4' python-dateutil
108
109
  fi
109
110
  }
@@ -1,39 +1,16 @@
1
1
  # When changing, also update the hash in share/Dockerfile.
2
- TOOLCHAIN_VERSION=e8c60866f54bed7e336a37df3a97d6ae1b971b7d
2
+ TOOLCHAIN_VERSION=ded7ea845b08cf96f11a747d9540ba3199580dea
3
+ JDK_VERSION=jdk17
3
4
 
4
5
  set_env_java() {
5
6
  ls -l /opt || true
6
7
  ls -l /usr/lib/jvm || true
7
8
 
8
9
  # Use toolchain java if it exists
9
- if [ -f /opt/java/jdk8/bin/java ]; then
10
- export JAVACMD=/opt/java/jdk8/bin/java
11
- #export PATH=$PATH:/opt/java/jdk8/bin
12
- fi
13
-
14
- # ppc64le has it in a different place
15
- if test -z "$JAVACMD" && [ -f /usr/lib/jvm/java-1.8.0/bin/java ]; then
16
- export JAVACMD=/usr/lib/jvm/java-1.8.0/bin/java
17
- #export PATH=$PATH:/usr/lib/jvm/java-1.8.0/bin
18
- fi
19
-
20
- if true; then
21
- # newer
22
- # rhel71-ppc, https://jira.mongodb.org/browse/BUILD-9231
23
- if test -z "$JAVACMD" &&
24
- (ls /opt/java || true) |grep -q java-1.8.0-openjdk-1.8.0 &&
25
- test -f /opt/java/java-1.8.0-openjdk-1.8.0*/bin/java;
26
- then
27
- path=$(cd /opt/java && ls -d java-1.8.0-openjdk-1.8.0* |head -n 1)
28
- export JAVACMD=/opt/java/"$path"/bin/java
29
- fi
10
+ if [ -f /opt/java/$JDK_VERSION/bin/java ]; then
11
+ export JAVACMD=/opt/java/$JDK_VERSION/bin/java
30
12
  else
31
- # older
32
- # rhel71-ppc seems to have an /opt/java/jdk8/bin/java but it doesn't work
33
- if test -n "$JAVACMD" && ! exec $JAVACMD -version; then
34
- JAVACMD=
35
- # we will try the /usr/lib/jvm then
36
- fi
13
+ echo Could not find $JDK_VERSION in /opt/java
37
14
  fi
38
15
 
39
16
  if test -n "$JAVACMD"; then
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  require 'lite_spec_helper'
4
5
 
@@ -48,11 +49,15 @@ require 'support/expectations'
48
49
  require 'support/helpers'
49
50
  require 'support/macros'
50
51
  require 'support/constraints'
52
+ require 'support/crypt'
53
+
54
+ use_ssl = %w[ ssl 1 true ].include?(ENV['SSL'])
55
+ ssl_options = { ssl: use_ssl }.freeze
51
56
 
52
57
  # Give MongoDB servers time to start up in CI environments
53
58
  if SpecConfig.instance.ci?
54
59
  starting = true
55
- client = Mongo::Client.new(SpecConfig.instance.addresses)
60
+ client = Mongo::Client.new(SpecConfig.instance.addresses, ssl_options)
56
61
  while starting
57
62
  begin
58
63
  client.command(ping: 1)
@@ -69,15 +74,15 @@ CONFIG = {
69
74
  default: {
70
75
  database: database_id,
71
76
  hosts: SpecConfig.instance.addresses,
72
- options: {
77
+ options: ssl_options.merge(
73
78
  server_selection_timeout: 3.42,
74
79
  wait_queue_timeout: 1,
75
80
  max_pool_size: 5,
76
81
  heartbeat_frequency: 180,
77
- user: MONGOID_ROOT_USER.name,
78
- password: MONGOID_ROOT_USER.password,
79
- auth_source: Mongo::Database::ADMIN,
80
- }
82
+ user: SpecConfig.instance.uri.client_options[:user] || MONGOID_ROOT_USER.name,
83
+ password: SpecConfig.instance.uri.client_options[:password] || MONGOID_ROOT_USER.password,
84
+ auth_source: Mongo::Database::ADMIN
85
+ )
81
86
  }
82
87
  },
83
88
  options: {
@@ -101,16 +106,6 @@ Dir[ File.join(MODELS, "*.rb") ].sort.each do |file|
101
106
  autoload name.camelize.to_sym, name
102
107
  end
103
108
 
104
- module Rails
105
- class Application
106
- end
107
- end
108
-
109
- module MyApp
110
- class Application < Rails::Application
111
- end
112
- end
113
-
114
109
  module Mongoid
115
110
  class Query
116
111
  include Mongoid::Criteria::Queryable
@@ -122,24 +117,27 @@ ActiveSupport::Inflector.inflections do |inflect|
122
117
  inflect.singular("address_components", "address_component")
123
118
  end
124
119
 
125
- I18n.config.enforce_available_locales = false
120
+ Time.zone = 'UTC'
126
121
 
122
+ I18n.config.enforce_available_locales = false
127
123
 
128
124
  if %w(yes true 1).include?((ENV['TEST_I18N_FALLBACKS'] || '').downcase)
129
125
  require "i18n/backend/fallbacks"
130
126
  end
131
127
 
132
- # The user must be created before any of the tests are loaded, until
133
- # https://jira.mongodb.org/browse/MONGOID-4827 is implemented.
134
- client = Mongo::Client.new(SpecConfig.instance.addresses, server_selection_timeout: 3.03)
135
- begin
136
- # Create the root user administrator as the first user to be added to the
137
- # database. This user will need to be authenticated in order to add any
138
- # more users to any other databases.
139
- client.database.users.create(MONGOID_ROOT_USER)
140
- rescue Mongo::Error::OperationFailure => e
141
- ensure
142
- client.close
128
+ unless SpecConfig.instance.atlas?
129
+ # The user must be created before any of the tests are loaded, until
130
+ # https://jira.mongodb.org/browse/MONGOID-4827 is implemented.
131
+ client = Mongo::Client.new(SpecConfig.instance.addresses, server_selection_timeout: 3.03)
132
+ begin
133
+ # Create the root user administrator as the first user to be added to the
134
+ # database. This user will need to be authenticated in order to add any
135
+ # more users to any other databases.
136
+ client.database.users.create(MONGOID_ROOT_USER)
137
+ rescue Mongo::Error::OperationFailure => e
138
+ ensure
139
+ client.close
140
+ end
143
141
  end
144
142
 
145
143
  RSpec.configure do |config|
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  # Set up a root user so we can set up authentication on a database level.
4
5
  MONGOID_ROOT_USER = Mongo::Auth::User.new(
@@ -1,3 +1,4 @@
1
+ # rubocop:todo all
1
2
  require 'singleton'
2
3
 
3
4
  class ClientRegistry
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  module Constraints
4
5
  RAILS_VERSION = ActiveSupport.version.to_s.split('.')[0..1].join('.').freeze
@@ -0,0 +1,50 @@
1
+ # rubocop:todo all
2
+ module Crypt
3
+ class Patient
4
+ include Mongoid::Document
5
+
6
+ encrypt_with key_id: "grolrnFVSSW9Gq04Q87R9Q=="
7
+
8
+ field :code, type: String
9
+ field :medical_records, type: Array, encrypt: { deterministic: false}
10
+ field :blood_type, type: String, encrypt: {
11
+ deterministic: false,
12
+ key_name_field: :blood_type_key_name
13
+ }
14
+ field :ssn, type: Integer, encrypt: { deterministic: true }
15
+ field :blood_type_key_name, type: String
16
+
17
+ embeds_one :insurance, class_name: "Crypt::Insurance"
18
+ end
19
+
20
+ class Insurance
21
+ include Mongoid::Document
22
+
23
+ field :policy_number, type: Integer, encrypt: { deterministic: true }
24
+ embedded_in :patient, class_name: "Crypt::Patient"
25
+ end
26
+
27
+ class User
28
+ include Mongoid::Document
29
+
30
+ field :name, type: String, encrypt: {
31
+ key_id: "grolrnFVSSW9Gq04Q87R9Q==",
32
+ deterministic: false
33
+ }
34
+ field :email, type: String, encrypt: {
35
+ key_id: "S34mE/HhSFSym3yErpER6Q==",
36
+ deterministic: true
37
+ }
38
+ end
39
+
40
+ class Car
41
+ include Mongoid::Document
42
+
43
+ store_in database: 'vehicles'
44
+
45
+ encrypt_with key_id: "grolrnFVSSW9Gq04Q87R9Q==", deterministic: true
46
+
47
+ field :vin, type: String, encrypt: true
48
+ field :make, type: String
49
+ end
50
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+ # rubocop:todo all
3
+
4
+ module Mongoid
5
+ # This module includes helpers for testing encryption.
6
+ module Crypt
7
+
8
+ shared_context 'with encryption' do
9
+ let(:mongocryptd_port) do
10
+ if ENV['MONGO_RUBY_DRIVER_MONGOCRYPTD_PORT'] &&
11
+ !ENV['MONGO_RUBY_DRIVER_MONGOCRYPTD_PORT'].empty?
12
+ then
13
+ ENV['MONGO_RUBY_DRIVER_MONGOCRYPTD_PORT'].to_i
14
+ else
15
+ 27020
16
+ end
17
+ end
18
+
19
+ let(:extra_options) do
20
+ {
21
+ mongocryptd_spawn_args: ["--port=#{mongocryptd_port}"],
22
+ mongocryptd_uri: "mongodb://localhost:#{mongocryptd_port}",
23
+ }
24
+ end
25
+
26
+ let(:crypt_shared_lib_path) do
27
+ ENV['MONGO_RUBY_DRIVER_CRYPT_SHARED_LIB_PATH']
28
+ end
29
+
30
+ let(:key_vault_client) do
31
+ Mongo::Client.new(SpecConfig.instance.addresses, database: key_vault_database)
32
+ end
33
+
34
+ let(:key_vault_database) do
35
+ 'encryption'
36
+ end
37
+
38
+ let(:key_vault_collection) do
39
+ '__keyVault'
40
+ end
41
+
42
+ let(:key_vault_namespace) do
43
+ "#{key_vault_database}.#{key_vault_collection}"
44
+ end
45
+
46
+ let(:local_master_key) do
47
+ 'A' * 96
48
+ end
49
+
50
+ let(:kms_providers) do
51
+ {
52
+ local: {
53
+ key: local_master_key
54
+ }
55
+ }
56
+ end
57
+
58
+ let(:key_alt_name) do
59
+ 'mongoid_test_key'
60
+ end
61
+
62
+ let(:client_encryption) do
63
+ Mongo::ClientEncryption.new(
64
+ key_vault_client,
65
+ key_vault_namespace: key_vault_namespace,
66
+ kms_providers: kms_providers
67
+ )
68
+ end
69
+
70
+ let(:data_key_id) do
71
+ if (data_key = client_encryption.get_key_by_alt_name(key_alt_name))
72
+ Base64.encode64(data_key['_id'].data)
73
+ else
74
+ key_id = client_encryption.create_data_key('local', key_alt_names: [key_alt_name])
75
+ Base64.encode64(key_id.data).strip
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  module Mongoid
4
5
  module Expectations
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+ # rubocop:todo all
3
+
4
+ # A helper utility for allowing features to be loaded and constants defined
5
+ # inside a sandbox, where they can be unloaded and undefined when finished.
6
+ #
7
+ # @example Quarantining a block of code.
8
+ # FeatureSandbox.quarantine do
9
+ # require "support/rails_mock"
10
+ # expect(defined?(Rails)).to be == "constant"
11
+ # end
12
+ # expect(defined?(Rails)).to be_nil
13
+ module FeatureSandbox
14
+ extend self
15
+
16
+ # Initiates the quarantine by noting the current state of the top-level
17
+ # constants, the $LOADED_FEATURES array, and the $LOAD_PATH.
18
+ #
19
+ # @return Hash The current state of the environment.
20
+ def start_quarantine
21
+ { constants: Object.constants.dup,
22
+ features: $LOADED_FEATURES.dup,
23
+ load_path: $LOAD_PATH.dup }
24
+ end
25
+
26
+ # Terminates the quarantine indicated by the given state, by rolling back
27
+ # changes made since the state was created.
28
+ #
29
+ # @param [ Hash ] state The state object to roll the environment back to.
30
+ def end_quarantine(state)
31
+ restore_load_path(state[:load_path])
32
+ unload_features($LOADED_FEATURES - state[:features])
33
+ unload_constants(Object, Object.constants - state[:constants])
34
+ end
35
+
36
+ # A convenience method for starting a quarantine, yielding to a block, and
37
+ # then ending the quarantine when the block finishes.
38
+ #
39
+ # @yield The block will be executed within the quarantine, with all changes
40
+ # to state rolled back upon completion.
41
+ def quarantine
42
+ state = start_quarantine
43
+ yield
44
+ ensure
45
+ end_quarantine(state)
46
+ end
47
+
48
+ private
49
+
50
+ def restore_load_path(list)
51
+ $LOAD_PATH.replace(list)
52
+ end
53
+
54
+ def unload_features(list)
55
+ list.each do |path|
56
+ $LOADED_FEATURES.delete(path)
57
+ end
58
+ end
59
+
60
+ def unload_constants(parent, list)
61
+ list.each do |name|
62
+ obj = parent.const_get(name)
63
+ if obj.is_a?(Module) && obj.constants(false).any?
64
+ unload_constants(obj, obj.constants(false))
65
+ end
66
+
67
+ Mongoid.deregister_model(obj) if obj.is_a?(Mongoid::Document)
68
+
69
+ parent.send(:remove_const, name)
70
+ end
71
+ end
72
+ end
@@ -1,3 +1,4 @@
1
+ # rubocop:todo all
1
2
  module Helpers
2
3
  # Reloads the specified model class.
3
4
  #
@@ -1,30 +1,31 @@
1
+ # rubocop:todo all
1
2
  module Mongoid
2
3
  module ImmutableIds
3
4
  def immutable_id_examples_as(name)
4
5
  shared_examples_for name do
5
6
  shared_examples 'a persisted document' do
6
- it 'should ignore the change and issue a warning' do
7
- expect(Mongoid::Warnings).to receive(:warn_mutable_ids)
8
- expect { invoke_operation! }.not_to raise_error
9
- expect(id_is_unchanged).not_to be legacy_behavior_expects_id_to_change
7
+ it 'should disallow _id to be updated' do
8
+ expect { invoke_operation! }
9
+ .to raise_error(Mongoid::Errors::ImmutableAttribute)
10
+ end
11
+
12
+ context 'when immutable_ids is false' do
13
+ before { Mongoid::Config.immutable_ids = false }
14
+ after { Mongoid::Config.immutable_ids = true }
15
+
16
+ it 'should ignore the change and issue a warning' do
17
+ expect(Mongoid::Warnings).to receive(:warn_mutable_ids)
18
+ expect { invoke_operation! }.not_to raise_error
19
+ expect(id_is_unchanged).not_to be legacy_behavior_expects_id_to_change
20
+ end
10
21
  end
11
22
 
12
- context 'when immutable_ids is true' do
13
- before { Mongoid::Config.immutable_ids = true }
14
- after { Mongoid::Config.immutable_ids = false }
23
+ context 'when id is set to the existing value' do
24
+ let(:new_id_value) { object._id }
15
25
 
16
- it 'should disallow _id to be updated' do
26
+ it 'should allow the update to proceed' do
17
27
  expect { invoke_operation! }
18
- .to raise_error(Mongoid::Errors::ImmutableAttribute)
19
- end
20
-
21
- context 'when id is set to the existing value' do
22
- let(:new_id_value) { object._id }
23
-
24
- it 'should allow the update to proceed' do
25
- expect { invoke_operation! }
26
- .not_to raise_error
27
- end
28
+ .not_to raise_error
28
29
  end
29
30
  end
30
31
  end
@@ -77,7 +78,8 @@ module Mongoid
77
78
 
78
79
  context 'updating embeds_one via parent' do
79
80
  context 'when immutable_ids is false' do
80
- before { expect(Mongoid::Config.immutable_ids).to be false }
81
+ before { Mongoid::Config.immutable_ids = false }
82
+ after { Mongoid::Config.immutable_ids = true }
81
83
 
82
84
  it 'should ignore the change' do
83
85
  expect(Mongoid::Warnings).to receive(:warn_mutable_ids)
@@ -94,8 +96,7 @@ module Mongoid
94
96
  end
95
97
 
96
98
  context 'when immutable_ids is true' do
97
- before { Mongoid::Config.immutable_ids = true }
98
- after { Mongoid::Config.immutable_ids = false }
99
+ before { expect(Mongoid::Config.immutable_ids).to be true }
99
100
 
100
101
  it 'should raise an exception' do
101
102
  parent.pet = pet = Pet.new
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  module Mongoid
4
5
  module Macros
@@ -73,7 +74,7 @@ module Mongoid
73
74
 
74
75
  def query_cache_enabled
75
76
  around do |example|
76
- Mongoid::QueryCache.cache do
77
+ Mongo::QueryCache.cache do
77
78
  example.run
78
79
  end
79
80
  end
@@ -102,12 +103,9 @@ module Mongoid
102
103
  end
103
104
  end
104
105
 
105
- def time_zone_override(tz)
106
+ def time_zone_override(time_zone)
106
107
  around do |example|
107
- old_tz = Time.zone
108
- Time.zone = tz
109
- example.run
110
- Time.zone = old_tz
108
+ Time.use_zone(time_zone) { example.run }
111
109
  end
112
110
  end
113
111
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  class Account
4
5
  include Mongoid::Document
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  class Acolyte
4
5
  include Mongoid::Document
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  class Actor
4
5
  include Mongoid::Document
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  class Actress < Actor
4
5
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  class Address
4
5
  include Mongoid::Document
@@ -26,6 +27,8 @@ class Address
26
27
  field :s, type: String, as: :suite
27
28
  field :name, localize: true
28
29
 
30
+ alias_attribute :n, :name
31
+
29
32
  embeds_many :locations, validate: false
30
33
  embeds_one :code, validate: false
31
34
  embeds_one :target, as: :targetable, validate: false
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  class AddressComponent
4
5
  include Mongoid::Document
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  class AddressNumber
4
5
  include Mongoid::Document
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:todo all
2
3
 
3
4
  class Agency
4
5
  include Mongoid::Document