mongoid_rails4 4.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 (659) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +3213 -0
  3. data/LICENSE +20 -0
  4. data/README.md +62 -0
  5. data/Rakefile +35 -0
  6. data/lib/config/locales/en.yml +448 -0
  7. data/lib/mongoid.rb +104 -0
  8. data/lib/mongoid/atomic.rb +384 -0
  9. data/lib/mongoid/atomic/modifiers.rb +317 -0
  10. data/lib/mongoid/atomic/paths.rb +3 -0
  11. data/lib/mongoid/atomic/paths/embedded.rb +28 -0
  12. data/lib/mongoid/atomic/paths/embedded/many.rb +44 -0
  13. data/lib/mongoid/atomic/paths/embedded/one.rb +43 -0
  14. data/lib/mongoid/atomic/paths/root.rb +39 -0
  15. data/lib/mongoid/attributes.rb +284 -0
  16. data/lib/mongoid/attributes/dynamic.rb +154 -0
  17. data/lib/mongoid/attributes/nested.rb +82 -0
  18. data/lib/mongoid/attributes/processing.rb +147 -0
  19. data/lib/mongoid/attributes/readonly.rb +56 -0
  20. data/lib/mongoid/changeable.rb +379 -0
  21. data/lib/mongoid/composable.rb +104 -0
  22. data/lib/mongoid/config.rb +263 -0
  23. data/lib/mongoid/config/environment.rb +44 -0
  24. data/lib/mongoid/config/options.rb +74 -0
  25. data/lib/mongoid/config/validators.rb +3 -0
  26. data/lib/mongoid/config/validators/option.rb +25 -0
  27. data/lib/mongoid/config/validators/session.rb +140 -0
  28. data/lib/mongoid/contextual.rb +54 -0
  29. data/lib/mongoid/contextual/aggregable/memory.rb +109 -0
  30. data/lib/mongoid/contextual/aggregable/mongo.rb +147 -0
  31. data/lib/mongoid/contextual/atomic.rb +180 -0
  32. data/lib/mongoid/contextual/command.rb +61 -0
  33. data/lib/mongoid/contextual/eager.rb +158 -0
  34. data/lib/mongoid/contextual/find_and_modify.rb +69 -0
  35. data/lib/mongoid/contextual/geo_near.rb +238 -0
  36. data/lib/mongoid/contextual/map_reduce.rb +324 -0
  37. data/lib/mongoid/contextual/memory.rb +440 -0
  38. data/lib/mongoid/contextual/mongo.rb +676 -0
  39. data/lib/mongoid/contextual/queryable.rb +25 -0
  40. data/lib/mongoid/contextual/text_search.rb +180 -0
  41. data/lib/mongoid/copyable.rb +67 -0
  42. data/lib/mongoid/criteria.rb +562 -0
  43. data/lib/mongoid/criteria/findable.rb +179 -0
  44. data/lib/mongoid/criteria/inspectable.rb +25 -0
  45. data/lib/mongoid/criteria/marshalable.rb +50 -0
  46. data/lib/mongoid/criteria/modifiable.rb +189 -0
  47. data/lib/mongoid/criteria/scopable.rb +158 -0
  48. data/lib/mongoid/document.rb +361 -0
  49. data/lib/mongoid/equality.rb +66 -0
  50. data/lib/mongoid/errors.rb +40 -0
  51. data/lib/mongoid/errors/ambiguous_relationship.rb +51 -0
  52. data/lib/mongoid/errors/callback.rb +25 -0
  53. data/lib/mongoid/errors/delete_restriction.rb +29 -0
  54. data/lib/mongoid/errors/document_not_found.rb +111 -0
  55. data/lib/mongoid/errors/eager_load.rb +22 -0
  56. data/lib/mongoid/errors/invalid_collection.rb +18 -0
  57. data/lib/mongoid/errors/invalid_config_option.rb +27 -0
  58. data/lib/mongoid/errors/invalid_field.rb +64 -0
  59. data/lib/mongoid/errors/invalid_field_option.rb +35 -0
  60. data/lib/mongoid/errors/invalid_find.rb +19 -0
  61. data/lib/mongoid/errors/invalid_includes.rb +32 -0
  62. data/lib/mongoid/errors/invalid_index.rb +28 -0
  63. data/lib/mongoid/errors/invalid_options.rb +28 -0
  64. data/lib/mongoid/errors/invalid_path.rb +21 -0
  65. data/lib/mongoid/errors/invalid_scope.rb +24 -0
  66. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +38 -0
  67. data/lib/mongoid/errors/invalid_storage_options.rb +27 -0
  68. data/lib/mongoid/errors/invalid_time.rb +22 -0
  69. data/lib/mongoid/errors/inverse_not_found.rb +29 -0
  70. data/lib/mongoid/errors/mixed_relations.rb +32 -0
  71. data/lib/mongoid/errors/mixed_session_configuration.rb +28 -0
  72. data/lib/mongoid/errors/mongoid_error.rb +92 -0
  73. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +28 -0
  74. data/lib/mongoid/errors/no_default_session.rb +23 -0
  75. data/lib/mongoid/errors/no_environment.rb +19 -0
  76. data/lib/mongoid/errors/no_map_reduce_output.rb +24 -0
  77. data/lib/mongoid/errors/no_metadata.rb +21 -0
  78. data/lib/mongoid/errors/no_parent.rb +24 -0
  79. data/lib/mongoid/errors/no_session_config.rb +22 -0
  80. data/lib/mongoid/errors/no_session_database.rb +27 -0
  81. data/lib/mongoid/errors/no_session_hosts.rb +27 -0
  82. data/lib/mongoid/errors/no_sessions_config.rb +20 -0
  83. data/lib/mongoid/errors/readonly_attribute.rb +25 -0
  84. data/lib/mongoid/errors/scope_overwrite.rb +21 -0
  85. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +20 -0
  86. data/lib/mongoid/errors/unknown_attribute.rb +25 -0
  87. data/lib/mongoid/errors/unsaved_document.rb +19 -0
  88. data/lib/mongoid/errors/unsupported_javascript.rb +27 -0
  89. data/lib/mongoid/errors/validations.rb +29 -0
  90. data/lib/mongoid/evolvable.rb +19 -0
  91. data/lib/mongoid/extensions.rb +35 -0
  92. data/lib/mongoid/extensions/array.rb +180 -0
  93. data/lib/mongoid/extensions/big_decimal.rb +69 -0
  94. data/lib/mongoid/extensions/boolean.rb +21 -0
  95. data/lib/mongoid/extensions/date.rb +77 -0
  96. data/lib/mongoid/extensions/date_time.rb +73 -0
  97. data/lib/mongoid/extensions/false_class.rb +38 -0
  98. data/lib/mongoid/extensions/float.rb +56 -0
  99. data/lib/mongoid/extensions/hash.rb +209 -0
  100. data/lib/mongoid/extensions/integer.rb +67 -0
  101. data/lib/mongoid/extensions/module.rb +28 -0
  102. data/lib/mongoid/extensions/nil_class.rb +33 -0
  103. data/lib/mongoid/extensions/object.rb +274 -0
  104. data/lib/mongoid/extensions/object_id.rb +54 -0
  105. data/lib/mongoid/extensions/range.rb +79 -0
  106. data/lib/mongoid/extensions/regexp.rb +27 -0
  107. data/lib/mongoid/extensions/set.rb +55 -0
  108. data/lib/mongoid/extensions/string.rb +199 -0
  109. data/lib/mongoid/extensions/symbol.rb +54 -0
  110. data/lib/mongoid/extensions/time.rb +88 -0
  111. data/lib/mongoid/extensions/time_with_zone.rb +56 -0
  112. data/lib/mongoid/extensions/true_class.rb +38 -0
  113. data/lib/mongoid/factory.rb +46 -0
  114. data/lib/mongoid/fields.rb +542 -0
  115. data/lib/mongoid/fields/foreign_key.rb +174 -0
  116. data/lib/mongoid/fields/localized.rb +73 -0
  117. data/lib/mongoid/fields/standard.rb +273 -0
  118. data/lib/mongoid/fields/validators.rb +2 -0
  119. data/lib/mongoid/fields/validators/macro.rb +92 -0
  120. data/lib/mongoid/findable.rb +133 -0
  121. data/lib/mongoid/identity_map.rb +163 -0
  122. data/lib/mongoid/indexable.rb +147 -0
  123. data/lib/mongoid/indexable/specification.rb +115 -0
  124. data/lib/mongoid/indexable/validators/options.rb +103 -0
  125. data/lib/mongoid/inspectable.rb +59 -0
  126. data/lib/mongoid/interceptable.rb +265 -0
  127. data/lib/mongoid/loggable.rb +69 -0
  128. data/lib/mongoid/matchable.rb +152 -0
  129. data/lib/mongoid/matchable/all.rb +27 -0
  130. data/lib/mongoid/matchable/and.rb +30 -0
  131. data/lib/mongoid/matchable/default.rb +72 -0
  132. data/lib/mongoid/matchable/exists.rb +23 -0
  133. data/lib/mongoid/matchable/gt.rb +21 -0
  134. data/lib/mongoid/matchable/gte.rb +21 -0
  135. data/lib/mongoid/matchable/in.rb +24 -0
  136. data/lib/mongoid/matchable/lt.rb +21 -0
  137. data/lib/mongoid/matchable/lte.rb +21 -0
  138. data/lib/mongoid/matchable/ne.rb +21 -0
  139. data/lib/mongoid/matchable/nin.rb +21 -0
  140. data/lib/mongoid/matchable/or.rb +33 -0
  141. data/lib/mongoid/matchable/size.rb +21 -0
  142. data/lib/mongoid/persistable.rb +207 -0
  143. data/lib/mongoid/persistable/creatable.rb +189 -0
  144. data/lib/mongoid/persistable/deletable.rb +149 -0
  145. data/lib/mongoid/persistable/destroyable.rb +55 -0
  146. data/lib/mongoid/persistable/incrementable.rb +36 -0
  147. data/lib/mongoid/persistable/logical.rb +38 -0
  148. data/lib/mongoid/persistable/poppable.rb +39 -0
  149. data/lib/mongoid/persistable/pullable.rb +55 -0
  150. data/lib/mongoid/persistable/pushable.rb +62 -0
  151. data/lib/mongoid/persistable/renamable.rb +35 -0
  152. data/lib/mongoid/persistable/savable.rb +52 -0
  153. data/lib/mongoid/persistable/settable.rb +33 -0
  154. data/lib/mongoid/persistable/unsettable.rb +36 -0
  155. data/lib/mongoid/persistable/updatable.rb +151 -0
  156. data/lib/mongoid/persistable/upsertable.rb +55 -0
  157. data/lib/mongoid/positional.rb +71 -0
  158. data/lib/mongoid/railtie.rb +156 -0
  159. data/lib/mongoid/railties/database.rake +97 -0
  160. data/lib/mongoid/railties/document.rb +12 -0
  161. data/lib/mongoid/relations.rb +162 -0
  162. data/lib/mongoid/relations/accessors.rb +299 -0
  163. data/lib/mongoid/relations/auto_save.rb +106 -0
  164. data/lib/mongoid/relations/binding.rb +218 -0
  165. data/lib/mongoid/relations/bindings.rb +9 -0
  166. data/lib/mongoid/relations/bindings/embedded/in.rb +63 -0
  167. data/lib/mongoid/relations/bindings/embedded/many.rb +50 -0
  168. data/lib/mongoid/relations/bindings/embedded/one.rb +55 -0
  169. data/lib/mongoid/relations/bindings/referenced/in.rb +65 -0
  170. data/lib/mongoid/relations/bindings/referenced/many.rb +42 -0
  171. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +67 -0
  172. data/lib/mongoid/relations/bindings/referenced/one.rb +44 -0
  173. data/lib/mongoid/relations/builder.rb +57 -0
  174. data/lib/mongoid/relations/builders.rb +104 -0
  175. data/lib/mongoid/relations/builders/embedded/in.rb +29 -0
  176. data/lib/mongoid/relations/builders/embedded/many.rb +36 -0
  177. data/lib/mongoid/relations/builders/embedded/one.rb +30 -0
  178. data/lib/mongoid/relations/builders/nested_attributes/many.rb +174 -0
  179. data/lib/mongoid/relations/builders/nested_attributes/one.rb +126 -0
  180. data/lib/mongoid/relations/builders/referenced/in.rb +26 -0
  181. data/lib/mongoid/relations/builders/referenced/many.rb +27 -0
  182. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +40 -0
  183. data/lib/mongoid/relations/builders/referenced/one.rb +26 -0
  184. data/lib/mongoid/relations/cascading.rb +56 -0
  185. data/lib/mongoid/relations/cascading/delete.rb +44 -0
  186. data/lib/mongoid/relations/cascading/destroy.rb +43 -0
  187. data/lib/mongoid/relations/cascading/nullify.rb +35 -0
  188. data/lib/mongoid/relations/cascading/restrict.rb +39 -0
  189. data/lib/mongoid/relations/constraint.rb +49 -0
  190. data/lib/mongoid/relations/conversions.rb +34 -0
  191. data/lib/mongoid/relations/counter_cache.rb +105 -0
  192. data/lib/mongoid/relations/cyclic.rb +107 -0
  193. data/lib/mongoid/relations/embedded/batchable.rb +355 -0
  194. data/lib/mongoid/relations/embedded/in.rb +231 -0
  195. data/lib/mongoid/relations/embedded/many.rb +639 -0
  196. data/lib/mongoid/relations/embedded/one.rb +223 -0
  197. data/lib/mongoid/relations/macros.rb +356 -0
  198. data/lib/mongoid/relations/many.rb +208 -0
  199. data/lib/mongoid/relations/marshalable.rb +32 -0
  200. data/lib/mongoid/relations/metadata.rb +1174 -0
  201. data/lib/mongoid/relations/nested_builder.rb +74 -0
  202. data/lib/mongoid/relations/one.rb +48 -0
  203. data/lib/mongoid/relations/options.rb +48 -0
  204. data/lib/mongoid/relations/polymorphic.rb +39 -0
  205. data/lib/mongoid/relations/proxy.rb +270 -0
  206. data/lib/mongoid/relations/referenced/in.rb +297 -0
  207. data/lib/mongoid/relations/referenced/many.rb +787 -0
  208. data/lib/mongoid/relations/referenced/many_to_many.rb +486 -0
  209. data/lib/mongoid/relations/referenced/one.rb +290 -0
  210. data/lib/mongoid/relations/reflections.rb +62 -0
  211. data/lib/mongoid/relations/synchronization.rb +169 -0
  212. data/lib/mongoid/relations/targets.rb +2 -0
  213. data/lib/mongoid/relations/targets/enumerable.rb +473 -0
  214. data/lib/mongoid/relations/touchable.rb +94 -0
  215. data/lib/mongoid/reloadable.rb +95 -0
  216. data/lib/mongoid/scopable.rb +379 -0
  217. data/lib/mongoid/selectable.rb +59 -0
  218. data/lib/mongoid/serializable.rb +170 -0
  219. data/lib/mongoid/sessions.rb +330 -0
  220. data/lib/mongoid/sessions/factory.rb +129 -0
  221. data/lib/mongoid/sessions/mongo_uri.rb +93 -0
  222. data/lib/mongoid/sessions/options.rb +141 -0
  223. data/lib/mongoid/sessions/validators.rb +2 -0
  224. data/lib/mongoid/sessions/validators/storage.rb +49 -0
  225. data/lib/mongoid/shardable.rb +65 -0
  226. data/lib/mongoid/state.rb +97 -0
  227. data/lib/mongoid/threaded.rb +383 -0
  228. data/lib/mongoid/threaded/lifecycle.rb +164 -0
  229. data/lib/mongoid/timestamps.rb +15 -0
  230. data/lib/mongoid/timestamps/created.rb +30 -0
  231. data/lib/mongoid/timestamps/created/short.rb +19 -0
  232. data/lib/mongoid/timestamps/short.rb +10 -0
  233. data/lib/mongoid/timestamps/updated.rb +39 -0
  234. data/lib/mongoid/timestamps/updated/short.rb +19 -0
  235. data/lib/mongoid/traversable.rb +192 -0
  236. data/lib/mongoid/unit_of_work.rb +61 -0
  237. data/lib/mongoid/validatable.rb +180 -0
  238. data/lib/mongoid/validatable/associated.rb +48 -0
  239. data/lib/mongoid/validatable/format.rb +20 -0
  240. data/lib/mongoid/validatable/length.rb +20 -0
  241. data/lib/mongoid/validatable/localizable.rb +30 -0
  242. data/lib/mongoid/validatable/macros.rb +94 -0
  243. data/lib/mongoid/validatable/presence.rb +86 -0
  244. data/lib/mongoid/validatable/queryable.rb +30 -0
  245. data/lib/mongoid/validatable/uniqueness.rb +330 -0
  246. data/lib/mongoid/version.rb +4 -0
  247. data/lib/rack/mongoid.rb +2 -0
  248. data/lib/rack/mongoid/middleware/identity_map.rb +39 -0
  249. data/lib/rails/generators/mongoid/config/config_generator.rb +25 -0
  250. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +76 -0
  251. data/lib/rails/generators/mongoid/model/model_generator.rb +25 -0
  252. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +19 -0
  253. data/lib/rails/generators/mongoid/observer/observer_generator.rb +17 -0
  254. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +4 -0
  255. data/lib/rails/generators/mongoid_generator.rb +65 -0
  256. data/lib/rails/mongoid.rb +180 -0
  257. data/lib/support/ruby_version.rb +26 -0
  258. data/spec/app/models/account.rb +28 -0
  259. data/spec/app/models/acolyte.rb +17 -0
  260. data/spec/app/models/actor.rb +18 -0
  261. data/spec/app/models/actress.rb +2 -0
  262. data/spec/app/models/address.rb +77 -0
  263. data/spec/app/models/address_component.rb +5 -0
  264. data/spec/app/models/address_number.rb +6 -0
  265. data/spec/app/models/agency.rb +5 -0
  266. data/spec/app/models/agent.rb +12 -0
  267. data/spec/app/models/album.rb +14 -0
  268. data/spec/app/models/alert.rb +5 -0
  269. data/spec/app/models/animal.rb +25 -0
  270. data/spec/app/models/answer.rb +4 -0
  271. data/spec/app/models/appointment.rb +7 -0
  272. data/spec/app/models/article.rb +10 -0
  273. data/spec/app/models/artist.rb +66 -0
  274. data/spec/app/models/artwork.rb +4 -0
  275. data/spec/app/models/audio.rb +5 -0
  276. data/spec/app/models/augmentation.rb +11 -0
  277. data/spec/app/models/author.rb +4 -0
  278. data/spec/app/models/band.rb +26 -0
  279. data/spec/app/models/bar.rb +10 -0
  280. data/spec/app/models/basic.rb +6 -0
  281. data/spec/app/models/bed.rb +1 -0
  282. data/spec/app/models/big_palette.rb +2 -0
  283. data/spec/app/models/birthday.rb +13 -0
  284. data/spec/app/models/book.rb +13 -0
  285. data/spec/app/models/breed.rb +4 -0
  286. data/spec/app/models/browser.rb +6 -0
  287. data/spec/app/models/building.rb +5 -0
  288. data/spec/app/models/building_address.rb +5 -0
  289. data/spec/app/models/bus.rb +7 -0
  290. data/spec/app/models/business.rb +5 -0
  291. data/spec/app/models/callback_recorder.rb +25 -0
  292. data/spec/app/models/callback_test.rb +9 -0
  293. data/spec/app/models/canvas.rb +25 -0
  294. data/spec/app/models/car.rb +1 -0
  295. data/spec/app/models/cat.rb +8 -0
  296. data/spec/app/models/category.rb +8 -0
  297. data/spec/app/models/child.rb +4 -0
  298. data/spec/app/models/child_doc.rb +22 -0
  299. data/spec/app/models/church.rb +4 -0
  300. data/spec/app/models/circle.rb +3 -0
  301. data/spec/app/models/circuit.rb +4 -0
  302. data/spec/app/models/circus.rb +7 -0
  303. data/spec/app/models/code.rb +5 -0
  304. data/spec/app/models/comment.rb +16 -0
  305. data/spec/app/models/contractor.rb +5 -0
  306. data/spec/app/models/cookie.rb +6 -0
  307. data/spec/app/models/country_code.rb +8 -0
  308. data/spec/app/models/definition.rb +7 -0
  309. data/spec/app/models/description.rb +11 -0
  310. data/spec/app/models/dictionary.rb +10 -0
  311. data/spec/app/models/division.rb +10 -0
  312. data/spec/app/models/doctor.rb +12 -0
  313. data/spec/app/models/dog.rb +7 -0
  314. data/spec/app/models/dokument.rb +5 -0
  315. data/spec/app/models/dragon.rb +4 -0
  316. data/spec/app/models/driver.rb +7 -0
  317. data/spec/app/models/drug.rb +6 -0
  318. data/spec/app/models/dungeon.rb +4 -0
  319. data/spec/app/models/email.rb +6 -0
  320. data/spec/app/models/employer.rb +5 -0
  321. data/spec/app/models/entry.rb +6 -0
  322. data/spec/app/models/eraser.rb +1 -0
  323. data/spec/app/models/event.rb +22 -0
  324. data/spec/app/models/exhibition.rb +4 -0
  325. data/spec/app/models/exhibitor.rb +5 -0
  326. data/spec/app/models/eye.rb +9 -0
  327. data/spec/app/models/eye_bowl.rb +9 -0
  328. data/spec/app/models/face.rb +8 -0
  329. data/spec/app/models/favorite.rb +6 -0
  330. data/spec/app/models/filesystem.rb +5 -0
  331. data/spec/app/models/fire_hydrant.rb +6 -0
  332. data/spec/app/models/firefox.rb +4 -0
  333. data/spec/app/models/fish.rb +7 -0
  334. data/spec/app/models/folder.rb +7 -0
  335. data/spec/app/models/folder_item.rb +9 -0
  336. data/spec/app/models/fruits.rb +28 -0
  337. data/spec/app/models/game.rb +19 -0
  338. data/spec/app/models/ghost.rb +7 -0
  339. data/spec/app/models/home.rb +4 -0
  340. data/spec/app/models/house.rb +6 -0
  341. data/spec/app/models/html_writer.rb +3 -0
  342. data/spec/app/models/image.rb +22 -0
  343. data/spec/app/models/implant.rb +16 -0
  344. data/spec/app/models/item.rb +8 -0
  345. data/spec/app/models/jar.rb +7 -0
  346. data/spec/app/models/label.rb +40 -0
  347. data/spec/app/models/language.rb +5 -0
  348. data/spec/app/models/lat_lng.rb +15 -0
  349. data/spec/app/models/league.rb +11 -0
  350. data/spec/app/models/learner.rb +2 -0
  351. data/spec/app/models/line_item.rb +6 -0
  352. data/spec/app/models/location.rb +8 -0
  353. data/spec/app/models/login.rb +8 -0
  354. data/spec/app/models/manufacturer.rb +7 -0
  355. data/spec/app/models/meat.rb +4 -0
  356. data/spec/app/models/membership.rb +4 -0
  357. data/spec/app/models/mixed_drink.rb +4 -0
  358. data/spec/app/models/movie.rb +13 -0
  359. data/spec/app/models/my_hash.rb +2 -0
  360. data/spec/app/models/name.rb +23 -0
  361. data/spec/app/models/node.rb +5 -0
  362. data/spec/app/models/note.rb +12 -0
  363. data/spec/app/models/ordered_post.rb +6 -0
  364. data/spec/app/models/ordered_preference.rb +6 -0
  365. data/spec/app/models/oscar.rb +15 -0
  366. data/spec/app/models/override.rb +16 -0
  367. data/spec/app/models/ownable.rb +6 -0
  368. data/spec/app/models/owner.rb +6 -0
  369. data/spec/app/models/pack.rb +3 -0
  370. data/spec/app/models/page.rb +5 -0
  371. data/spec/app/models/page_question.rb +4 -0
  372. data/spec/app/models/palette.rb +7 -0
  373. data/spec/app/models/parent.rb +5 -0
  374. data/spec/app/models/parent_doc.rb +6 -0
  375. data/spec/app/models/passport.rb +5 -0
  376. data/spec/app/models/patient.rb +9 -0
  377. data/spec/app/models/pdf_writer.rb +3 -0
  378. data/spec/app/models/pencil.rb +1 -0
  379. data/spec/app/models/person.rb +205 -0
  380. data/spec/app/models/pet.rb +23 -0
  381. data/spec/app/models/pet_owner.rb +6 -0
  382. data/spec/app/models/phone.rb +11 -0
  383. data/spec/app/models/pizza.rb +7 -0
  384. data/spec/app/models/player.rb +35 -0
  385. data/spec/app/models/post.rb +44 -0
  386. data/spec/app/models/powerup.rb +11 -0
  387. data/spec/app/models/preference.rb +9 -0
  388. data/spec/app/models/princess.rb +8 -0
  389. data/spec/app/models/product.rb +15 -0
  390. data/spec/app/models/profile.rb +5 -0
  391. data/spec/app/models/pronunciation.rb +5 -0
  392. data/spec/app/models/purchase.rb +4 -0
  393. data/spec/app/models/question.rb +8 -0
  394. data/spec/app/models/quiz.rb +7 -0
  395. data/spec/app/models/rating.rb +8 -0
  396. data/spec/app/models/record.rb +46 -0
  397. data/spec/app/models/registry.rb +4 -0
  398. data/spec/app/models/role.rb +7 -0
  399. data/spec/app/models/root_category.rb +4 -0
  400. data/spec/app/models/sandwich.rb +4 -0
  401. data/spec/app/models/scheduler.rb +7 -0
  402. data/spec/app/models/seo.rb +7 -0
  403. data/spec/app/models/series.rb +4 -0
  404. data/spec/app/models/server.rb +13 -0
  405. data/spec/app/models/service.rb +22 -0
  406. data/spec/app/models/shape.rb +12 -0
  407. data/spec/app/models/shelf.rb +5 -0
  408. data/spec/app/models/shipping_container.rb +5 -0
  409. data/spec/app/models/shipping_pack.rb +3 -0
  410. data/spec/app/models/shop.rb +6 -0
  411. data/spec/app/models/short_agent.rb +4 -0
  412. data/spec/app/models/short_quiz.rb +5 -0
  413. data/spec/app/models/slave.rb +6 -0
  414. data/spec/app/models/song.rb +8 -0
  415. data/spec/app/models/sound.rb +5 -0
  416. data/spec/app/models/square.rb +4 -0
  417. data/spec/app/models/strategy.rb +3 -0
  418. data/spec/app/models/sub_item.rb +3 -0
  419. data/spec/app/models/subscription.rb +4 -0
  420. data/spec/app/models/survey.rb +5 -0
  421. data/spec/app/models/symptom.rb +6 -0
  422. data/spec/app/models/tag.rb +8 -0
  423. data/spec/app/models/target.rb +5 -0
  424. data/spec/app/models/template.rb +5 -0
  425. data/spec/app/models/thing.rb +9 -0
  426. data/spec/app/models/title.rb +3 -0
  427. data/spec/app/models/tool.rb +8 -0
  428. data/spec/app/models/topping.rb +5 -0
  429. data/spec/app/models/track.rb +38 -0
  430. data/spec/app/models/translation.rb +5 -0
  431. data/spec/app/models/tree.rb +9 -0
  432. data/spec/app/models/truck.rb +3 -0
  433. data/spec/app/models/user.rb +21 -0
  434. data/spec/app/models/user_account.rb +10 -0
  435. data/spec/app/models/validation_callback.rb +10 -0
  436. data/spec/app/models/vehicle.rb +11 -0
  437. data/spec/app/models/version.rb +5 -0
  438. data/spec/app/models/vet_visit.rb +5 -0
  439. data/spec/app/models/video.rb +13 -0
  440. data/spec/app/models/weapon.rb +11 -0
  441. data/spec/app/models/wiki_page.rb +14 -0
  442. data/spec/app/models/word.rb +15 -0
  443. data/spec/app/models/word_origin.rb +11 -0
  444. data/spec/app/models/writer.rb +11 -0
  445. data/spec/config/mongoid.yml +38 -0
  446. data/spec/mongoid/atomic/modifiers_spec.rb +456 -0
  447. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +118 -0
  448. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +110 -0
  449. data/spec/mongoid/atomic/paths/root_spec.rb +48 -0
  450. data/spec/mongoid/atomic/paths_spec.rb +270 -0
  451. data/spec/mongoid/atomic_spec.rb +365 -0
  452. data/spec/mongoid/attributes/nested_spec.rb +4832 -0
  453. data/spec/mongoid/attributes/readonly_spec.rb +169 -0
  454. data/spec/mongoid/attributes_spec.rb +1412 -0
  455. data/spec/mongoid/changeable_spec.rb +1507 -0
  456. data/spec/mongoid/composable_spec.rb +24 -0
  457. data/spec/mongoid/config/environment_spec.rb +83 -0
  458. data/spec/mongoid/config/options_spec.rb +56 -0
  459. data/spec/mongoid/config_spec.rb +318 -0
  460. data/spec/mongoid/contextual/aggregable/memory_spec.rb +293 -0
  461. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +455 -0
  462. data/spec/mongoid/contextual/atomic_spec.rb +529 -0
  463. data/spec/mongoid/contextual/find_and_modify_spec.rb +220 -0
  464. data/spec/mongoid/contextual/geo_near_spec.rb +405 -0
  465. data/spec/mongoid/contextual/map_reduce_spec.rb +464 -0
  466. data/spec/mongoid/contextual/memory_spec.rb +1236 -0
  467. data/spec/mongoid/contextual/mongo_spec.rb +1843 -0
  468. data/spec/mongoid/contextual/text_search_spec.rb +207 -0
  469. data/spec/mongoid/copyable_spec.rb +393 -0
  470. data/spec/mongoid/criteria/findable_spec.rb +1189 -0
  471. data/spec/mongoid/criteria/inspectable_spec.rb +27 -0
  472. data/spec/mongoid/criteria/marshalable_spec.rb +28 -0
  473. data/spec/mongoid/criteria/modifiable_spec.rb +1063 -0
  474. data/spec/mongoid/criteria/scopable_spec.rb +391 -0
  475. data/spec/mongoid/criteria_spec.rb +3821 -0
  476. data/spec/mongoid/document_spec.rb +1205 -0
  477. data/spec/mongoid/equality_spec.rb +241 -0
  478. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +29 -0
  479. data/spec/mongoid/errors/callback_spec.rb +29 -0
  480. data/spec/mongoid/errors/delete_restriction_spec.rb +29 -0
  481. data/spec/mongoid/errors/document_not_found_spec.rb +104 -0
  482. data/spec/mongoid/errors/eager_load_spec.rb +29 -0
  483. data/spec/mongoid/errors/invalid_collection_spec.rb +36 -0
  484. data/spec/mongoid/errors/invalid_config_option_spec.rb +29 -0
  485. data/spec/mongoid/errors/invalid_field_option_spec.rb +29 -0
  486. data/spec/mongoid/errors/invalid_field_spec.rb +37 -0
  487. data/spec/mongoid/errors/invalid_find_spec.rb +29 -0
  488. data/spec/mongoid/errors/invalid_includes_spec.rb +40 -0
  489. data/spec/mongoid/errors/invalid_index_spec.rb +29 -0
  490. data/spec/mongoid/errors/invalid_options_spec.rb +29 -0
  491. data/spec/mongoid/errors/invalid_path_spec.rb +23 -0
  492. data/spec/mongoid/errors/invalid_scope_spec.rb +29 -0
  493. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +17 -0
  494. data/spec/mongoid/errors/invalid_storage_options_spec.rb +29 -0
  495. data/spec/mongoid/errors/invalid_time_spec.rb +29 -0
  496. data/spec/mongoid/errors/inverse_not_found_spec.rb +29 -0
  497. data/spec/mongoid/errors/mixed_relations_spec.rb +29 -0
  498. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +29 -0
  499. data/spec/mongoid/errors/mongoid_error_spec.rb +48 -0
  500. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +29 -0
  501. data/spec/mongoid/errors/no_environment_spec.rb +29 -0
  502. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +29 -0
  503. data/spec/mongoid/errors/no_metadata_spec.rb +23 -0
  504. data/spec/mongoid/errors/no_parent_spec.rb +29 -0
  505. data/spec/mongoid/errors/no_session_config_spec.rb +29 -0
  506. data/spec/mongoid/errors/no_session_database_spec.rb +29 -0
  507. data/spec/mongoid/errors/no_session_hosts_spec.rb +29 -0
  508. data/spec/mongoid/errors/no_sessions_config_spec.rb +29 -0
  509. data/spec/mongoid/errors/readonly_attribute_spec.rb +29 -0
  510. data/spec/mongoid/errors/scope_overwrite_spec.rb +29 -0
  511. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +29 -0
  512. data/spec/mongoid/errors/unknown_attribute_spec.rb +29 -0
  513. data/spec/mongoid/errors/unsaved_document_spec.rb +37 -0
  514. data/spec/mongoid/errors/unsupported_javascript_spec.rb +29 -0
  515. data/spec/mongoid/errors/validations_spec.rb +45 -0
  516. data/spec/mongoid/extensions/array_spec.rb +638 -0
  517. data/spec/mongoid/extensions/big_decimal_spec.rb +104 -0
  518. data/spec/mongoid/extensions/binary_spec.rb +60 -0
  519. data/spec/mongoid/extensions/boolean_spec.rb +135 -0
  520. data/spec/mongoid/extensions/date_spec.rb +235 -0
  521. data/spec/mongoid/extensions/date_time_spec.rb +155 -0
  522. data/spec/mongoid/extensions/false_class_spec.rb +42 -0
  523. data/spec/mongoid/extensions/float_spec.rb +133 -0
  524. data/spec/mongoid/extensions/hash_spec.rb +333 -0
  525. data/spec/mongoid/extensions/integer_spec.rb +136 -0
  526. data/spec/mongoid/extensions/module_spec.rb +42 -0
  527. data/spec/mongoid/extensions/nil_class_spec.rb +11 -0
  528. data/spec/mongoid/extensions/object_id_spec.rb +946 -0
  529. data/spec/mongoid/extensions/object_spec.rb +292 -0
  530. data/spec/mongoid/extensions/range_spec.rb +105 -0
  531. data/spec/mongoid/extensions/regexp_spec.rb +47 -0
  532. data/spec/mongoid/extensions/set_spec.rb +33 -0
  533. data/spec/mongoid/extensions/string_spec.rb +357 -0
  534. data/spec/mongoid/extensions/symbol_spec.rb +76 -0
  535. data/spec/mongoid/extensions/time_spec.rb +467 -0
  536. data/spec/mongoid/extensions/time_with_zone_spec.rb +405 -0
  537. data/spec/mongoid/extensions/true_class_spec.rb +42 -0
  538. data/spec/mongoid/extensions_spec.rb +15 -0
  539. data/spec/mongoid/factory_spec.rb +185 -0
  540. data/spec/mongoid/fields/foreign_key_spec.rb +694 -0
  541. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +184 -0
  542. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +201 -0
  543. data/spec/mongoid/fields/localized_spec.rb +386 -0
  544. data/spec/mongoid/fields/standard_spec.rb +166 -0
  545. data/spec/mongoid/fields_spec.rb +1229 -0
  546. data/spec/mongoid/findable_spec.rb +342 -0
  547. data/spec/mongoid/identity_map_spec.rb +564 -0
  548. data/spec/mongoid/indexable/specification_spec.rb +87 -0
  549. data/spec/mongoid/indexable_spec.rb +504 -0
  550. data/spec/mongoid/inspectable_spec.rb +49 -0
  551. data/spec/mongoid/interceptable_spec.rb +1564 -0
  552. data/spec/mongoid/loggable_spec.rb +21 -0
  553. data/spec/mongoid/matchable/all_spec.rb +31 -0
  554. data/spec/mongoid/matchable/and_spec.rb +162 -0
  555. data/spec/mongoid/matchable/default_spec.rb +130 -0
  556. data/spec/mongoid/matchable/exists_spec.rb +57 -0
  557. data/spec/mongoid/matchable/gt_spec.rb +75 -0
  558. data/spec/mongoid/matchable/gte_spec.rb +74 -0
  559. data/spec/mongoid/matchable/in_spec.rb +25 -0
  560. data/spec/mongoid/matchable/lt_spec.rb +74 -0
  561. data/spec/mongoid/matchable/lte_spec.rb +74 -0
  562. data/spec/mongoid/matchable/ne_spec.rb +25 -0
  563. data/spec/mongoid/matchable/nin_spec.rb +25 -0
  564. data/spec/mongoid/matchable/or_spec.rb +106 -0
  565. data/spec/mongoid/matchable/size_spec.rb +25 -0
  566. data/spec/mongoid/matchable_spec.rb +532 -0
  567. data/spec/mongoid/persistable/creatable_spec.rb +512 -0
  568. data/spec/mongoid/persistable/deletable_spec.rb +205 -0
  569. data/spec/mongoid/persistable/destroyable_spec.rb +148 -0
  570. data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
  571. data/spec/mongoid/persistable/logical_spec.rb +143 -0
  572. data/spec/mongoid/persistable/poppable_spec.rb +115 -0
  573. data/spec/mongoid/persistable/pullable_spec.rb +228 -0
  574. data/spec/mongoid/persistable/pushable_spec.rb +258 -0
  575. data/spec/mongoid/persistable/renamable_spec.rb +135 -0
  576. data/spec/mongoid/persistable/savable_spec.rb +432 -0
  577. data/spec/mongoid/persistable/settable_spec.rb +139 -0
  578. data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
  579. data/spec/mongoid/persistable/updatable_spec.rb +522 -0
  580. data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
  581. data/spec/mongoid/persistable_spec.rb +206 -0
  582. data/spec/mongoid/positional_spec.rb +227 -0
  583. data/spec/mongoid/railties/document_spec.rb +24 -0
  584. data/spec/mongoid/relations/accessors_spec.rb +736 -0
  585. data/spec/mongoid/relations/auto_save_spec.rb +261 -0
  586. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +171 -0
  587. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +54 -0
  588. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +77 -0
  589. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +241 -0
  590. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +153 -0
  591. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +178 -0
  592. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +131 -0
  593. data/spec/mongoid/relations/builders/embedded/in_spec.rb +34 -0
  594. data/spec/mongoid/relations/builders/embedded/many_spec.rb +132 -0
  595. data/spec/mongoid/relations/builders/embedded/one_spec.rb +99 -0
  596. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +234 -0
  597. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +250 -0
  598. data/spec/mongoid/relations/builders/referenced/in_spec.rb +241 -0
  599. data/spec/mongoid/relations/builders/referenced/many_spec.rb +137 -0
  600. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +178 -0
  601. data/spec/mongoid/relations/builders/referenced/one_spec.rb +124 -0
  602. data/spec/mongoid/relations/builders_spec.rb +226 -0
  603. data/spec/mongoid/relations/cascading/delete_spec.rb +101 -0
  604. data/spec/mongoid/relations/cascading/destroy_spec.rb +47 -0
  605. data/spec/mongoid/relations/cascading/nullify_spec.rb +32 -0
  606. data/spec/mongoid/relations/cascading/restrict_spec.rb +68 -0
  607. data/spec/mongoid/relations/cascading_spec.rb +355 -0
  608. data/spec/mongoid/relations/constraint_spec.rb +74 -0
  609. data/spec/mongoid/relations/conversions_spec.rb +126 -0
  610. data/spec/mongoid/relations/counter_cache_spec.rb +205 -0
  611. data/spec/mongoid/relations/cyclic_spec.rb +156 -0
  612. data/spec/mongoid/relations/embedded/dirty_spec.rb +65 -0
  613. data/spec/mongoid/relations/embedded/in_spec.rb +579 -0
  614. data/spec/mongoid/relations/embedded/many_spec.rb +3781 -0
  615. data/spec/mongoid/relations/embedded/one_spec.rb +1014 -0
  616. data/spec/mongoid/relations/macros_spec.rb +613 -0
  617. data/spec/mongoid/relations/metadata_spec.rb +1917 -0
  618. data/spec/mongoid/relations/options_spec.rb +35 -0
  619. data/spec/mongoid/relations/polymorphic_spec.rb +128 -0
  620. data/spec/mongoid/relations/proxy_spec.rb +48 -0
  621. data/spec/mongoid/relations/referenced/in_spec.rb +1435 -0
  622. data/spec/mongoid/relations/referenced/many_spec.rb +3546 -0
  623. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +3556 -0
  624. data/spec/mongoid/relations/referenced/one_spec.rb +1289 -0
  625. data/spec/mongoid/relations/reflections_spec.rb +101 -0
  626. data/spec/mongoid/relations/synchronization_spec.rb +449 -0
  627. data/spec/mongoid/relations/targets/enumerable_spec.rb +1710 -0
  628. data/spec/mongoid/relations/touchable_spec.rb +296 -0
  629. data/spec/mongoid/relations_spec.rb +188 -0
  630. data/spec/mongoid/reloadable_spec.rb +305 -0
  631. data/spec/mongoid/scopable_spec.rb +926 -0
  632. data/spec/mongoid/selectable_spec.rb +134 -0
  633. data/spec/mongoid/serializable_spec.rb +862 -0
  634. data/spec/mongoid/sessions/factory_spec.rb +312 -0
  635. data/spec/mongoid/sessions/mongo_uri_spec.rb +103 -0
  636. data/spec/mongoid/sessions/options_spec.rb +71 -0
  637. data/spec/mongoid/sessions_spec.rb +1078 -0
  638. data/spec/mongoid/shardable_spec.rb +61 -0
  639. data/spec/mongoid/state_spec.rb +102 -0
  640. data/spec/mongoid/threaded_spec.rb +258 -0
  641. data/spec/mongoid/timestamps/created/short_spec.rb +51 -0
  642. data/spec/mongoid/timestamps/created_spec.rb +44 -0
  643. data/spec/mongoid/timestamps/updated/short_spec.rb +90 -0
  644. data/spec/mongoid/timestamps/updated_spec.rb +86 -0
  645. data/spec/mongoid/timestamps_spec.rb +112 -0
  646. data/spec/mongoid/traversable_spec.rb +244 -0
  647. data/spec/mongoid/unit_of_work_spec.rb +196 -0
  648. data/spec/mongoid/validatable/associated_spec.rb +183 -0
  649. data/spec/mongoid/validatable/format_spec.rb +83 -0
  650. data/spec/mongoid/validatable/length_spec.rb +119 -0
  651. data/spec/mongoid/validatable/numericality_spec.rb +30 -0
  652. data/spec/mongoid/validatable/presence_spec.rb +511 -0
  653. data/spec/mongoid/validatable/uniqueness_spec.rb +2305 -0
  654. data/spec/mongoid/validatable_spec.rb +309 -0
  655. data/spec/mongoid_spec.rb +74 -0
  656. data/spec/rack/mongoid/middleware/identity_map_spec.rb +72 -0
  657. data/spec/rails/mongoid_spec.rb +462 -0
  658. data/spec/spec_helper.rb +103 -0
  659. metadata +1159 -0
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009-2013 Durran Jordan
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,62 @@
1
+ Mongoid [![Build Status](https://secure.travis-ci.org/mongoid/mongoid.png?branch=master)](http://travis-ci.org/mongoid/mongoid) [![Code Climate](https://codeclimate.com/github/mongoid/mongoid.png)](https://codeclimate.com/github/mongoid/mongoid) [![Coverage Status](https://coveralls.io/repos/mongoid/mongoid/badge.png?branch=master)](https://coveralls.io/r/mongoid/mongoid?branch=master)
2
+ ========
3
+
4
+ Mongoid is an ODM (Object-Document-Mapper) framework for MongoDB in Ruby.
5
+
6
+ Project Tracking
7
+ ----------------
8
+
9
+ * [Mongoid Google Group](http://groups.google.com/group/mongoid)
10
+ * [Mongoid Website and Documentation](http://mongoid.org)
11
+ * [Mongoid Code Climate](https://codeclimate.com/github/mongoid/mongoid)
12
+
13
+ Compatibility
14
+ -------------
15
+
16
+ Mongoid is tested against MRI 1.9.3, 2.0.0, and JRuby (1.9).
17
+
18
+ Documentation
19
+ -------------
20
+
21
+ Please see the new Mongoid website for up-to-date documentation:
22
+ [mongoid.org](http://mongoid.org)
23
+
24
+ Donating
25
+ --------
26
+
27
+ [Support Mongoid at Pledgie](http://www.pledgie.com/campaigns/7757)
28
+
29
+ <a href='http://www.pledgie.com/campaigns/7757'>
30
+ <img alt='Click here to lend your support to: Mongoid and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/7757.png?skin_name=chrome' border='0'/>
31
+ </a>
32
+
33
+ [![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=durran&url=http://github.com/mongoid&title=mongoid&language=&tags=github&category=software)
34
+
35
+ License
36
+ -------
37
+
38
+ Copyright (c) 2009-2013 Durran Jordan
39
+
40
+ Permission is hereby granted, free of charge, to any person obtaining
41
+ a copy of this software and associated documentation files (the
42
+ "Software"), to deal in the Software without restriction, including
43
+ without limitation the rights to use, copy, modify, merge, publish,
44
+ distribute, sublicense, and/or sell copies of the Software, and to
45
+ permit persons to whom the Software is furnished to do so, subject to
46
+ the following conditions:
47
+
48
+ The above copyright notice and this permission notice shall be
49
+ included in all copies or substantial portions of the Software.
50
+
51
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
52
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
53
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
54
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
55
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
56
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
57
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
58
+
59
+ Credits
60
+ -------
61
+
62
+ Durran Jordan: durran at gmail dot com
data/Rakefile ADDED
@@ -0,0 +1,35 @@
1
+ require "bundler"
2
+ Bundler.setup
3
+
4
+ require "rake"
5
+ require "rspec/core/rake_task"
6
+
7
+ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
8
+ require "mongoid/version"
9
+
10
+ task :gem => :build
11
+ task :build do
12
+ system "gem build mongoid.gemspec"
13
+ end
14
+
15
+ task :install => :build do
16
+ system "sudo gem install mongoid-#{Mongoid::VERSION}.gem"
17
+ end
18
+
19
+ task :release => :build do
20
+ system "git tag -a v#{Mongoid::VERSION} -m 'Tagging #{Mongoid::VERSION}'"
21
+ system "git push --tags"
22
+ system "gem push mongoid-#{Mongoid::VERSION}.gem"
23
+ system "rm mongoid-#{Mongoid::VERSION}.gem"
24
+ end
25
+
26
+ RSpec::Core::RakeTask.new("spec") do |spec|
27
+ spec.pattern = "spec/**/*_spec.rb"
28
+ end
29
+
30
+ RSpec::Core::RakeTask.new('spec:progress') do |spec|
31
+ spec.rspec_opts = %w(--format progress)
32
+ spec.pattern = "spec/**/*_spec.rb"
33
+ end
34
+
35
+ task :default => :spec
@@ -0,0 +1,448 @@
1
+ en:
2
+ mongoid:
3
+ errors:
4
+ messages:
5
+ blank_in_locale:
6
+ "can't be blank in %{location}"
7
+ ambiguous_relationship:
8
+ message: "Ambiguous relations %{candidates} defined on %{klass}."
9
+ summary:
10
+ "When Mongoid attempts to set an inverse document of a relation
11
+ in memory, it needs to know which relation it belongs to. When
12
+ setting %{name}, Mongoid looked on the class %{inverse}
13
+ for a matching relation, but multiples were found that could
14
+ potentially match: %{candidates}."
15
+ resolution: "On the %{name} relation on %{inverse} you must add an
16
+ :inverse_of option to specify the exact relationship on %{klass}
17
+ that is the opposite of %{name}."
18
+ callbacks:
19
+ message: "Calling %{method} on %{klass} resulted in a false return
20
+ from a callback."
21
+ summary: "If a before callback returns false when using Document.create!,
22
+ Document#save!, or Documnet#update_attributes! this error will get raised
23
+ since the document did not actually get saved."
24
+ resolution: "Double check all before callbacks to make sure they are
25
+ not unintentionally returning false."
26
+ calling_document_find_with_nil_is_invalid:
27
+ message: "Calling Document.find with nil is invalid."
28
+ summary: "Document.find expects the parameters to be 1 or more ids, and
29
+ will return a single document if 1 id is provided, otherwise an array
30
+ of documents if multiple ids are provided."
31
+ resolution: "Most likely this is caused by passing parameters directly
32
+ through to the find, and the parameter either is not present or the
33
+ key from which it is accessed is incorrect."
34
+ document_not_found:
35
+ message: "Document(s) not found for class %{klass} with id(s) %{missing}."
36
+ summary: "When calling %{klass}.find with an id or array of ids, each
37
+ parameter must match a document in the database or this error will be
38
+ raised. The search was for the id(s): %{searched} (%{total} total)
39
+ and the following ids were not found: %{missing}."
40
+ resolution: "Search for an id that is in the database or set
41
+ the Mongoid.raise_not_found_error configuration option to false,
42
+ which will cause a nil to be returned instead of raising this error when
43
+ searching for a single id, or only the matched documents when searching
44
+ for multiples."
45
+ document_with_attributes_not_found:
46
+ message: "Document not found for class %{klass} with attributes %{attributes}."
47
+ summary: "When calling %{klass}.find_by with a hash of attributes, all
48
+ attributes provided must match a document in the database or this error
49
+ will be raised."
50
+ resolution: "Search for attributes that are in the database or set
51
+ the Mongoid.raise_not_found_error configuration option to false,
52
+ which will cause a nil to be returned instead of raising this error."
53
+ eager_load:
54
+ message: "Eager loading :%{name} is not supported since it is a
55
+ polymorphic belongs_to relation."
56
+ summary: "Mongoid cannot currently determine the classes it needs to
57
+ eager load when the relation is polymorphic. The parents reside in
58
+ different collections so a simple id lookup is not sufficient enough."
59
+ resolution: "Don't attempt to perform this action and have patience,
60
+ maybe this will be supported in the future."
61
+ invalid_collection:
62
+ message: "Access to the collection for %{klass} is not allowed."
63
+ summary: "%{klass}.collection was called, and %{klass} is an embedded
64
+ document - it resides within the collection of the root document of
65
+ the hierarchy."
66
+ resolution: "For access to the collection that the embedded document is
67
+ in, use %{klass}#_root.collection, or do not attempt to persist an
68
+ embedded document without a parent set."
69
+ invalid_config_option:
70
+ message: "Invalid configuration option: %{name}."
71
+ summary: "A invalid configuration option was provided in your
72
+ mongoid.yml, or a typo is potentially present. The valid configuration
73
+ options are: %{options}."
74
+ resolution: "Remove the invalid option or fix the typo. If you were
75
+ expecting the option to be there, please consult the following page
76
+ with repect to Mongoid's configuration:\n\n
77
+ \_\_http://mongoid.org/en/mongoid/docs/installation.html"
78
+ invalid_field:
79
+ message: "Defining a field named '%{name}' is not allowed."
80
+ summary: "Defining this field would override the method '%{name}',
81
+ which would cause issues with expectations around the original
82
+ method and cause extremely hard to debug issues. The original
83
+ method was defined in:\n
84
+ \_\_Object: %{origin}\n
85
+ \_\_File: %{file}\n
86
+ \_\_Line: %{line}"
87
+ resolution: "Use Mongoid.destructive_fields to see what names are not
88
+ allowed, and don't use these names. These include names that also
89
+ conflict with core Ruby methods on Object, Module, Enumerable, or
90
+ included gems that inject methods into these or Mongoid internals."
91
+ invalid_field_option:
92
+ message: "Invalid option :%{option} provided for field :%{name}."
93
+ summary: "Mongoid requires that you only provide valid options on each
94
+ field definition in order to prevent unexpected behaviour later on."
95
+ resolution: "When defining the field :%{name} on '%{klass}', please provide
96
+ valid options for the field. These are currently: %{valid}. If you
97
+ meant to define a custom field option, please do so first like so:\n\n
98
+ \_\_Mongoid::Fields.option :%{option} do |model, field, value|\n
99
+ \_\_\_\_# Your logic here...\n
100
+ \_\_end\n
101
+ \_\_class %{klass}\n
102
+ \_\_\_\_include Mongoid::Document\n
103
+ \_\_\_\_field :%{name}, %{option}: true\n
104
+ \_\_end\n\n"
105
+ invalid_includes:
106
+ message: "Invalid includes directive: %{klass}.includes(%{args})"
107
+ summary: "Eager loading in Mongoid only supports providing arguments
108
+ to %{klass}.includes that are the names of relations on the %{klass}
109
+ model, and only supports one level of eager loading. (ie, eager loading
110
+ associations not on the %{klass} but one step away via another relation
111
+ is not allowed."
112
+ resolution: "Ensure that each parameter passed to %{klass}.includes is
113
+ a valid name of a relation on the %{klass} model. These are: %{relations}."
114
+ invalid_index:
115
+ message: "Invalid index specification on %{klass}: %{spec}, %{options}"
116
+ summary: "Indexes in Mongoid are defined as a hash of field name and
117
+ direction/2d pairs, with a hash for any additional options."
118
+ resolution: "Ensure that the index conforms to the correct syntax and
119
+ has the correct options.\n\n
120
+ Valid options are:\n
121
+ \_\_background: true|false\n
122
+ \_\_drop_dups: true|false\n
123
+ \_\_name: 'index_name'\n
124
+ \_\_sparse: true|false\n
125
+ \_\_unique: true|false\n
126
+ \_\_min: 1\n
127
+ \_\_max: 1\n
128
+ \_\_bits: 26\n
129
+ \_\_bucket_size : 1\n
130
+ \_\_weights: { content: 1, title: 2 }\n
131
+ Valid types are: 1, -1, '2d', '2dsphere', 'geoHaystack', 'text', 'hashed'\n\n
132
+ Example:\n
133
+ \_\_class Band\n
134
+ \_\_\_\_include Mongoid::Document\n
135
+ \_\_\_\_index({ name: 1, label: -1 }, { sparse: true })\n
136
+ \_\_\_\_index({ location: '2d' }, { background: true })\n
137
+ \_\_end\n\n"
138
+ invalid_options:
139
+ message: "Invalid option :%{invalid} provided to relation :%{name}."
140
+ summary: "Mongoid checks the options that are passed to the relation
141
+ macros to ensure that no ill side effects occur by letting something
142
+ slip by."
143
+ resolution: "Valid options are: %{valid}, make sure these are the ones
144
+ you are using."
145
+ invalid_path:
146
+ message: "Having a root path assigned for %{klass} is invalid."
147
+ summary: "Mongoid has two different path objects for determining
148
+ the location of a document in the database, Root and Embedded.
149
+ This error is raised when an embedded document somehow gets a
150
+ root path assigned."
151
+ resolution: "Most likely your embedded model, %{klass} is also
152
+ referenced via a has_many from a root document in another
153
+ collection. Double check the relation definitions and fix any
154
+ instances where embedded documents are improperly referenced
155
+ from other collections."
156
+ invalid_scope:
157
+ message: "Defining a scope of value %{value} on %{klass} is not
158
+ allowed."
159
+ summary: "Scopes in Mongoid must be either criteria objects or procs
160
+ that wrap criteria objects."
161
+ resolution: "Change the scope to be a criteria or proc wrapped
162
+ critera.\n\n
163
+ Example:\n
164
+ \_\_class Band\n
165
+ \_\_\_\_include Mongoid::Document\n
166
+ \_\_\_\_field :active, type: Boolean, default: true\n
167
+ \_\_\_\_scope :active, where(active: true)\n
168
+ \_\_\_\_scope :inactive, ->{ where(active: false) }\n
169
+ \_\_end\n\n"
170
+ invalid_storage_options:
171
+ message: "Invalid options passed to %{klass}.store_in: %{options}."
172
+ summary: "The :store_in macro takes only a hash of parameters with
173
+ the keys :database, :collection, or :session."
174
+ resolution: "Change the options passed to store_in to match the
175
+ documented API, and ensure all keys in the options hash are
176
+ symbols.\n\n
177
+ Example:\n
178
+ \_\_class Band\n
179
+ \_\_\_\_include Mongoid::Document\n
180
+ \_\_\_\_store_in collection: 'artists', database: 'secondary'\n
181
+ \_\_end\n\n"
182
+ invalid_time:
183
+ message: "'%{value}' is not a valid Time."
184
+ summary: "Mongoid tries to serialize the values for Date, DateTime, and
185
+ Time into proper UTC times to store in the database. The provided
186
+ value could not be parsed."
187
+ resolution: "Make sure to pass parsable values to the field setter
188
+ for Date, DateTime, and Time objects. When this is a String it needs
189
+ to be valid for Time.parse. Other objects must be valid to pass to
190
+ Time.local."
191
+ inverse_not_found:
192
+ message: "When adding a(n) %{klass} to %{base}#%{name}, Mongoid could
193
+ not determine the inverse foreign key to set. The attempted key was
194
+ '%{inverse}'."
195
+ summary: "When adding a document to a relation, Mongoid attempts
196
+ to link the newly added document to the base of the relation in
197
+ memory, as well as set the foreign key to link them on the
198
+ database side. In this case Mongoid could not determine what the
199
+ inverse foreign key was."
200
+ resolution: "If an inverse is not required, like a belongs_to or
201
+ has_and_belongs_to_many, ensure that :inverse_of => nil is set
202
+ on the relation. If the inverse is needed, most likely the
203
+ inverse cannot be figured out from the names of the relations and
204
+ you will need to explicitly tell Mongoid on the relation what
205
+ the inverse is.\n\n
206
+ Example:\n
207
+ \_\_class Lush\n
208
+ \_\_\_\_include Mongoid::Document\n
209
+ \_\_\_\_has_one :whiskey, class_name: \"Drink\", inverse_of: :alcoholic\n
210
+ \_\_end\n\n
211
+ \_\_class Drink\n
212
+ \_\_\_\_include Mongoid::Document\n
213
+ \_\_\_\_belongs_to :alcoholic, class_name: \"Lush\", inverse_of: :whiskey\n
214
+ \_\_end"
215
+ invalid_set_polymorphic_relation:
216
+ message: "The %{name} attribute can't be set to an instance of
217
+ %{other_klass} as %{other_klass} has multiple relations referencing
218
+ %{klass} as %{name}."
219
+ summary: "If the parent class of a polymorphic relation has multiple
220
+ definitions for the same relation, the values must be set from the
221
+ parent side and not the child side since Mongoid cannot determine
222
+ from the child side which relation to go in."
223
+ resolution: "Set the values from the parent, or redefine the relation
224
+ with only a single definition in the parent."
225
+ mixed_relations:
226
+ message: "Referencing a(n) %{embedded} document from the %{root}
227
+ document via a relational association is not allowed since the
228
+ %{embedded} is embedded."
229
+ summary: "In order to properly access a(n) %{embedded} from %{root}
230
+ the reference would need to go through the root document of
231
+ %{embedded}. In a simple case this would require Mongoid to store
232
+ an extra foreign key for the root, in more complex cases where
233
+ %{embedded} is multiple levels deep a key would need to be stored
234
+ for each parent up the hierarchy."
235
+ resolution: "Consider not embedding %{embedded}, or do the key
236
+ storage and access in a custom manner in the application code."
237
+ mixed_session_configuration:
238
+ message: "Both uri and standard configuration options defined for
239
+ session: '%{name}'."
240
+ summary: "Instead of simply giving uri or standard options a
241
+ preference order, Mongoid assumes that you have made a mistake in
242
+ your configuration and requires that you provide one or the other,
243
+ but not both. The options that were provided were: %{config}."
244
+ resolution: "Provide either only a uri as configuration or only
245
+ standard options."
246
+ nested_attributes_metadata_not_found:
247
+ message: "Could not find metadata for relation '%{name}' on model:
248
+ %{klass}."
249
+ summary: "When defining nested attributes for a relation, Mongoid
250
+ needs to access the metadata for the relation '%{name}' in order
251
+ if add autosave functionality to it, if applicable. Either no
252
+ relation named '%{name}' could be found, or the relation had not
253
+ been defined yet."
254
+ resolution: "Make sure that there is a relation defined named
255
+ '%{name}' on %{klass} or that the relation definition comes before
256
+ the accepts_nested_attributes_for macro in the model - order
257
+ matters so that Mongoid has access to the metadata.\n\n
258
+ Example:\n
259
+ \_\_class Band\n
260
+ \_\_\_\_include Mongoid::Document\n
261
+ \_\_\_\_has_many :albums\n
262
+ \_\_\_\_accepts_nested_attributes_for :albums\n
263
+ \_\_end\n\n"
264
+ no_default_session:
265
+ message: "No default session configuration is defined."
266
+ summary: "The configuration provided settings for: %{keys}, but
267
+ Mongoid requires a :default to be defined at minimum."
268
+ resolution: "If configuring via a mongoid.yml, ensure that within
269
+ your :sessions section a :default session is defined.\n\n
270
+ Example:\n
271
+ \_\_development:\n
272
+ \_\_\_\_sessions:\n
273
+ \_\_\_\_\_\_default:\n
274
+ \_\_\_\_\_\_\_\_hosts:\n
275
+ \_\_\_\_\_\_\_\_\_\_- localhost:27017\n\n"
276
+ no_environment:
277
+ message: "Could not load the configuration since no environment
278
+ was defined."
279
+ summary: "Mongoid attempted to find the appropriate environment
280
+ but no Rails.env, Sinatra::Base.environment, RACK_ENV, or
281
+ MONGOID_ENV could be found."
282
+ resolution: "Make sure some environment is set from the mentioned
283
+ options. Mongoid cannot load configuration from the yaml without
284
+ knowing which environment it is in, and we have considered
285
+ defaulting to development an undesireable side effect of this not
286
+ being defined."
287
+ no_map_reduce_output:
288
+ message: "No output location was specified for the map/reduce
289
+ operation."
290
+ summary: "When executing a map/reduce, you must provide the output
291
+ location of the results. The attempted command was: %{command}."
292
+ resolution: "Provide the location that the output of the operation
293
+ is to go by chaining an #out call to the map/reduce.\n\n
294
+ Example:\n
295
+ \_\_Band.map_reduce(map, reduce).out(inline: 1)\n\n
296
+ Valid options for the out function are:\n
297
+ \_\_inline: 1\n
298
+ \_\_merge: 'collection-name'\n
299
+ \_\_replace: 'collection-name'\n
300
+ \_\_reduce: 'collection-name'\n\n"
301
+ no_metadata:
302
+ message: "Metadata not found for document of type %{klass}."
303
+ summary: "Mongoid sets the metadata of a relation on the document
304
+ when it is either loaded from within the relation, or added to
305
+ one. The presence of the metadata is required in order to
306
+ provide various functionality around relations. Most likely you
307
+ are getting this error because the document is embedded and was
308
+ attempted to be persisted without being associated with a parent,
309
+ or the relation was not properly defined."
310
+ resolution: "Ensure that your relations on the %{klass} model
311
+ are all properly defined, and that the inverse relations
312
+ are also properly defined. Embedded relations must have both the
313
+ parent (embeds_one/embeds_many) and the inverse (embedded_in)
314
+ present in order to work properly."
315
+ no_parent:
316
+ message: "Cannot persist embedded document %{klass} without a
317
+ parent document."
318
+ summary: "If the document is embedded, in order to be persisted it
319
+ must always have a reference to its parent document. This is
320
+ most likely caused by either calling %{klass}.create or
321
+ %{klass}.create! without setting the parent document as an
322
+ attribute."
323
+ resolution: "Ensure that you've set the parent relation if
324
+ instantiating the embedded document direcly, or always create new
325
+ embedded documents via the parent relation."
326
+ no_session_config:
327
+ message: "No configuration could be found for a session named
328
+ '%{name}'."
329
+ summary: "When attempting to create the new session, Mongoid could
330
+ not find a session configuration for the name: '%{name}'. This is
331
+ necessary in order to know the host, port, and options needed
332
+ to connect."
333
+ resolution: "Double check your mongoid.yml to make sure under the
334
+ sessions key that a configuration exists for '%{name}'. If you
335
+ have set the configuration programatically, ensure that '%{name}'
336
+ exists in the configuration hash."
337
+ no_sessions_config:
338
+ message: "No sessions configuration provided."
339
+ summary: "Mongoid's configuration requires that you provide details
340
+ about each session that can be connected to, and requires in
341
+ the sessions config at least 1 default session to exist."
342
+ resolution: "Double check your mongoid.yml to make sure that you
343
+ have a top-level sessions key with at least 1 default session
344
+ configuration for it. You can regenerate a new mongoid.yml for
345
+ assistance via `rails g mongoid:config`.\n\n
346
+ Example:\n
347
+ \_\_development:\n
348
+ \_\_\_\_sessions:\n
349
+ \_\_\_\_\_\_default:\n
350
+ \_\_\_\_\_\_\_\_database: mongoid_dev\n
351
+ \_\_\_\_\_\_\_\_hosts:\n
352
+ \_\_\_\_\_\_\_\_\_\_- localhost:27017\n\n"
353
+ no_session_database:
354
+ message: "No database provided for session configuration: :%{name}."
355
+ summary: "Each session configuration must provide a database so Mongoid
356
+ knows where the default database to persist to. What was provided
357
+ was: %{config}."
358
+ resolution: "If configuring via a mongoid.yml, ensure that within
359
+ your :%{name} section a :database value for the session's default
360
+ database is defined.\n\n
361
+ Example:\n
362
+ \_\_development:\n
363
+ \_\_\_\_sessions:\n
364
+ \_\_\_\_\_\_%{name}:\n
365
+ \_\_\_\_\_\_\_\_database: my_app_db\n
366
+ \_\_\_\_\_\_\_\_hosts:\n
367
+ \_\_\_\_\_\_\_\_\_\_- localhost:27017\n\n"
368
+ no_session_hosts:
369
+ message: "No hosts provided for session configuration: :%{name}."
370
+ summary: "Each session configuration must provide hosts so Mongoid
371
+ knows where the database server is located. What was provided
372
+ was: %{config}."
373
+ resolution: "If configuring via a mongoid.yml, ensure that within
374
+ your :%{name} section a :hosts value for the session hosts is
375
+ defined.\n\n
376
+ Example:\n
377
+ \_\_development:\n
378
+ \_\_\_\_sessions:\n
379
+ \_\_\_\_\_\_%{name}:\n
380
+ \_\_\_\_\_\_\_\_database: my_app_db\n
381
+ \_\_\_\_\_\_\_\_hosts:\n
382
+ \_\_\_\_\_\_\_\_\_\_- localhost:27017\n\n"
383
+ readonly_attribute:
384
+ message: "Attempted to set the readonly attribute '%{name}' with
385
+ the value: %{value}."
386
+ summary: "Attributes flagged as readonly via Model.attr_readonly
387
+ can only have values set when the document is a new record."
388
+ resolution: "Don't define '%{name}' as readonly, or do not attempt
389
+ to update its value after the document is persisted."
390
+ scope_overwrite:
391
+ message: "Cannot create scope :%{scope_name}, because of existing
392
+ method %{model_name}.%{scope_name}."
393
+ summary: "When defining a scope that conflicts with a method that
394
+ already exists on the model, this error will get raised if
395
+ Mongoid.scope_overwrite_exception is set to true."
396
+ resolution: "Change the name of the scope so it does not conflict
397
+ with the already defined method %{model_name}, or set the
398
+ configuration option Mongoid.scope_overwrite_exception to false,
399
+ which is its default. In this case a warning will be logged."
400
+ taken:
401
+ "is already taken"
402
+ too_many_nested_attribute_records:
403
+ message: "Accepting nested attributes for %{association} is limited
404
+ to %{limit} records."
405
+ summary: "More documents were sent to be processed than the allowed
406
+ limit."
407
+ resolution: "The limit is set as an option to the macro, for example:
408
+ accepts_nested_attributes_for :%{association}, limit: %{limit}.
409
+ Consider raising this limit or making sure no more are sent than
410
+ the set value."
411
+ unknown_attribute:
412
+ message: "Attempted to set a value for '%{name}' which is not
413
+ allowed on the model %{klass}."
414
+ summary: "Without including Mongoid::Attributes::Dynamic in your model
415
+ and the attribute does not already exist in the attributes hash,
416
+ attempting to call %{klass}#%{name}= for it is not allowed. This is
417
+ also triggered by passing the attribute to any method that accepts an
418
+ attributes hash, and is raised instead of getting a NoMethodError."
419
+ resolution: "You can include Mongoid::Attributes::Dynamic if you
420
+ expect to be writing values for undefined fields often."
421
+ unsaved_document:
422
+ message: "Attempted to save %{document} before the parent %{base}."
423
+ summary: "You cannot call create or create! through the
424
+ relation (%{document}) who's parent (%{base}) is
425
+ not already saved. This would case the database to be out of sync
426
+ since the child could potentially reference a nonexistant parent."
427
+ resolution: "Make sure to only use create or create! when the parent
428
+ document %{base} is persisted."
429
+ unsupported_javascript:
430
+ message: "Executing Javascript $where selector on an embedded criteria
431
+ is not supported."
432
+ summary: "Mongoid only supports providing a hash of arguments to
433
+ #where criterion on embedded documents. Since %{klass} is embedded,
434
+ the expression %{javascript} is not allowed."
435
+ resolution: "Please provide a standard hash to #where when the criteria
436
+ is for an embedded relation."
437
+ validations:
438
+ message: "Validation of %{document} failed."
439
+ summary: "The following errors were found: %{errors}"
440
+ resolution: "Try persisting the document with valid data or remove
441
+ the validations."
442
+ delete_restriction:
443
+ message: "Cannot delete %{document} because of dependent '%{relation}'."
444
+ summary: "When defining '%{relation}' with a :dependent => :restrict,
445
+ Mongoid will raise an error when attempting to delete the
446
+ %{document} when the child '%{relation}' still has documents in it."
447
+ resolution: "Don't attempt to delete the parent %{document} when
448
+ it has children, or change the dependent option on the relation."