mongoid 7.0.6 → 7.1.2

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 (849) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/CHANGELOG.md +13 -13
  5. data/README.md +23 -17
  6. data/Rakefile +2 -0
  7. data/lib/config/locales/en.yml +60 -51
  8. data/lib/mongoid.rb +10 -2
  9. data/lib/mongoid/association.rb +9 -6
  10. data/lib/mongoid/association/accessors.rb +95 -52
  11. data/lib/mongoid/association/bindable.rb +7 -5
  12. data/lib/mongoid/association/builders.rb +4 -3
  13. data/lib/mongoid/association/constrainable.rb +4 -2
  14. data/lib/mongoid/association/depending.rb +5 -2
  15. data/lib/mongoid/association/eager_loadable.rb +2 -0
  16. data/lib/mongoid/association/embedded.rb +3 -0
  17. data/lib/mongoid/association/embedded/batchable.rb +4 -2
  18. data/lib/mongoid/association/embedded/cyclic.rb +8 -6
  19. data/lib/mongoid/association/embedded/embedded_in.rb +6 -3
  20. data/lib/mongoid/association/embedded/embedded_in/binding.rb +4 -1
  21. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +8 -2
  22. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +15 -12
  23. data/lib/mongoid/association/embedded/embeds_many.rb +9 -5
  24. data/lib/mongoid/association/embedded/embeds_many/binding.rb +5 -2
  25. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +9 -3
  26. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +50 -47
  27. data/lib/mongoid/association/embedded/embeds_one.rb +9 -5
  28. data/lib/mongoid/association/embedded/embeds_one/binding.rb +5 -2
  29. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +10 -4
  30. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +17 -14
  31. data/lib/mongoid/association/macros.rb +38 -36
  32. data/lib/mongoid/association/many.rb +14 -11
  33. data/lib/mongoid/association/marshalable.rb +3 -1
  34. data/lib/mongoid/association/nested.rb +4 -1
  35. data/lib/mongoid/association/nested/many.rb +17 -15
  36. data/lib/mongoid/association/nested/nested_buildable.rb +6 -3
  37. data/lib/mongoid/association/nested/one.rb +11 -9
  38. data/lib/mongoid/association/one.rb +3 -1
  39. data/lib/mongoid/association/options.rb +9 -6
  40. data/lib/mongoid/association/proxy.rb +31 -14
  41. data/lib/mongoid/association/referenced.rb +3 -0
  42. data/lib/mongoid/association/referenced/auto_save.rb +4 -1
  43. data/lib/mongoid/association/referenced/belongs_to.rb +6 -3
  44. data/lib/mongoid/association/referenced/belongs_to/binding.rb +3 -1
  45. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +6 -3
  46. data/lib/mongoid/association/referenced/belongs_to/eager.rb +40 -2
  47. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +16 -14
  48. data/lib/mongoid/association/referenced/counter_cache.rb +2 -0
  49. data/lib/mongoid/association/referenced/eager.rb +37 -15
  50. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +13 -6
  51. data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +12 -6
  52. data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +5 -2
  53. data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -0
  54. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +25 -18
  55. data/lib/mongoid/association/referenced/has_many.rb +7 -4
  56. data/lib/mongoid/association/referenced/has_many/binding.rb +3 -1
  57. data/lib/mongoid/association/referenced/has_many/buildable.rb +5 -2
  58. data/lib/mongoid/association/referenced/has_many/eager.rb +2 -0
  59. data/lib/mongoid/association/referenced/has_many/enumerable.rb +11 -4
  60. data/lib/mongoid/association/referenced/has_many/proxy.rb +46 -43
  61. data/lib/mongoid/association/referenced/has_one.rb +5 -2
  62. data/lib/mongoid/association/referenced/has_one/binding.rb +4 -2
  63. data/lib/mongoid/association/referenced/has_one/buildable.rb +8 -1
  64. data/lib/mongoid/association/referenced/has_one/eager.rb +2 -0
  65. data/lib/mongoid/association/referenced/has_one/nested_builder.rb +11 -9
  66. data/lib/mongoid/association/referenced/has_one/proxy.rb +17 -15
  67. data/lib/mongoid/association/referenced/syncable.rb +7 -5
  68. data/lib/mongoid/association/reflections.rb +7 -5
  69. data/lib/mongoid/association/relatable.rb +17 -14
  70. data/lib/mongoid/atomic.rb +15 -3
  71. data/lib/mongoid/atomic/modifiers.rb +24 -1
  72. data/lib/mongoid/atomic/paths.rb +2 -0
  73. data/lib/mongoid/atomic/paths/embedded.rb +2 -0
  74. data/lib/mongoid/atomic/paths/embedded/many.rb +4 -2
  75. data/lib/mongoid/atomic/paths/embedded/one.rb +4 -2
  76. data/lib/mongoid/atomic/paths/root.rb +4 -2
  77. data/lib/mongoid/attributes.rb +14 -13
  78. data/lib/mongoid/attributes/dynamic.rb +2 -0
  79. data/lib/mongoid/attributes/nested.rb +7 -5
  80. data/lib/mongoid/attributes/processing.rb +8 -6
  81. data/lib/mongoid/attributes/readonly.rb +3 -1
  82. data/lib/mongoid/cacheable.rb +3 -1
  83. data/lib/mongoid/changeable.rb +3 -1
  84. data/lib/mongoid/clients.rb +2 -0
  85. data/lib/mongoid/clients/factory.rb +1 -0
  86. data/lib/mongoid/clients/options.rb +2 -0
  87. data/lib/mongoid/clients/sessions.rb +3 -0
  88. data/lib/mongoid/clients/storage_options.rb +2 -0
  89. data/lib/mongoid/clients/validators.rb +2 -0
  90. data/lib/mongoid/clients/validators/storage.rb +2 -0
  91. data/lib/mongoid/composable.rb +4 -2
  92. data/lib/mongoid/config.rb +53 -10
  93. data/lib/mongoid/config/environment.rb +2 -0
  94. data/lib/mongoid/config/options.rb +20 -12
  95. data/lib/mongoid/config/validators.rb +2 -0
  96. data/lib/mongoid/config/validators/client.rb +2 -0
  97. data/lib/mongoid/config/validators/option.rb +2 -0
  98. data/lib/mongoid/contextual.rb +7 -4
  99. data/lib/mongoid/contextual/aggregable/memory.rb +3 -1
  100. data/lib/mongoid/contextual/aggregable/mongo.rb +3 -1
  101. data/lib/mongoid/contextual/atomic.rb +24 -6
  102. data/lib/mongoid/contextual/command.rb +2 -0
  103. data/lib/mongoid/contextual/geo_near.rb +5 -3
  104. data/lib/mongoid/contextual/map_reduce.rb +5 -2
  105. data/lib/mongoid/contextual/memory.rb +4 -2
  106. data/lib/mongoid/contextual/mongo.rb +6 -1
  107. data/lib/mongoid/contextual/none.rb +2 -0
  108. data/lib/mongoid/contextual/queryable.rb +2 -0
  109. data/lib/mongoid/copyable.rb +3 -1
  110. data/lib/mongoid/criteria.rb +25 -4
  111. data/lib/mongoid/criteria/findable.rb +11 -1
  112. data/lib/mongoid/criteria/includable.rb +8 -6
  113. data/lib/mongoid/criteria/inspectable.rb +2 -0
  114. data/lib/mongoid/criteria/marshalable.rb +2 -0
  115. data/lib/mongoid/criteria/modifiable.rb +4 -1
  116. data/lib/mongoid/criteria/options.rb +2 -0
  117. data/lib/mongoid/criteria/permission.rb +2 -0
  118. data/lib/mongoid/criteria/queryable.rb +7 -2
  119. data/lib/mongoid/criteria/queryable/aggregable.rb +2 -0
  120. data/lib/mongoid/criteria/queryable/expandable.rb +93 -0
  121. data/lib/mongoid/criteria/queryable/extensions.rb +2 -0
  122. data/lib/mongoid/criteria/queryable/extensions/array.rb +3 -1
  123. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -1
  124. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -0
  125. data/lib/mongoid/criteria/queryable/extensions/date.rb +3 -1
  126. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +5 -6
  127. data/lib/mongoid/criteria/queryable/extensions/hash.rb +3 -1
  128. data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -1
  129. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +4 -2
  130. data/lib/mongoid/criteria/queryable/extensions/object.rb +3 -1
  131. data/lib/mongoid/criteria/queryable/extensions/range.rb +3 -1
  132. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +7 -5
  133. data/lib/mongoid/criteria/queryable/extensions/set.rb +3 -1
  134. data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -1
  135. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -1
  136. data/lib/mongoid/criteria/queryable/extensions/time.rb +4 -2
  137. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +3 -1
  138. data/lib/mongoid/criteria/queryable/key.rb +34 -6
  139. data/lib/mongoid/criteria/queryable/macroable.rb +3 -1
  140. data/lib/mongoid/criteria/queryable/mergeable.rb +153 -11
  141. data/lib/mongoid/criteria/queryable/optional.rb +5 -3
  142. data/lib/mongoid/criteria/queryable/options.rb +2 -0
  143. data/lib/mongoid/criteria/queryable/pipeline.rb +5 -2
  144. data/lib/mongoid/criteria/queryable/selectable.rb +374 -90
  145. data/lib/mongoid/criteria/queryable/selector.rb +38 -5
  146. data/lib/mongoid/criteria/queryable/smash.rb +2 -0
  147. data/lib/mongoid/criteria/queryable/storable.rb +233 -0
  148. data/lib/mongoid/criteria/scopable.rb +2 -0
  149. data/lib/mongoid/document.rb +2 -0
  150. data/lib/mongoid/equality.rb +3 -2
  151. data/lib/mongoid/errors.rb +3 -0
  152. data/lib/mongoid/errors/ambiguous_relationship.rb +4 -2
  153. data/lib/mongoid/errors/callback.rb +2 -0
  154. data/lib/mongoid/errors/criteria_argument_required.rb +19 -0
  155. data/lib/mongoid/errors/delete_restriction.rb +3 -2
  156. data/lib/mongoid/errors/document_not_destroyed.rb +2 -0
  157. data/lib/mongoid/errors/document_not_found.rb +2 -0
  158. data/lib/mongoid/errors/eager_load.rb +6 -2
  159. data/lib/mongoid/errors/in_memory_collation_not_supported.rb +2 -0
  160. data/lib/mongoid/errors/invalid_collection.rb +2 -0
  161. data/lib/mongoid/errors/invalid_config_option.rb +2 -0
  162. data/lib/mongoid/errors/invalid_dependent_strategy.rb +2 -0
  163. data/lib/mongoid/errors/invalid_field.rb +2 -0
  164. data/lib/mongoid/errors/invalid_field_option.rb +2 -0
  165. data/lib/mongoid/errors/invalid_find.rb +2 -0
  166. data/lib/mongoid/errors/invalid_includes.rb +2 -0
  167. data/lib/mongoid/errors/invalid_index.rb +2 -0
  168. data/lib/mongoid/errors/invalid_options.rb +4 -2
  169. data/lib/mongoid/errors/invalid_path.rb +2 -0
  170. data/lib/mongoid/errors/invalid_persistence_option.rb +2 -0
  171. data/lib/mongoid/errors/invalid_relation.rb +4 -2
  172. data/lib/mongoid/errors/invalid_relation_option.rb +4 -2
  173. data/lib/mongoid/errors/invalid_scope.rb +2 -0
  174. data/lib/mongoid/errors/invalid_session_use.rb +2 -0
  175. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -4
  176. data/lib/mongoid/errors/invalid_storage_options.rb +2 -0
  177. data/lib/mongoid/errors/invalid_storage_parent.rb +2 -0
  178. data/lib/mongoid/errors/invalid_time.rb +2 -0
  179. data/lib/mongoid/errors/invalid_value.rb +2 -0
  180. data/lib/mongoid/errors/inverse_not_found.rb +3 -1
  181. data/lib/mongoid/errors/mixed_client_configuration.rb +2 -0
  182. data/lib/mongoid/errors/mixed_relations.rb +2 -0
  183. data/lib/mongoid/errors/mongoid_error.rb +2 -0
  184. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +3 -1
  185. data/lib/mongoid/errors/no_client_config.rb +2 -0
  186. data/lib/mongoid/errors/no_client_database.rb +2 -0
  187. data/lib/mongoid/errors/no_client_hosts.rb +2 -0
  188. data/lib/mongoid/errors/no_clients_config.rb +2 -0
  189. data/lib/mongoid/errors/no_default_client.rb +2 -0
  190. data/lib/mongoid/errors/no_environment.rb +2 -0
  191. data/lib/mongoid/errors/no_map_reduce_output.rb +2 -0
  192. data/lib/mongoid/errors/no_metadata.rb +2 -0
  193. data/lib/mongoid/errors/no_parent.rb +2 -0
  194. data/lib/mongoid/errors/readonly_attribute.rb +2 -0
  195. data/lib/mongoid/errors/readonly_document.rb +2 -0
  196. data/lib/mongoid/errors/scope_overwrite.rb +2 -0
  197. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +3 -0
  198. data/lib/mongoid/errors/unknown_attribute.rb +2 -0
  199. data/lib/mongoid/errors/unknown_model.rb +2 -0
  200. data/lib/mongoid/errors/unsaved_document.rb +2 -0
  201. data/lib/mongoid/errors/unsupported_javascript.rb +2 -0
  202. data/lib/mongoid/errors/validations.rb +2 -0
  203. data/lib/mongoid/evolvable.rb +3 -1
  204. data/lib/mongoid/extensions.rb +2 -0
  205. data/lib/mongoid/extensions/array.rb +23 -6
  206. data/lib/mongoid/extensions/big_decimal.rb +2 -0
  207. data/lib/mongoid/extensions/boolean.rb +2 -0
  208. data/lib/mongoid/extensions/date.rb +13 -3
  209. data/lib/mongoid/extensions/date_time.rb +4 -3
  210. data/lib/mongoid/extensions/decimal128.rb +2 -0
  211. data/lib/mongoid/extensions/false_class.rb +2 -0
  212. data/lib/mongoid/extensions/float.rb +5 -3
  213. data/lib/mongoid/extensions/hash.rb +51 -9
  214. data/lib/mongoid/extensions/integer.rb +5 -3
  215. data/lib/mongoid/extensions/module.rb +2 -0
  216. data/lib/mongoid/extensions/nil_class.rb +2 -0
  217. data/lib/mongoid/extensions/object.rb +16 -4
  218. data/lib/mongoid/extensions/object_id.rb +2 -0
  219. data/lib/mongoid/extensions/range.rb +2 -0
  220. data/lib/mongoid/extensions/regexp.rb +3 -1
  221. data/lib/mongoid/extensions/set.rb +2 -0
  222. data/lib/mongoid/extensions/string.rb +18 -9
  223. data/lib/mongoid/extensions/symbol.rb +2 -0
  224. data/lib/mongoid/extensions/time.rb +14 -0
  225. data/lib/mongoid/extensions/time_with_zone.rb +14 -0
  226. data/lib/mongoid/extensions/true_class.rb +2 -0
  227. data/lib/mongoid/factory.rb +28 -5
  228. data/lib/mongoid/fields.rb +5 -2
  229. data/lib/mongoid/fields/foreign_key.rb +3 -1
  230. data/lib/mongoid/fields/localized.rb +2 -0
  231. data/lib/mongoid/fields/standard.rb +6 -3
  232. data/lib/mongoid/fields/validators.rb +2 -0
  233. data/lib/mongoid/fields/validators/macro.rb +13 -2
  234. data/lib/mongoid/findable.rb +9 -4
  235. data/lib/mongoid/indexable.rb +3 -1
  236. data/lib/mongoid/indexable/specification.rb +3 -1
  237. data/lib/mongoid/indexable/validators/options.rb +2 -0
  238. data/lib/mongoid/inspectable.rb +3 -1
  239. data/lib/mongoid/interceptable.rb +9 -3
  240. data/lib/mongoid/loggable.rb +13 -7
  241. data/lib/mongoid/matchable.rb +2 -0
  242. data/lib/mongoid/matchable/all.rb +2 -0
  243. data/lib/mongoid/matchable/and.rb +2 -0
  244. data/lib/mongoid/matchable/default.rb +2 -0
  245. data/lib/mongoid/matchable/elem_match.rb +2 -0
  246. data/lib/mongoid/matchable/eq.rb +1 -0
  247. data/lib/mongoid/matchable/exists.rb +2 -0
  248. data/lib/mongoid/matchable/gt.rb +2 -0
  249. data/lib/mongoid/matchable/gte.rb +2 -0
  250. data/lib/mongoid/matchable/in.rb +2 -0
  251. data/lib/mongoid/matchable/lt.rb +2 -0
  252. data/lib/mongoid/matchable/lte.rb +2 -0
  253. data/lib/mongoid/matchable/ne.rb +2 -0
  254. data/lib/mongoid/matchable/nin.rb +2 -0
  255. data/lib/mongoid/matchable/nor.rb +2 -1
  256. data/lib/mongoid/matchable/or.rb +2 -0
  257. data/lib/mongoid/matchable/regexp.rb +5 -2
  258. data/lib/mongoid/matchable/size.rb +2 -0
  259. data/lib/mongoid/persistable.rb +133 -15
  260. data/lib/mongoid/persistable/creatable.rb +3 -1
  261. data/lib/mongoid/persistable/deletable.rb +3 -1
  262. data/lib/mongoid/persistable/destroyable.rb +3 -1
  263. data/lib/mongoid/persistable/incrementable.rb +6 -2
  264. data/lib/mongoid/persistable/logical.rb +4 -1
  265. data/lib/mongoid/persistable/poppable.rb +3 -1
  266. data/lib/mongoid/persistable/pullable.rb +3 -1
  267. data/lib/mongoid/persistable/pushable.rb +14 -3
  268. data/lib/mongoid/persistable/renamable.rb +10 -3
  269. data/lib/mongoid/persistable/savable.rb +3 -1
  270. data/lib/mongoid/persistable/settable.rb +3 -1
  271. data/lib/mongoid/persistable/unsettable.rb +8 -3
  272. data/lib/mongoid/persistable/updatable.rb +3 -1
  273. data/lib/mongoid/persistable/upsertable.rb +3 -1
  274. data/lib/mongoid/persistence_context.rb +27 -15
  275. data/lib/mongoid/positional.rb +2 -0
  276. data/lib/mongoid/query_cache.rb +10 -9
  277. data/lib/mongoid/railtie.rb +3 -1
  278. data/lib/mongoid/railties/controller_runtime.rb +4 -1
  279. data/lib/mongoid/railties/database.rake +9 -0
  280. data/lib/mongoid/reloadable.rb +4 -2
  281. data/lib/mongoid/scopable.rb +2 -1
  282. data/lib/mongoid/selectable.rb +3 -1
  283. data/lib/mongoid/serializable.rb +23 -13
  284. data/lib/mongoid/shardable.rb +59 -5
  285. data/lib/mongoid/stateful.rb +3 -1
  286. data/lib/mongoid/tasks/database.rake +12 -5
  287. data/lib/mongoid/tasks/database.rb +50 -0
  288. data/lib/mongoid/threaded.rb +2 -0
  289. data/lib/mongoid/threaded/lifecycle.rb +2 -0
  290. data/lib/mongoid/timestamps.rb +3 -1
  291. data/lib/mongoid/timestamps/created.rb +3 -1
  292. data/lib/mongoid/timestamps/created/short.rb +2 -0
  293. data/lib/mongoid/timestamps/short.rb +2 -0
  294. data/lib/mongoid/timestamps/timeless.rb +6 -2
  295. data/lib/mongoid/timestamps/updated.rb +3 -1
  296. data/lib/mongoid/timestamps/updated/short.rb +2 -0
  297. data/lib/mongoid/touchable.rb +20 -12
  298. data/lib/mongoid/traversable.rb +4 -2
  299. data/lib/mongoid/validatable.rb +7 -5
  300. data/lib/mongoid/validatable/associated.rb +4 -2
  301. data/lib/mongoid/validatable/format.rb +2 -0
  302. data/lib/mongoid/validatable/length.rb +2 -0
  303. data/lib/mongoid/validatable/localizable.rb +2 -0
  304. data/lib/mongoid/validatable/macros.rb +2 -0
  305. data/lib/mongoid/validatable/presence.rb +4 -2
  306. data/lib/mongoid/validatable/queryable.rb +2 -0
  307. data/lib/mongoid/validatable/uniqueness.rb +5 -3
  308. data/lib/mongoid/version.rb +2 -1
  309. data/lib/rails/generators/mongoid/config/config_generator.rb +2 -0
  310. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +44 -29
  311. data/lib/rails/generators/mongoid/model/model_generator.rb +3 -1
  312. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -1
  313. data/lib/rails/generators/mongoid_generator.rb +2 -0
  314. data/lib/rails/mongoid.rb +4 -2
  315. data/lib/support/ruby_version.rb +3 -0
  316. data/spec/app/models/account.rb +3 -0
  317. data/spec/app/models/acolyte.rb +3 -0
  318. data/spec/app/models/actor.rb +3 -0
  319. data/spec/app/models/actress.rb +3 -0
  320. data/spec/app/models/address.rb +3 -0
  321. data/spec/app/models/address_component.rb +3 -0
  322. data/spec/app/models/address_number.rb +3 -0
  323. data/spec/app/models/agency.rb +3 -0
  324. data/spec/app/models/agent.rb +3 -0
  325. data/spec/app/models/album.rb +3 -0
  326. data/spec/app/models/alert.rb +3 -0
  327. data/spec/app/models/animal.rb +3 -0
  328. data/spec/app/models/answer.rb +3 -0
  329. data/spec/app/models/appointment.rb +3 -0
  330. data/spec/app/models/array_field.rb +1 -0
  331. data/spec/app/models/article.rb +3 -0
  332. data/spec/app/models/artist.rb +3 -0
  333. data/spec/app/models/artwork.rb +3 -0
  334. data/spec/app/models/audio.rb +3 -0
  335. data/spec/app/models/augmentation.rb +3 -0
  336. data/spec/app/models/author.rb +3 -0
  337. data/spec/app/models/baby.rb +3 -0
  338. data/spec/app/models/band.rb +3 -0
  339. data/spec/app/models/bar.rb +3 -0
  340. data/spec/app/models/basic.rb +3 -0
  341. data/spec/app/models/bed.rb +3 -0
  342. data/spec/app/models/big_palette.rb +3 -0
  343. data/spec/app/models/birthday.rb +3 -0
  344. data/spec/app/models/bomb.rb +3 -0
  345. data/spec/app/models/book.rb +3 -0
  346. data/spec/app/models/breed.rb +3 -0
  347. data/spec/app/models/browser.rb +3 -0
  348. data/spec/app/models/building.rb +3 -0
  349. data/spec/app/models/building_address.rb +3 -0
  350. data/spec/app/models/bus.rb +3 -0
  351. data/spec/app/models/business.rb +3 -0
  352. data/spec/app/models/callback_test.rb +3 -0
  353. data/spec/app/models/canvas.rb +3 -0
  354. data/spec/app/models/car.rb +3 -0
  355. data/spec/app/models/cat.rb +3 -0
  356. data/spec/app/models/category.rb +3 -0
  357. data/spec/app/models/child.rb +3 -0
  358. data/spec/app/models/child_doc.rb +3 -0
  359. data/spec/app/models/church.rb +3 -0
  360. data/spec/app/models/circle.rb +3 -0
  361. data/spec/app/models/circuit.rb +3 -0
  362. data/spec/app/models/circus.rb +3 -0
  363. data/spec/app/models/code.rb +3 -0
  364. data/spec/app/models/coding.rb +4 -0
  365. data/spec/app/models/coding/pull_request.rb +12 -0
  366. data/spec/app/models/comment.rb +3 -0
  367. data/spec/app/models/company.rb +3 -0
  368. data/spec/app/models/consumption_period.rb +3 -0
  369. data/spec/app/models/contextable_item.rb +3 -0
  370. data/spec/app/models/contractor.rb +3 -0
  371. data/spec/app/models/cookie.rb +3 -0
  372. data/spec/app/models/country_code.rb +3 -0
  373. data/spec/app/models/courier_job.rb +3 -0
  374. data/spec/app/models/definition.rb +3 -0
  375. data/spec/app/models/delegating_patient.rb +16 -0
  376. data/spec/app/models/description.rb +3 -0
  377. data/spec/app/models/dictionary.rb +3 -0
  378. data/spec/app/models/division.rb +3 -0
  379. data/spec/app/models/doctor.rb +3 -0
  380. data/spec/app/models/dog.rb +3 -0
  381. data/spec/app/models/dokument.rb +3 -0
  382. data/spec/app/models/draft.rb +3 -0
  383. data/spec/app/models/dragon.rb +3 -0
  384. data/spec/app/models/driver.rb +3 -0
  385. data/spec/app/models/drug.rb +3 -0
  386. data/spec/app/models/dungeon.rb +3 -0
  387. data/spec/app/models/edit.rb +3 -0
  388. data/spec/app/models/email.rb +3 -0
  389. data/spec/app/models/employer.rb +3 -0
  390. data/spec/app/models/entry.rb +3 -0
  391. data/spec/app/models/eraser.rb +3 -0
  392. data/spec/app/models/even.rb +3 -0
  393. data/spec/app/models/event.rb +3 -0
  394. data/spec/app/models/exhibition.rb +3 -0
  395. data/spec/app/models/exhibitor.rb +3 -0
  396. data/spec/app/models/explosion.rb +3 -0
  397. data/spec/app/models/eye.rb +3 -0
  398. data/spec/app/models/eye_bowl.rb +3 -0
  399. data/spec/app/models/face.rb +3 -0
  400. data/spec/app/models/favorite.rb +3 -0
  401. data/spec/app/models/filesystem.rb +3 -0
  402. data/spec/app/models/fire_hydrant.rb +3 -0
  403. data/spec/app/models/firefox.rb +3 -0
  404. data/spec/app/models/fish.rb +3 -0
  405. data/spec/app/models/folder.rb +3 -0
  406. data/spec/app/models/folder_item.rb +3 -0
  407. data/spec/app/models/fruits.rb +3 -0
  408. data/spec/app/models/game.rb +3 -0
  409. data/spec/app/models/ghost.rb +3 -0
  410. data/spec/app/models/home.rb +3 -0
  411. data/spec/app/models/house.rb +3 -0
  412. data/spec/app/models/html_writer.rb +3 -0
  413. data/spec/app/models/id_key.rb +3 -0
  414. data/spec/app/models/image.rb +3 -0
  415. data/spec/app/models/implant.rb +3 -0
  416. data/spec/app/models/item.rb +3 -0
  417. data/spec/app/models/jar.rb +3 -0
  418. data/spec/app/models/kaleidoscope.rb +3 -0
  419. data/spec/app/models/kangaroo.rb +4 -1
  420. data/spec/app/models/label.rb +3 -0
  421. data/spec/app/models/language.rb +3 -0
  422. data/spec/app/models/lat_lng.rb +3 -0
  423. data/spec/app/models/league.rb +3 -0
  424. data/spec/app/models/learner.rb +3 -0
  425. data/spec/app/models/line_item.rb +3 -0
  426. data/spec/app/models/location.rb +3 -0
  427. data/spec/app/models/login.rb +3 -0
  428. data/spec/app/models/manufacturer.rb +3 -0
  429. data/spec/app/models/meat.rb +3 -0
  430. data/spec/app/models/membership.rb +3 -0
  431. data/spec/app/models/message.rb +3 -0
  432. data/spec/app/models/minim.rb +1 -1
  433. data/spec/app/models/mixed_drink.rb +3 -0
  434. data/spec/app/models/movie.rb +3 -0
  435. data/spec/app/models/my_hash.rb +3 -0
  436. data/spec/app/models/name.rb +3 -0
  437. data/spec/app/models/name_only.rb +9 -0
  438. data/spec/app/models/node.rb +3 -0
  439. data/spec/app/models/note.rb +3 -0
  440. data/spec/app/models/odd.rb +3 -0
  441. data/spec/app/models/ordered_post.rb +3 -0
  442. data/spec/app/models/ordered_preference.rb +3 -0
  443. data/spec/app/models/oscar.rb +3 -0
  444. data/spec/app/models/other_owner_object.rb +3 -0
  445. data/spec/app/models/override.rb +3 -0
  446. data/spec/app/models/ownable.rb +3 -0
  447. data/spec/app/models/owner.rb +3 -0
  448. data/spec/app/models/pack.rb +3 -0
  449. data/spec/app/models/page.rb +3 -0
  450. data/spec/app/models/page_question.rb +3 -0
  451. data/spec/app/models/palette.rb +3 -0
  452. data/spec/app/models/parent.rb +3 -0
  453. data/spec/app/models/parent_doc.rb +3 -0
  454. data/spec/app/models/passport.rb +3 -0
  455. data/spec/app/models/patient.rb +3 -0
  456. data/spec/app/models/pdf_writer.rb +3 -0
  457. data/spec/app/models/pencil.rb +3 -0
  458. data/spec/app/models/person.rb +3 -0
  459. data/spec/app/models/pet.rb +3 -0
  460. data/spec/app/models/pet_owner.rb +3 -0
  461. data/spec/app/models/phone.rb +3 -0
  462. data/spec/app/models/pizza.rb +3 -0
  463. data/spec/app/models/player.rb +3 -0
  464. data/spec/app/models/post.rb +3 -0
  465. data/spec/app/models/post_genre.rb +3 -0
  466. data/spec/app/models/powerup.rb +3 -0
  467. data/spec/app/models/preference.rb +3 -0
  468. data/spec/app/models/princess.rb +3 -0
  469. data/spec/app/models/product.rb +3 -0
  470. data/spec/app/models/profile.rb +3 -0
  471. data/spec/app/models/pronunciation.rb +3 -0
  472. data/spec/app/models/pub.rb +3 -0
  473. data/spec/app/models/publication.rb +5 -0
  474. data/spec/app/models/publication/encyclopedia.rb +12 -0
  475. data/spec/app/models/publication/review.rb +14 -0
  476. data/spec/app/models/purchase.rb +3 -0
  477. data/spec/app/models/question.rb +3 -0
  478. data/spec/app/models/quiz.rb +3 -0
  479. data/spec/app/models/rating.rb +3 -0
  480. data/spec/app/models/record.rb +3 -0
  481. data/spec/app/models/registry.rb +3 -0
  482. data/spec/app/models/role.rb +3 -0
  483. data/spec/app/models/root_category.rb +3 -0
  484. data/spec/app/models/sandwich.rb +3 -0
  485. data/spec/app/models/scheduler.rb +3 -0
  486. data/spec/app/models/seo.rb +3 -0
  487. data/spec/app/models/series.rb +3 -0
  488. data/spec/app/models/server.rb +3 -0
  489. data/spec/app/models/service.rb +3 -0
  490. data/spec/app/models/shape.rb +3 -0
  491. data/spec/app/models/shelf.rb +3 -0
  492. data/spec/app/models/shipment_address.rb +3 -0
  493. data/spec/app/models/shipping_container.rb +3 -0
  494. data/spec/app/models/shipping_pack.rb +3 -0
  495. data/spec/app/models/shop.rb +3 -0
  496. data/spec/app/models/short_agent.rb +3 -0
  497. data/spec/app/models/short_quiz.rb +3 -0
  498. data/spec/app/models/simple.rb +3 -0
  499. data/spec/app/models/slave.rb +3 -0
  500. data/spec/app/models/song.rb +3 -0
  501. data/spec/app/models/sound.rb +3 -0
  502. data/spec/app/models/square.rb +3 -0
  503. data/spec/app/models/staff.rb +3 -0
  504. data/spec/app/models/store_as_dup_test1.rb +3 -0
  505. data/spec/app/models/store_as_dup_test2.rb +3 -0
  506. data/spec/app/models/store_as_dup_test3.rb +1 -0
  507. data/spec/app/models/store_as_dup_test4.rb +1 -0
  508. data/spec/app/models/strategy.rb +3 -0
  509. data/spec/app/models/sub_item.rb +3 -0
  510. data/spec/app/models/subscription.rb +3 -0
  511. data/spec/app/models/survey.rb +3 -0
  512. data/spec/app/models/symptom.rb +3 -0
  513. data/spec/app/models/tag.rb +3 -0
  514. data/spec/app/models/target.rb +3 -0
  515. data/spec/app/models/template.rb +3 -0
  516. data/spec/app/models/thing.rb +3 -0
  517. data/spec/app/models/title.rb +3 -0
  518. data/spec/app/models/tool.rb +3 -0
  519. data/spec/app/models/topping.rb +3 -0
  520. data/spec/app/models/track.rb +3 -0
  521. data/spec/app/models/translation.rb +3 -0
  522. data/spec/app/models/tree.rb +3 -0
  523. data/spec/app/models/truck.rb +3 -0
  524. data/spec/app/models/updatable.rb +1 -0
  525. data/spec/app/models/user.rb +3 -0
  526. data/spec/app/models/user_account.rb +3 -0
  527. data/spec/app/models/validation_callback.rb +3 -0
  528. data/spec/app/models/vehicle.rb +3 -0
  529. data/spec/app/models/version.rb +3 -0
  530. data/spec/app/models/vertex.rb +4 -1
  531. data/spec/app/models/vet_visit.rb +3 -0
  532. data/spec/app/models/video.rb +3 -0
  533. data/spec/app/models/video_game.rb +3 -0
  534. data/spec/app/models/weapon.rb +3 -0
  535. data/spec/app/models/wiki_page.rb +3 -0
  536. data/spec/app/models/word.rb +3 -0
  537. data/spec/app/models/word_origin.rb +3 -0
  538. data/spec/app/models/writer.rb +3 -0
  539. data/spec/config/mongoid.yml +1 -0
  540. data/spec/integration/app_spec.rb +192 -0
  541. data/spec/integration/associations/belongs_to_spec.rb +3 -0
  542. data/spec/integration/associations/embedded_spec.rb +175 -0
  543. data/spec/integration/associations/foreign_key_spec.rb +99 -0
  544. data/spec/integration/associations/foreign_key_spec_models.rb +65 -0
  545. data/spec/integration/associations/reverse_population_spec.rb +35 -0
  546. data/spec/integration/associations/reverse_population_spec_models.rb +37 -0
  547. data/spec/integration/criteria/default_scope_spec.rb +21 -0
  548. data/spec/integration/criteria/logical_spec.rb +94 -0
  549. data/spec/integration/document_spec.rb +22 -0
  550. data/spec/integration/i18n_fallbacks_spec.rb +90 -0
  551. data/spec/integration/shardable_spec.rb +133 -0
  552. data/spec/lite_spec_helper.rb +20 -5
  553. data/spec/mongoid/association/accessors_spec.rb +3 -0
  554. data/spec/mongoid/association/auto_save_spec.rb +3 -0
  555. data/spec/mongoid/association/builders_spec.rb +3 -0
  556. data/spec/mongoid/association/constrainable_spec.rb +3 -0
  557. data/spec/mongoid/association/counter_cache_spec.rb +3 -0
  558. data/spec/mongoid/association/depending_spec.rb +3 -0
  559. data/spec/mongoid/association/eager_spec.rb +3 -0
  560. data/spec/mongoid/association/embedded/cyclic_spec.rb +3 -0
  561. data/spec/mongoid/association/embedded/dirty_spec.rb +3 -0
  562. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +3 -0
  563. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +3 -0
  564. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +3 -0
  565. data/spec/mongoid/association/embedded/embedded_in_spec.rb +4 -1
  566. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +3 -0
  567. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +3 -0
  568. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +3 -0
  569. data/spec/mongoid/association/embedded/embeds_many_models.rb +53 -0
  570. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +52 -0
  571. data/spec/mongoid/association/embedded/embeds_many_spec.rb +14 -1
  572. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +3 -0
  573. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +3 -0
  574. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +3 -0
  575. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +3 -0
  576. data/spec/mongoid/association/embedded/embeds_one_models.rb +3 -0
  577. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +29 -0
  578. data/spec/mongoid/association/embedded/embeds_one_spec.rb +4 -3
  579. data/spec/mongoid/association/macros_spec.rb +3 -0
  580. data/spec/mongoid/association/nested/many_spec.rb +3 -0
  581. data/spec/mongoid/association/nested/one_spec.rb +3 -0
  582. data/spec/mongoid/association/options_spec.rb +3 -0
  583. data/spec/mongoid/association/polymorphic_spec.rb +3 -0
  584. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +3 -0
  585. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +3 -0
  586. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +205 -10
  587. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +3 -0
  588. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +38 -0
  589. data/spec/mongoid/association/referenced/belongs_to_spec.rb +3 -0
  590. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +3 -0
  591. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +3 -0
  592. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +16 -0
  593. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +26 -5
  594. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +39 -15
  595. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +26 -2
  596. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +40 -0
  597. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +26 -2
  598. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +3 -0
  599. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +3 -0
  600. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +18 -3
  601. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +3 -0
  602. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +1 -0
  603. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +5 -1
  604. data/spec/mongoid/association/referenced/has_many_models.rb +3 -0
  605. data/spec/mongoid/association/referenced/has_many_query_spec.rb +38 -0
  606. data/spec/mongoid/association/referenced/has_many_spec.rb +3 -0
  607. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +3 -0
  608. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +3 -0
  609. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +18 -3
  610. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +3 -0
  611. data/spec/mongoid/association/referenced/has_one_models.rb +3 -0
  612. data/spec/mongoid/association/referenced/has_one_query_spec.rb +38 -0
  613. data/spec/mongoid/association/referenced/has_one_spec.rb +3 -0
  614. data/spec/mongoid/association/reflections_spec.rb +3 -0
  615. data/spec/mongoid/association/syncable_spec.rb +3 -0
  616. data/spec/mongoid/association_spec.rb +3 -0
  617. data/spec/mongoid/atomic/modifiers_spec.rb +3 -0
  618. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +3 -0
  619. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +3 -0
  620. data/spec/mongoid/atomic/paths/root_spec.rb +3 -0
  621. data/spec/mongoid/atomic/paths_spec.rb +3 -0
  622. data/spec/mongoid/atomic_spec.rb +3 -0
  623. data/spec/mongoid/attributes/nested_spec.rb +3 -0
  624. data/spec/mongoid/attributes/readonly_spec.rb +3 -0
  625. data/spec/mongoid/attributes_spec.rb +3 -0
  626. data/spec/mongoid/cacheable_spec.rb +3 -0
  627. data/spec/mongoid/changeable_spec.rb +26 -0
  628. data/spec/mongoid/clients/factory_spec.rb +38 -20
  629. data/spec/mongoid/clients/options_spec.rb +26 -15
  630. data/spec/mongoid/clients/sessions_spec.rb +11 -4
  631. data/spec/mongoid/clients/transactions_spec.rb +26 -11
  632. data/spec/mongoid/clients_spec.rb +5 -2
  633. data/spec/mongoid/composable_spec.rb +3 -0
  634. data/spec/mongoid/config/environment_spec.rb +3 -0
  635. data/spec/mongoid/config/options_spec.rb +23 -3
  636. data/spec/mongoid/config_spec.rb +39 -0
  637. data/spec/mongoid/contextual/aggregable/memory_spec.rb +3 -0
  638. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +3 -0
  639. data/spec/mongoid/contextual/atomic_spec.rb +120 -10
  640. data/spec/mongoid/contextual/geo_near_spec.rb +3 -0
  641. data/spec/mongoid/contextual/map_reduce_spec.rb +23 -5
  642. data/spec/mongoid/contextual/memory_spec.rb +3 -0
  643. data/spec/mongoid/contextual/mongo_spec.rb +81 -53
  644. data/spec/mongoid/contextual/none_spec.rb +3 -0
  645. data/spec/mongoid/copyable_spec.rb +3 -0
  646. data/spec/mongoid/copyable_spec_models.rb +3 -0
  647. data/spec/mongoid/criteria/findable_spec.rb +58 -0
  648. data/spec/mongoid/criteria/inspectable_spec.rb +3 -0
  649. data/spec/mongoid/criteria/marshalable_spec.rb +3 -0
  650. data/spec/mongoid/criteria/modifiable_spec.rb +7 -3
  651. data/spec/mongoid/criteria/options_spec.rb +3 -0
  652. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +3 -0
  653. data/spec/mongoid/criteria/queryable/expandable_spec.rb +135 -0
  654. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +3 -0
  655. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +3 -0
  656. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +3 -0
  657. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +3 -0
  658. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +3 -0
  659. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +36 -17
  660. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +3 -0
  661. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +3 -0
  662. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +3 -0
  663. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +3 -0
  664. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +3 -0
  665. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +3 -0
  666. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +3 -0
  667. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +3 -0
  668. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +10 -7
  669. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +3 -0
  670. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +4 -1
  671. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +3 -0
  672. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +24 -16
  673. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +3 -0
  674. data/spec/mongoid/criteria/queryable/key_spec.rb +3 -0
  675. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +48 -12
  676. data/spec/mongoid/criteria/queryable/optional_spec.rb +3 -0
  677. data/spec/mongoid/criteria/queryable/options_spec.rb +3 -0
  678. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +3 -0
  679. data/spec/mongoid/criteria/queryable/queryable_spec.rb +3 -0
  680. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +1348 -281
  681. data/spec/mongoid/criteria/queryable/selectable_spec.rb +996 -2159
  682. data/spec/mongoid/criteria/queryable/selector_spec.rb +3 -0
  683. data/spec/mongoid/criteria/queryable/smash_spec.rb +3 -0
  684. data/spec/mongoid/criteria/queryable/storable_spec.rb +190 -0
  685. data/spec/mongoid/criteria/scopable_spec.rb +3 -0
  686. data/spec/mongoid/criteria_spec.rb +73 -2
  687. data/spec/mongoid/document_persistence_context_spec.rb +33 -0
  688. data/spec/mongoid/document_query_spec.rb +39 -0
  689. data/spec/mongoid/document_spec.rb +3 -0
  690. data/spec/mongoid/equality_spec.rb +3 -0
  691. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +6 -3
  692. data/spec/mongoid/errors/callback_spec.rb +3 -0
  693. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -0
  694. data/spec/mongoid/errors/document_not_destroyed_spec.rb +3 -0
  695. data/spec/mongoid/errors/document_not_found_spec.rb +3 -0
  696. data/spec/mongoid/errors/eager_load_spec.rb +3 -0
  697. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -0
  698. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -0
  699. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -0
  700. data/spec/mongoid/errors/invalid_field_spec.rb +3 -0
  701. data/spec/mongoid/errors/invalid_find_spec.rb +3 -0
  702. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -0
  703. data/spec/mongoid/errors/invalid_index_spec.rb +3 -0
  704. data/spec/mongoid/errors/invalid_options_spec.rb +5 -2
  705. data/spec/mongoid/errors/invalid_path_spec.rb +3 -0
  706. data/spec/mongoid/errors/invalid_relation_spec.rb +5 -2
  707. data/spec/mongoid/errors/invalid_scope_spec.rb +3 -0
  708. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -0
  709. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -0
  710. data/spec/mongoid/errors/invalid_time_spec.rb +3 -0
  711. data/spec/mongoid/errors/inverse_not_found_spec.rb +4 -1
  712. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +3 -0
  713. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -0
  714. data/spec/mongoid/errors/mongoid_error_spec.rb +3 -0
  715. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +6 -3
  716. data/spec/mongoid/errors/no_client_config_spec.rb +3 -0
  717. data/spec/mongoid/errors/no_client_database_spec.rb +3 -0
  718. data/spec/mongoid/errors/no_client_hosts_spec.rb +3 -0
  719. data/spec/mongoid/errors/no_clients_config_spec.rb +3 -0
  720. data/spec/mongoid/errors/no_environment_spec.rb +3 -0
  721. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -0
  722. data/spec/mongoid/errors/no_metadata_spec.rb +5 -2
  723. data/spec/mongoid/errors/no_parent_spec.rb +4 -1
  724. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -0
  725. data/spec/mongoid/errors/readonly_document_spec.rb +3 -0
  726. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -0
  727. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -0
  728. data/spec/mongoid/errors/unknown_attribute_spec.rb +3 -0
  729. data/spec/mongoid/errors/unsaved_document_spec.rb +4 -1
  730. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -0
  731. data/spec/mongoid/errors/validations_spec.rb +3 -0
  732. data/spec/mongoid/extensions/array_spec.rb +26 -43
  733. data/spec/mongoid/extensions/big_decimal_spec.rb +3 -0
  734. data/spec/mongoid/extensions/binary_spec.rb +3 -0
  735. data/spec/mongoid/extensions/boolean_spec.rb +3 -0
  736. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +336 -0
  737. data/spec/mongoid/extensions/date_spec.rb +9 -160
  738. data/spec/mongoid/extensions/date_time_spec.rb +18 -60
  739. data/spec/mongoid/extensions/decimal128_spec.rb +3 -0
  740. data/spec/mongoid/extensions/false_class_spec.rb +3 -0
  741. data/spec/mongoid/extensions/float_spec.rb +18 -3
  742. data/spec/mongoid/extensions/hash_spec.rb +106 -0
  743. data/spec/mongoid/extensions/integer_spec.rb +15 -2
  744. data/spec/mongoid/extensions/module_spec.rb +3 -0
  745. data/spec/mongoid/extensions/nil_class_spec.rb +3 -0
  746. data/spec/mongoid/extensions/object_id_spec.rb +3 -0
  747. data/spec/mongoid/extensions/object_spec.rb +14 -24
  748. data/spec/mongoid/extensions/range_spec.rb +3 -0
  749. data/spec/mongoid/extensions/regexp_spec.rb +3 -0
  750. data/spec/mongoid/extensions/set_spec.rb +3 -0
  751. data/spec/mongoid/extensions/string_spec.rb +60 -26
  752. data/spec/mongoid/extensions/symbol_spec.rb +3 -0
  753. data/spec/mongoid/extensions/time_spec.rb +30 -0
  754. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -0
  755. data/spec/mongoid/extensions/true_class_spec.rb +3 -0
  756. data/spec/mongoid/extensions_spec.rb +3 -0
  757. data/spec/mongoid/factory_spec.rb +27 -0
  758. data/spec/mongoid/fields/foreign_key_spec.rb +3 -0
  759. data/spec/mongoid/fields/localized_spec.rb +3 -0
  760. data/spec/mongoid/fields/standard_spec.rb +3 -0
  761. data/spec/mongoid/fields_spec.rb +18 -0
  762. data/spec/mongoid/findable_spec.rb +3 -0
  763. data/spec/mongoid/indexable/specification_spec.rb +3 -0
  764. data/spec/mongoid/indexable_spec.rb +9 -4
  765. data/spec/mongoid/inspectable_spec.rb +3 -0
  766. data/spec/mongoid/interceptable_spec.rb +65 -0
  767. data/spec/mongoid/interceptable_spec_models.rb +76 -0
  768. data/spec/mongoid/loggable_spec.rb +3 -0
  769. data/spec/mongoid/matchable/all_spec.rb +3 -0
  770. data/spec/mongoid/matchable/and_spec.rb +3 -0
  771. data/spec/mongoid/matchable/default_spec.rb +4 -1
  772. data/spec/mongoid/matchable/elem_match_spec.rb +3 -0
  773. data/spec/mongoid/matchable/eq_spec.rb +1 -0
  774. data/spec/mongoid/matchable/exists_spec.rb +3 -0
  775. data/spec/mongoid/matchable/gt_spec.rb +3 -0
  776. data/spec/mongoid/matchable/gte_spec.rb +3 -0
  777. data/spec/mongoid/matchable/in_spec.rb +3 -0
  778. data/spec/mongoid/matchable/lt_spec.rb +3 -0
  779. data/spec/mongoid/matchable/lte_spec.rb +3 -0
  780. data/spec/mongoid/matchable/ne_spec.rb +3 -0
  781. data/spec/mongoid/matchable/nin_spec.rb +3 -0
  782. data/spec/mongoid/matchable/nor_spec.rb +1 -0
  783. data/spec/mongoid/matchable/or_spec.rb +3 -0
  784. data/spec/mongoid/matchable/regexp_spec.rb +5 -2
  785. data/spec/mongoid/matchable/size_spec.rb +3 -0
  786. data/spec/mongoid/matchable_spec.rb +5 -2
  787. data/spec/mongoid/persistable/creatable_spec.rb +3 -0
  788. data/spec/mongoid/persistable/deletable_spec.rb +3 -0
  789. data/spec/mongoid/persistable/destroyable_spec.rb +3 -0
  790. data/spec/mongoid/persistable/incrementable_spec.rb +17 -0
  791. data/spec/mongoid/persistable/logical_spec.rb +17 -0
  792. data/spec/mongoid/persistable/poppable_spec.rb +17 -0
  793. data/spec/mongoid/persistable/pullable_spec.rb +31 -0
  794. data/spec/mongoid/persistable/pushable_spec.rb +86 -1
  795. data/spec/mongoid/persistable/renamable_spec.rb +17 -0
  796. data/spec/mongoid/persistable/savable_spec.rb +3 -0
  797. data/spec/mongoid/persistable/settable_spec.rb +17 -0
  798. data/spec/mongoid/persistable/unsettable_spec.rb +17 -0
  799. data/spec/mongoid/persistable/updatable_spec.rb +3 -0
  800. data/spec/mongoid/persistable/upsertable_spec.rb +3 -0
  801. data/spec/mongoid/persistable_spec.rb +85 -8
  802. data/spec/mongoid/persistence_context_spec.rb +3 -0
  803. data/spec/mongoid/positional_spec.rb +3 -0
  804. data/spec/mongoid/query_cache_middleware_spec.rb +48 -0
  805. data/spec/mongoid/query_cache_spec.rb +5 -45
  806. data/spec/mongoid/relations/proxy_spec.rb +4 -1
  807. data/spec/mongoid/reloadable_spec.rb +3 -0
  808. data/spec/mongoid/scopable_spec.rb +5 -1
  809. data/spec/mongoid/selectable_spec.rb +3 -0
  810. data/spec/mongoid/serializable_spec.rb +132 -18
  811. data/spec/mongoid/shardable_models.rb +61 -0
  812. data/spec/mongoid/shardable_spec.rb +72 -16
  813. data/spec/mongoid/stateful_spec.rb +3 -0
  814. data/spec/mongoid/tasks/database_rake_spec.rb +16 -13
  815. data/spec/mongoid/tasks/database_spec.rb +4 -1
  816. data/spec/mongoid/threaded_spec.rb +3 -0
  817. data/spec/mongoid/timestamps/created/short_spec.rb +3 -0
  818. data/spec/mongoid/timestamps/created_spec.rb +3 -0
  819. data/spec/mongoid/timestamps/timeless_spec.rb +3 -0
  820. data/spec/mongoid/timestamps/updated/short_spec.rb +3 -0
  821. data/spec/mongoid/timestamps/updated_spec.rb +3 -0
  822. data/spec/mongoid/timestamps_spec.rb +3 -0
  823. data/spec/mongoid/touchable_spec.rb +49 -3
  824. data/spec/mongoid/traversable_spec.rb +3 -0
  825. data/spec/mongoid/validatable/associated_spec.rb +3 -0
  826. data/spec/mongoid/validatable/format_spec.rb +3 -0
  827. data/spec/mongoid/validatable/length_spec.rb +3 -0
  828. data/spec/mongoid/validatable/numericality_spec.rb +3 -0
  829. data/spec/mongoid/validatable/presence_spec.rb +3 -0
  830. data/spec/mongoid/validatable/uniqueness_spec.rb +3 -0
  831. data/spec/mongoid/validatable_spec.rb +3 -0
  832. data/spec/mongoid_spec.rb +3 -0
  833. data/spec/rails/controller_extension/controller_runtime_spec.rb +4 -1
  834. data/spec/rails/mongoid_spec.rb +5 -2
  835. data/spec/spec_helper.rb +21 -44
  836. data/spec/support/authorization.rb +3 -0
  837. data/spec/support/child_process_helper.rb +76 -0
  838. data/spec/support/cluster_config.rb +3 -3
  839. data/spec/support/constraints.rb +185 -30
  840. data/spec/support/expectations.rb +6 -1
  841. data/spec/support/helpers.rb +11 -0
  842. data/spec/support/lite_constraints.rb +22 -0
  843. data/spec/support/macros.rb +1 -0
  844. data/spec/support/shared/time.rb +54 -0
  845. data/spec/support/spec_config.rb +15 -4
  846. metadata +544 -472
  847. metadata.gz.sig +0 -0
  848. data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
  849. data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  class Criteria
4
6
  module Queryable
@@ -92,12 +94,43 @@ module Mongoid
92
94
  # @return [ Array<Hash> ] The serialized values.
93
95
  #
94
96
  # @since 1.0.0
95
- def evolve_multi(value)
96
- value.map do |val|
97
- Hash[val.map do |key, _value|
98
- _value = evolve_multi(_value) if multi_selection?(key)
97
+ def evolve_multi(specs)
98
+ unless specs.is_a?(Array)
99
+ raise ArgumentError, "specs is not an array: #{specs.inspect}"
100
+ end
101
+ specs.map do |spec|
102
+ Hash[spec.map do |key, value|
103
+ # If an application nests conditionals, e.g.
104
+ # {'$or' => [{'$or' => {...}}]},
105
+ # when evolve_multi is called for the top level hash,
106
+ # this call recursively transforms the bottom level $or.
107
+ if multi_selection?(key)
108
+ value = evolve_multi(value)
109
+ end
110
+
111
+ # storage_pair handles field aliases but not localization for
112
+ # some reason, although per its documentation Smash supposedly
113
+ # owns both.
99
114
  name, serializer = storage_pair(key)
100
- [ localized_key(name, serializer), evolve(serializer, _value) ]
115
+ final_key = localized_key(name, serializer)
116
+ # This performs type conversions on the value and transformations
117
+ # that depend on the type of the field that the value is stored
118
+ # in, but not transformations that have to do with query shape.
119
+ evolved_value = evolve(serializer, value)
120
+
121
+ # This builds a query shape around the value, when the query
122
+ # involves complex keys. For example, {:foo.lt => 5} produces
123
+ # {'foo' => {'$lt' => 5}}. This step should be done after all
124
+ # value-based processing is complete.
125
+ if key.is_a?(Key)
126
+ if serializer && evolved_value != value
127
+ raise NotImplementedError, "This method is not prepared to handle key being a Key and serializer being not nil"
128
+ end
129
+
130
+ evolved_value = key.transform_value(evolved_value)
131
+ end
132
+
133
+ [ final_key, evolved_value ]
101
134
  end]
102
135
  end.uniq
103
136
  end
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  class Criteria
4
6
  module Queryable
@@ -0,0 +1,233 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ module Mongoid
5
+ class Criteria
6
+ module Queryable
7
+ # This module encapsulates methods that write query expressions into
8
+ # the Criteria's selector.
9
+ #
10
+ # The query expressions must have already been expanded as necessary.
11
+ # The methods of this module do not perform processing on expression
12
+ # values.
13
+ #
14
+ # Methods in this module do not handle negation - if negation is needed,
15
+ # it must have already been handled upstream of these methods.
16
+ #
17
+ # @api private
18
+ module Storable
19
+
20
+ # Adds a field expression to the query.
21
+ #
22
+ # +field+ must be a field name, and it must be a string. The upstream
23
+ # code must have converted other field/key types to the simple string
24
+ # form by the time this method is invoked.
25
+ #
26
+ # +value+ can be of any type, it is written into the selector unchanged.
27
+ #
28
+ # This method performs no processing on the provided field value.
29
+ #
30
+ # Mutates the receiver.
31
+ #
32
+ # @param [ String ] field The field name.
33
+ # @param [ Object ] value The field value.
34
+ #
35
+ # @return [ Storable ] self.
36
+ def add_field_expression(field, value)
37
+ unless field.is_a?(String)
38
+ raise ArgumentError, "Field must be a string: #{field}"
39
+ end
40
+
41
+ if field[0] == ?$
42
+ raise ArgumentError, "Field cannot be an operator (i.e. begin with $): #{field}"
43
+ end
44
+
45
+ if selector[field]
46
+ # We already have a restriction by the field we are trying
47
+ # to restrict, combine the restrictions.
48
+ if value.is_a?(Hash) && selector[field].is_a?(Hash) &&
49
+ value.keys.all? { |key|
50
+ key_s = key.to_s
51
+ key_s[0] == ?$ && !selector[field].key?(key_s)
52
+ }
53
+ then
54
+ # Multiple operators can be combined on the same field by
55
+ # adding them to the existing hash.
56
+ new_value = selector[field].merge(value)
57
+ selector.store(field, new_value)
58
+ else
59
+ add_operator_expression('$and', [{field => value}])
60
+ end
61
+ else
62
+ selector.store(field, value)
63
+ end
64
+
65
+ self
66
+ end
67
+
68
+ # Adds a logical operator expression to the selector.
69
+ #
70
+ # This method only handles logical operators ($and, $nor and $or).
71
+ # It raises ArgumentError if called with another operator. Note that
72
+ # in MQL, $not is a field-level operator and not a query-level one,
73
+ # and therefore $not is not handled by this method.
74
+ #
75
+ # This method takes the operator and the operator value expression
76
+ # separately for callers' convenience. It can be considered to
77
+ # handle storing the hash `{operator => op_expr}`.
78
+ #
79
+ # If the selector consists of a single condition which is the specified
80
+ # operator (on the top level), the new condition given in op_expr is
81
+ # added to the existing conditions for the specified operator.
82
+ # For example, if the selector is currently:
83
+ #
84
+ # {'$or' => [{'hello' => 'world'}]}
85
+ #
86
+ # ... and operator is '$or' and op_expr is `[{'test' => 123'}]`,
87
+ # the resulting selector will be:
88
+ #
89
+ # {'$or' => [{'hello' => 'world'}, {'test' => 123}]}
90
+ #
91
+ # This method always adds the new conditions as additional requirements;
92
+ # in other words, it does not implement the ActiveRecord or/nor behavior
93
+ # where the receiver becomes one of the operands. It is expected that
94
+ # code upstream of this method implements such behavior.
95
+ #
96
+ # This method does not simplify values (i.e. if the selector is
97
+ # currently empty and operator is $and, op_expr is written to the
98
+ # selector with $and even if the $and can in principle be elided).
99
+ # Such simplification is also expected to have already been performed
100
+ # by the upstream code.
101
+ #
102
+ # This method mutates the receiver.
103
+ #
104
+ # @param [ String ] operator The operator to add.
105
+ # @param [ Array<Hash> ] op_expr Operator value to add.
106
+ #
107
+ # @return [ Storable ] self.
108
+ def add_logical_operator_expression(operator, op_expr)
109
+ unless operator.is_a?(String)
110
+ raise ArgumentError, "Operator must be a string: #{operator}"
111
+ end
112
+
113
+ unless %w($and $nor $or).include?(operator)
114
+ raise ArgumentError, "This method only handles logical operators ($and, $nor, $or). Operator given: #{operator}"
115
+ end
116
+
117
+ unless op_expr.is_a?(Array)
118
+ raise ArgumentError, "Operator value expression must be an array: #{op_expr}"
119
+ end
120
+
121
+ if selector.length == 1 && selector.keys.first == operator
122
+ new_value = selector.values.first + op_expr
123
+ selector.store(operator, new_value)
124
+ elsif operator == '$and' || selector.empty?
125
+ # $and can always be added to top level and it will be combined
126
+ # with whatever other conditions exist.
127
+ selector.store(operator, op_expr)
128
+ else
129
+ # Other operators need to be added separately
130
+ if selector[operator]
131
+ add_logical_operator_expression('$and', [operator => op_expr])
132
+ else
133
+ selector.store(operator, op_expr)
134
+ end
135
+ end
136
+
137
+ self
138
+ end
139
+
140
+ # Adds an operator expression to the selector.
141
+ #
142
+ # This method takes the operator and the operator value expression
143
+ # separately for callers' convenience. It can be considered to
144
+ # handle storing the hash `{operator => op_expr}`.
145
+ #
146
+ # The operator value can be of any type.
147
+ #
148
+ # If the selector already has the specified operator in it (on the
149
+ # top level), the new condition given in op_expr is added to the
150
+ # existing conditions for the specified operator. This is
151
+ # straightforward for $and; for other logical operators, the behavior
152
+ # of this method is to add the new conditions to the existing operator.
153
+ # For example, if the selector is currently:
154
+ #
155
+ # {'foo' => 'bar', '$or' => [{'hello' => 'world'}]}
156
+ #
157
+ # ... and operator is '$or' and op_expr is `{'test' => 123'}`,
158
+ # the resulting selector will be:
159
+ #
160
+ # {'foo' => 'bar', '$or' => [{'hello' => 'world'}, {'test' => 123}]}
161
+ #
162
+ # This does not implement an OR between the existing selector and the
163
+ # new operator expression - handling this is the job of upstream
164
+ # methods. This method simply stores op_expr into the selector on the
165
+ # assumption that the existing selector is the correct left hand side
166
+ # of the operation already.
167
+ #
168
+ # For non-logical query-level operators like $where and $text, if
169
+ # there already is a top-level operator with the same name, the
170
+ # op_expr is added to the selector via a top-level $and operator,
171
+ # thus producing a selector having both operator values.
172
+ #
173
+ # This method does not simplify values (i.e. if the selector is
174
+ # currently empty and operator is $and, op_expr is written to the
175
+ # selector with $and even if the $and can in principle be elided).
176
+ #
177
+ # This method mutates the receiver.
178
+ #
179
+ # @param [ String ] operator The operator to add.
180
+ # @param [ Object ] op_expr Operator value to add.
181
+ #
182
+ # @return [ Storable ] self.
183
+ def add_operator_expression(operator, op_expr)
184
+ unless operator.is_a?(String)
185
+ raise ArgumentError, "Operator must be a string: #{operator}"
186
+ end
187
+
188
+ unless operator[0] == ?$
189
+ raise ArgumentError, "Operator must begin with $: #{operator}"
190
+ end
191
+
192
+ if %w($and $nor $or).include?(operator)
193
+ return add_logical_operator_expression(operator, op_expr)
194
+ end
195
+
196
+ # For other operators, if the operator already exists in the
197
+ # query, add the new condition with $and, otherwise add the
198
+ # new condition to the top level.
199
+ if selector[operator]
200
+ add_logical_operator_expression('$and', [{operator => op_expr}])
201
+ else
202
+ selector.store(operator, op_expr)
203
+ end
204
+
205
+ self
206
+ end
207
+
208
+ # Adds an arbitrary expression to the query.
209
+ #
210
+ # Field can either be a field name or an operator.
211
+ #
212
+ # Mutates the receiver.
213
+ #
214
+ # @param [ String ] field Field name or operator name.
215
+ # @param [ Object ] value Field value or operator expression.
216
+ #
217
+ # @return [ Storable ] self.
218
+ def add_one_expression(field, value)
219
+ unless field.is_a?(String)
220
+ raise ArgumentError, "Field must be a string: #{field}"
221
+ end
222
+
223
+ if field[0] == ?$
224
+ add_operator_expression(field, value)
225
+ else
226
+ add_field_expression(field, value)
227
+ end
228
+ end
229
+
230
+ end
231
+ end
232
+ end
233
+ end
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  class Criteria
4
6
  module Scopable
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  require "mongoid/positional"
3
5
  require "mongoid/evolvable"
4
6
  require "mongoid/extensions"
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
 
4
- # This module contains the behaviour of Mongoid's clone/dup of documents.
6
+ # This module contains the behavior of Mongoid's clone/dup of documents.
5
7
  module Equality
6
8
 
7
9
  # Default comparison is via the string version of the id.
@@ -63,4 +65,3 @@ module Mongoid
63
65
  end
64
66
  end
65
67
  end
66
-
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  require "mongoid/errors/mongoid_error"
3
5
  require "mongoid/errors/ambiguous_relationship"
4
6
  require "mongoid/errors/callback"
7
+ require "mongoid/errors/criteria_argument_required"
5
8
  require "mongoid/errors/document_not_destroyed"
6
9
  require "mongoid/errors/document_not_found"
7
10
  require "mongoid/errors/eager_load"
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Errors
4
6
 
5
- # This error is raised in case of an ambigous relationship.
7
+ # This error is raised in case of an ambigous association.
6
8
  #
7
- # @example An ambigous relationship.
9
+ # @example An ambigous association.
8
10
  # class Person
9
11
  # include Mongoid::Document
10
12
  #
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Errors
4
6
 
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ module Mongoid
5
+ module Errors
6
+
7
+ # This error is raised when a method on Criteria is given a nil argument.
8
+ class CriteriaArgumentRequired < MongoidError
9
+
10
+ # Creates the new exception instance.
11
+ #
12
+ # @api private
13
+ def initialize(query_method)
14
+ super(compose_message("criteria_argument_required",
15
+ query_method: query_method))
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Errors
4
6
 
@@ -12,7 +14,7 @@ module Mongoid
12
14
  # Callbacks.new(Post, :create!)
13
15
  #
14
16
  # @param [ Class ] document
15
- # @param [ Symbol ] relation
17
+ # @param [ Symbol ] association
16
18
  #
17
19
  # @since 3.0.0
18
20
  def initialize(document, relation)
@@ -26,4 +28,3 @@ module Mongoid
26
28
  end
27
29
  end
28
30
  end
29
-
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Errors
4
6
 
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Errors
4
6
 
@@ -1,9 +1,13 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Errors
4
6
 
5
7
  # This error is raised when attempting to eager load a many to many
6
- # relation.
8
+ # association.
9
+ #
10
+ # @deprecated No longer used by Mongoid per MONGOID-4841.
7
11
  class EagerLoad < MongoidError
8
12
 
9
13
  # Create the new eager load error.
@@ -11,7 +15,7 @@ module Mongoid
11
15
  # @example Create the new eager load error.
12
16
  # EagerLoad.new(:preferences)
13
17
  #
14
- # @param [ Symbol ] name The name of the relation.
18
+ # @param [ Symbol ] name The name of the association.
15
19
  #
16
20
  # @since 2.2.0
17
21
  def initialize(name)
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Errors
4
6