mongoid 3.1.6 → 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 (562) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +432 -8
  3. data/README.md +5 -6
  4. data/lib/config/locales/en.yml +32 -18
  5. data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
  6. data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
  7. data/lib/mongoid/atomic/paths/embedded.rb +0 -30
  8. data/lib/mongoid/atomic/paths/root.rb +0 -13
  9. data/lib/mongoid/atomic.rb +1 -12
  10. data/lib/mongoid/attributes/dynamic.rb +154 -0
  11. data/lib/mongoid/attributes/nested.rb +82 -0
  12. data/lib/mongoid/attributes/processing.rb +13 -66
  13. data/lib/mongoid/attributes.rb +63 -101
  14. data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
  15. data/lib/mongoid/composable.rb +105 -0
  16. data/lib/mongoid/config/options.rb +1 -1
  17. data/lib/mongoid/config.rb +3 -9
  18. data/lib/mongoid/contextual/aggregable/mongo.rb +7 -9
  19. data/lib/mongoid/contextual/atomic.rb +53 -53
  20. data/lib/mongoid/contextual/geo_near.rb +1 -1
  21. data/lib/mongoid/contextual/map_reduce.rb +4 -2
  22. data/lib/mongoid/contextual/memory.rb +18 -6
  23. data/lib/mongoid/contextual/mongo.rb +64 -56
  24. data/lib/mongoid/contextual/none.rb +90 -0
  25. data/lib/mongoid/contextual/text_search.rb +178 -0
  26. data/lib/mongoid/contextual.rb +2 -0
  27. data/lib/mongoid/copyable.rb +2 -3
  28. data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
  29. data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
  30. data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
  31. data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
  32. data/lib/mongoid/criteria/permission.rb +70 -0
  33. data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
  34. data/lib/mongoid/criteria.rb +39 -34
  35. data/lib/mongoid/document.rb +32 -17
  36. data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
  37. data/lib/mongoid/errors/document_not_found.rb +2 -1
  38. data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
  39. data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
  40. data/lib/mongoid/errors/invalid_value.rb +16 -0
  41. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  42. data/lib/mongoid/errors/readonly_document.rb +24 -0
  43. data/lib/mongoid/errors.rb +4 -1
  44. data/lib/mongoid/extensions/array.rb +3 -3
  45. data/lib/mongoid/extensions/big_decimal.rb +1 -1
  46. data/lib/mongoid/extensions/boolean.rb +15 -17
  47. data/lib/mongoid/extensions/date.rb +1 -1
  48. data/lib/mongoid/extensions/date_time.rb +3 -3
  49. data/lib/mongoid/extensions/float.rb +2 -1
  50. data/lib/mongoid/extensions/hash.rb +3 -3
  51. data/lib/mongoid/extensions/integer.rb +1 -1
  52. data/lib/mongoid/extensions/object.rb +7 -7
  53. data/lib/mongoid/extensions/object_id.rb +5 -5
  54. data/lib/mongoid/extensions/range.rb +9 -3
  55. data/lib/mongoid/extensions/regexp.rb +1 -1
  56. data/lib/mongoid/extensions/set.rb +1 -1
  57. data/lib/mongoid/extensions/string.rb +6 -18
  58. data/lib/mongoid/extensions/symbol.rb +1 -1
  59. data/lib/mongoid/extensions/time.rb +3 -3
  60. data/lib/mongoid/extensions/time_with_zone.rb +1 -1
  61. data/lib/mongoid/extensions.rb +2 -7
  62. data/lib/mongoid/factory.rb +8 -6
  63. data/lib/mongoid/fields/foreign_key.rb +3 -3
  64. data/lib/mongoid/fields/localized.rb +1 -1
  65. data/lib/mongoid/fields/standard.rb +5 -17
  66. data/lib/mongoid/fields/validators/macro.rb +15 -5
  67. data/lib/mongoid/fields.rb +41 -8
  68. data/lib/mongoid/{finders.rb → findable.rb} +8 -2
  69. data/lib/mongoid/indexable/specification.rb +104 -0
  70. data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
  71. data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
  72. data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
  73. data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
  74. data/lib/mongoid/log_subscriber.rb +55 -0
  75. data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
  76. data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
  77. data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
  78. data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
  79. data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
  80. data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
  81. data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
  82. data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
  83. data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
  84. data/lib/mongoid/{matchers → matchable}/ne.rb +2 -2
  85. data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
  86. data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
  87. data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
  88. data/lib/mongoid/matchable.rb +152 -0
  89. data/lib/mongoid/persistable/creatable.rb +188 -0
  90. data/lib/mongoid/persistable/deletable.rb +149 -0
  91. data/lib/mongoid/persistable/destroyable.rb +60 -0
  92. data/lib/mongoid/persistable/incrementable.rb +36 -0
  93. data/lib/mongoid/persistable/logical.rb +38 -0
  94. data/lib/mongoid/persistable/poppable.rb +39 -0
  95. data/lib/mongoid/persistable/pullable.rb +55 -0
  96. data/lib/mongoid/persistable/pushable.rb +62 -0
  97. data/lib/mongoid/persistable/renamable.rb +35 -0
  98. data/lib/mongoid/persistable/savable.rb +52 -0
  99. data/lib/mongoid/persistable/settable.rb +33 -0
  100. data/lib/mongoid/persistable/unsettable.rb +36 -0
  101. data/lib/mongoid/persistable/updatable.rb +152 -0
  102. data/lib/mongoid/persistable/upsertable.rb +55 -0
  103. data/lib/mongoid/persistable.rb +216 -0
  104. data/lib/mongoid/positional.rb +71 -0
  105. data/lib/mongoid/query_cache.rb +247 -0
  106. data/lib/mongoid/railtie.rb +32 -45
  107. data/lib/mongoid/railties/database.rake +9 -25
  108. data/lib/mongoid/relations/accessors.rb +13 -49
  109. data/lib/mongoid/relations/auto_save.rb +15 -36
  110. data/lib/mongoid/relations/binding.rb +1 -24
  111. data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
  112. data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
  113. data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
  114. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +3 -1
  115. data/lib/mongoid/relations/builder.rb +1 -1
  116. data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
  117. data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
  118. data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
  119. data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
  120. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
  121. data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
  122. data/lib/mongoid/relations/builders.rb +2 -2
  123. data/lib/mongoid/relations/cascading.rb +3 -5
  124. data/lib/mongoid/relations/constraint.rb +1 -1
  125. data/lib/mongoid/relations/conversions.rb +1 -1
  126. data/lib/mongoid/relations/counter_cache.rb +39 -15
  127. data/lib/mongoid/relations/eager/base.rb +149 -0
  128. data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
  129. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
  130. data/lib/mongoid/relations/eager/has_many.rb +38 -0
  131. data/lib/mongoid/relations/eager/has_one.rb +30 -0
  132. data/lib/mongoid/relations/eager.rb +46 -0
  133. data/lib/mongoid/relations/embedded/batchable.rb +4 -5
  134. data/lib/mongoid/relations/embedded/in.rb +4 -4
  135. data/lib/mongoid/relations/embedded/many.rb +14 -32
  136. data/lib/mongoid/relations/embedded/one.rb +1 -1
  137. data/lib/mongoid/relations/macros.rb +3 -4
  138. data/lib/mongoid/relations/many.rb +30 -31
  139. data/lib/mongoid/relations/marshalable.rb +3 -3
  140. data/lib/mongoid/relations/metadata.rb +14 -79
  141. data/lib/mongoid/relations/nested_builder.rb +2 -2
  142. data/lib/mongoid/relations/options.rb +1 -0
  143. data/lib/mongoid/relations/polymorphic.rb +0 -1
  144. data/lib/mongoid/relations/proxy.rb +21 -41
  145. data/lib/mongoid/relations/referenced/in.rb +4 -20
  146. data/lib/mongoid/relations/referenced/many.rb +19 -32
  147. data/lib/mongoid/relations/referenced/many_to_many.rb +15 -38
  148. data/lib/mongoid/relations/referenced/one.rb +6 -25
  149. data/lib/mongoid/relations/synchronization.rb +3 -3
  150. data/lib/mongoid/relations/touchable.rb +34 -1
  151. data/lib/mongoid/relations.rb +11 -25
  152. data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
  153. data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
  154. data/lib/mongoid/selectable.rb +59 -0
  155. data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
  156. data/lib/mongoid/sessions/factory.rb +2 -0
  157. data/lib/mongoid/sessions/options.rb +180 -0
  158. data/lib/mongoid/sessions/storage_options.rb +140 -0
  159. data/lib/mongoid/sessions/thread_options.rb +19 -0
  160. data/lib/mongoid/sessions/validators/storage.rb +16 -3
  161. data/lib/mongoid/sessions.rb +37 -345
  162. data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
  163. data/lib/mongoid/{state.rb → stateful.rb} +13 -1
  164. data/lib/mongoid/support/query_counter.rb +23 -0
  165. data/lib/mongoid/tasks/database.rake +31 -0
  166. data/lib/mongoid/tasks/database.rb +107 -0
  167. data/lib/mongoid/threaded/lifecycle.rb +0 -28
  168. data/lib/mongoid/threaded.rb +0 -157
  169. data/lib/mongoid/timestamps/updated/short.rb +2 -2
  170. data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
  171. data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
  172. data/lib/mongoid/{validations → validatable}/format.rb +1 -1
  173. data/lib/mongoid/{validations → validatable}/length.rb +1 -1
  174. data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
  175. data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
  176. data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
  177. data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
  178. data/lib/mongoid/{validations → validatable}/uniqueness.rb +23 -19
  179. data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
  180. data/lib/mongoid/version.rb +1 -1
  181. data/lib/mongoid.rb +10 -76
  182. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +13 -24
  183. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  184. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
  185. data/lib/rails/generators/mongoid_generator.rb +3 -40
  186. data/lib/rails/mongoid.rb +0 -122
  187. data/lib/support/ruby_version.rb +1 -1
  188. data/spec/app/models/account.rb +2 -6
  189. data/spec/app/models/acolyte.rb +2 -1
  190. data/spec/app/models/actor.rb +0 -1
  191. data/spec/app/models/address.rb +8 -3
  192. data/spec/app/models/animal.rb +1 -1
  193. data/spec/app/models/appointment.rb +3 -3
  194. data/spec/app/models/article.rb +1 -4
  195. data/spec/app/models/audio.rb +5 -0
  196. data/spec/app/models/author.rb +0 -2
  197. data/spec/app/models/band.rb +3 -2
  198. data/spec/app/models/bar.rb +1 -0
  199. data/spec/app/models/book.rb +1 -0
  200. data/spec/app/models/building.rb +0 -2
  201. data/spec/app/models/building_address.rb +0 -2
  202. data/spec/app/models/bus.rb +1 -1
  203. data/spec/app/models/canvas.rb +1 -1
  204. data/spec/app/models/contractor.rb +0 -2
  205. data/spec/app/models/country_code.rb +1 -1
  206. data/spec/app/models/definition.rb +2 -2
  207. data/spec/app/models/dog.rb +1 -1
  208. data/spec/app/models/draft.rb +9 -0
  209. data/spec/app/models/dragon.rb +4 -0
  210. data/spec/app/models/drug.rb +1 -3
  211. data/spec/app/models/dungeon.rb +4 -0
  212. data/spec/app/models/edit.rb +5 -0
  213. data/spec/app/models/even.rb +7 -0
  214. data/spec/app/models/event.rb +1 -1
  215. data/spec/app/models/filesystem.rb +1 -0
  216. data/spec/app/models/fish.rb +0 -1
  217. data/spec/app/models/fruits.rb +6 -0
  218. data/spec/app/models/game.rb +0 -2
  219. data/spec/app/models/house.rb +1 -3
  220. data/spec/app/models/item.rb +1 -5
  221. data/spec/app/models/jar.rb +1 -1
  222. data/spec/app/models/label.rb +4 -4
  223. data/spec/app/models/line_item.rb +1 -1
  224. data/spec/app/models/login.rb +1 -1
  225. data/spec/app/models/message.rb +8 -0
  226. data/spec/app/models/movie.rb +1 -0
  227. data/spec/app/models/name.rb +3 -3
  228. data/spec/app/models/note.rb +3 -1
  229. data/spec/app/models/odd.rb +7 -0
  230. data/spec/app/models/oscar.rb +1 -1
  231. data/spec/app/models/parent_doc.rb +1 -1
  232. data/spec/app/models/person.rb +16 -10
  233. data/spec/app/models/phone.rb +1 -3
  234. data/spec/app/models/player.rb +3 -3
  235. data/spec/app/models/post.rb +5 -3
  236. data/spec/app/models/preference.rb +1 -1
  237. data/spec/app/models/quiz.rb +0 -3
  238. data/spec/app/models/record.rb +10 -5
  239. data/spec/app/models/registry.rb +1 -1
  240. data/spec/app/models/server.rb +1 -1
  241. data/spec/app/models/service.rb +3 -3
  242. data/spec/app/models/sound.rb +5 -0
  243. data/spec/app/models/symptom.rb +1 -1
  244. data/spec/app/models/template.rb +1 -1
  245. data/spec/app/models/title.rb +0 -1
  246. data/spec/app/models/track.rb +5 -5
  247. data/spec/app/models/tree.rb +3 -3
  248. data/spec/app/models/video.rb +1 -5
  249. data/spec/app/models/wiki_page.rb +2 -5
  250. data/spec/app/models/word.rb +3 -0
  251. data/spec/app/models/word_origin.rb +1 -1
  252. data/spec/config/mongoid.yml +7 -8
  253. data/spec/helpers.rb +18 -0
  254. data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
  255. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
  256. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
  257. data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
  258. data/spec/mongoid/atomic/paths_spec.rb +19 -19
  259. data/spec/mongoid/atomic_spec.rb +19 -19
  260. data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +335 -448
  261. data/spec/mongoid/attributes/readonly_spec.rb +58 -18
  262. data/spec/mongoid/attributes_spec.rb +315 -436
  263. data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
  264. data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
  265. data/spec/mongoid/config/environment_spec.rb +3 -3
  266. data/spec/mongoid/config/options_spec.rb +6 -6
  267. data/spec/mongoid/config_spec.rb +24 -48
  268. data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
  269. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +78 -38
  270. data/spec/mongoid/contextual/atomic_spec.rb +68 -58
  271. data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
  272. data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
  273. data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
  274. data/spec/mongoid/contextual/memory_spec.rb +151 -94
  275. data/spec/mongoid/contextual/mongo_spec.rb +238 -150
  276. data/spec/mongoid/contextual/none_spec.rb +127 -0
  277. data/spec/mongoid/contextual/text_search_spec.rb +209 -0
  278. data/spec/mongoid/copyable_spec.rb +56 -68
  279. data/spec/mongoid/criteria/findable_spec.rb +991 -0
  280. data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
  281. data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
  282. data/spec/mongoid/criteria/modifiable_spec.rb +1255 -0
  283. data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
  284. data/spec/mongoid/criteria_spec.rb +578 -2295
  285. data/spec/mongoid/document_spec.rb +166 -120
  286. data/spec/mongoid/equality_spec.rb +22 -22
  287. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
  288. data/spec/mongoid/errors/callback_spec.rb +3 -3
  289. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
  290. data/spec/mongoid/errors/document_not_destroyed_spec.rb +33 -0
  291. data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
  292. data/spec/mongoid/errors/eager_load_spec.rb +3 -3
  293. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
  294. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
  295. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
  296. data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
  297. data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
  298. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
  299. data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
  300. data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
  301. data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
  302. data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
  303. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
  304. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
  305. data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
  306. data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
  307. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
  308. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
  309. data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
  310. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
  311. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  312. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
  313. data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
  314. data/spec/mongoid/errors/no_parent_spec.rb +3 -3
  315. data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
  316. data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
  317. data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
  318. data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
  319. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
  320. data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
  321. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
  322. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
  323. data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
  324. data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
  325. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
  326. data/spec/mongoid/errors/validations_spec.rb +7 -7
  327. data/spec/mongoid/extensions/array_spec.rb +61 -61
  328. data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
  329. data/spec/mongoid/extensions/binary_spec.rb +12 -12
  330. data/spec/mongoid/extensions/boolean_spec.rb +18 -18
  331. data/spec/mongoid/extensions/date_spec.rb +13 -13
  332. data/spec/mongoid/extensions/date_time_spec.rb +8 -8
  333. data/spec/mongoid/extensions/false_class_spec.rb +5 -5
  334. data/spec/mongoid/extensions/float_spec.rb +29 -15
  335. data/spec/mongoid/extensions/hash_spec.rb +29 -29
  336. data/spec/mongoid/extensions/integer_spec.rb +15 -15
  337. data/spec/mongoid/extensions/module_spec.rb +2 -2
  338. data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
  339. data/spec/mongoid/extensions/object_id_spec.rb +134 -134
  340. data/spec/mongoid/extensions/object_spec.rb +26 -26
  341. data/spec/mongoid/extensions/range_spec.rb +61 -12
  342. data/spec/mongoid/extensions/regexp_spec.rb +4 -4
  343. data/spec/mongoid/extensions/set_spec.rb +4 -4
  344. data/spec/mongoid/extensions/string_spec.rb +35 -46
  345. data/spec/mongoid/extensions/symbol_spec.rb +9 -9
  346. data/spec/mongoid/extensions/time_spec.rb +49 -49
  347. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
  348. data/spec/mongoid/extensions/true_class_spec.rb +5 -5
  349. data/spec/mongoid/extensions_spec.rb +15 -0
  350. data/spec/mongoid/factory_spec.rb +15 -15
  351. data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
  352. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
  353. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
  354. data/spec/mongoid/fields/localized_spec.rb +38 -23
  355. data/spec/mongoid/fields/standard_spec.rb +12 -12
  356. data/spec/mongoid/fields_spec.rb +263 -217
  357. data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +127 -27
  358. data/spec/mongoid/indexable/specification_spec.rb +102 -0
  359. data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
  360. data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
  361. data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +117 -116
  362. data/spec/mongoid/log_subscriber_spec.rb +75 -0
  363. data/spec/mongoid/loggable_spec.rb +1 -1
  364. data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
  365. data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
  366. data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
  367. data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
  368. data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
  369. data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
  370. data/spec/mongoid/matchable/in_spec.rb +49 -0
  371. data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
  372. data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
  373. data/spec/mongoid/matchable/ne_spec.rb +46 -0
  374. data/spec/mongoid/matchable/nin_spec.rb +48 -0
  375. data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
  376. data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
  377. data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
  378. data/spec/mongoid/persistable/creatable_spec.rb +512 -0
  379. data/spec/mongoid/persistable/deletable_spec.rb +218 -0
  380. data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
  381. data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
  382. data/spec/mongoid/persistable/logical_spec.rb +143 -0
  383. data/spec/mongoid/persistable/poppable_spec.rb +115 -0
  384. data/spec/mongoid/persistable/pullable_spec.rb +228 -0
  385. data/spec/mongoid/persistable/pushable_spec.rb +258 -0
  386. data/spec/mongoid/persistable/renamable_spec.rb +135 -0
  387. data/spec/mongoid/persistable/savable_spec.rb +461 -0
  388. data/spec/mongoid/persistable/settable_spec.rb +139 -0
  389. data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
  390. data/spec/mongoid/persistable/updatable_spec.rb +558 -0
  391. data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
  392. data/spec/mongoid/persistable_spec.rb +206 -0
  393. data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +9 -9
  394. data/spec/mongoid/query_cache_spec.rb +231 -0
  395. data/spec/mongoid/railties/document_spec.rb +2 -2
  396. data/spec/mongoid/relations/accessors_spec.rb +53 -145
  397. data/spec/mongoid/relations/auto_save_spec.rb +37 -17
  398. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
  399. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
  400. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
  401. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
  402. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
  403. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
  404. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
  405. data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
  406. data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
  407. data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
  408. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
  409. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
  410. data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
  411. data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
  412. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
  413. data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
  414. data/spec/mongoid/relations/builders_spec.rb +21 -21
  415. data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
  416. data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
  417. data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
  418. data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
  419. data/spec/mongoid/relations/cascading_spec.rb +16 -16
  420. data/spec/mongoid/relations/constraint_spec.rb +8 -7
  421. data/spec/mongoid/relations/conversions_spec.rb +16 -14
  422. data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
  423. data/spec/mongoid/relations/cyclic_spec.rb +18 -18
  424. data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
  425. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
  426. data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
  427. data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
  428. data/spec/mongoid/relations/eager_spec.rb +228 -0
  429. data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
  430. data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
  431. data/spec/mongoid/relations/embedded/many_spec.rb +393 -372
  432. data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
  433. data/spec/mongoid/relations/macros_spec.rb +108 -102
  434. data/spec/mongoid/relations/metadata_spec.rb +180 -255
  435. data/spec/mongoid/relations/options_spec.rb +1 -1
  436. data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
  437. data/spec/mongoid/relations/proxy_spec.rb +2 -2
  438. data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
  439. data/spec/mongoid/relations/referenced/many_spec.rb +434 -527
  440. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +352 -424
  441. data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
  442. data/spec/mongoid/relations/reflections_spec.rb +6 -6
  443. data/spec/mongoid/relations/synchronization_spec.rb +46 -50
  444. data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
  445. data/spec/mongoid/relations/touchable_spec.rb +333 -0
  446. data/spec/mongoid/relations_spec.rb +16 -15
  447. data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
  448. data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
  449. data/spec/mongoid/selectable_spec.rb +134 -0
  450. data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
  451. data/spec/mongoid/sessions/factory_spec.rb +49 -28
  452. data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
  453. data/spec/mongoid/sessions/options_spec.rb +107 -0
  454. data/spec/mongoid/sessions_spec.rb +289 -178
  455. data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
  456. data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
  457. data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
  458. data/spec/mongoid/tasks/database_spec.rb +160 -0
  459. data/spec/mongoid/threaded_spec.rb +17 -70
  460. data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
  461. data/spec/mongoid/timestamps/created_spec.rb +5 -5
  462. data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
  463. data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
  464. data/spec/mongoid/timestamps/updated_spec.rb +9 -13
  465. data/spec/mongoid/timestamps_spec.rb +9 -13
  466. data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
  467. data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
  468. data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
  469. data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
  470. data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
  471. data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
  472. data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
  473. data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
  474. data/spec/mongoid_spec.rb +8 -8
  475. data/spec/rails/mongoid_spec.rb +19 -335
  476. data/spec/spec_helper.rb +29 -13
  477. metadata +296 -283
  478. data/lib/mongoid/atomic/positionable.rb +0 -73
  479. data/lib/mongoid/components.rb +0 -92
  480. data/lib/mongoid/config/inflections.rb +0 -6
  481. data/lib/mongoid/contextual/eager.rb +0 -158
  482. data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
  483. data/lib/mongoid/identity_map.rb +0 -163
  484. data/lib/mongoid/json.rb +0 -16
  485. data/lib/mongoid/matchers/strategies.rb +0 -97
  486. data/lib/mongoid/matchers.rb +0 -32
  487. data/lib/mongoid/multi_parameter_attributes.rb +0 -105
  488. data/lib/mongoid/nested_attributes.rb +0 -78
  489. data/lib/mongoid/observer.rb +0 -192
  490. data/lib/mongoid/paranoia.rb +0 -136
  491. data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
  492. data/lib/mongoid/persistence/atomic/bit.rb +0 -35
  493. data/lib/mongoid/persistence/atomic/inc.rb +0 -45
  494. data/lib/mongoid/persistence/atomic/operation.rb +0 -154
  495. data/lib/mongoid/persistence/atomic/pop.rb +0 -32
  496. data/lib/mongoid/persistence/atomic/pull.rb +0 -32
  497. data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
  498. data/lib/mongoid/persistence/atomic/push.rb +0 -25
  499. data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
  500. data/lib/mongoid/persistence/atomic/rename.rb +0 -30
  501. data/lib/mongoid/persistence/atomic/sets.rb +0 -28
  502. data/lib/mongoid/persistence/atomic/unset.rb +0 -27
  503. data/lib/mongoid/persistence/atomic.rb +0 -231
  504. data/lib/mongoid/persistence/deletion.rb +0 -31
  505. data/lib/mongoid/persistence/insertion.rb +0 -38
  506. data/lib/mongoid/persistence/modification.rb +0 -35
  507. data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
  508. data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
  509. data/lib/mongoid/persistence/operations/insert.rb +0 -34
  510. data/lib/mongoid/persistence/operations/remove.rb +0 -33
  511. data/lib/mongoid/persistence/operations/update.rb +0 -59
  512. data/lib/mongoid/persistence/operations/upsert.rb +0 -28
  513. data/lib/mongoid/persistence/operations.rb +0 -214
  514. data/lib/mongoid/persistence/upsertion.rb +0 -31
  515. data/lib/mongoid/persistence.rb +0 -357
  516. data/lib/mongoid/unit_of_work.rb +0 -61
  517. data/lib/mongoid/versioning.rb +0 -217
  518. data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
  519. data/lib/rack/mongoid.rb +0 -2
  520. data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
  521. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
  522. data/spec/app/models/actor_observer.rb +0 -15
  523. data/spec/app/models/callback_recorder.rb +0 -25
  524. data/spec/app/models/paranoid_phone.rb +0 -25
  525. data/spec/app/models/paranoid_post.rb +0 -36
  526. data/spec/app/models/phone_observer.rb +0 -6
  527. data/spec/mongoid/attributes/processing_spec.rb +0 -149
  528. data/spec/mongoid/criterion/destructive_spec.rb +0 -101
  529. data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
  530. data/spec/mongoid/criterion/modification_spec.rb +0 -402
  531. data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
  532. data/spec/mongoid/identity_map_spec.rb +0 -564
  533. data/spec/mongoid/json_spec.rb +0 -33
  534. data/spec/mongoid/matchers/in_spec.rb +0 -25
  535. data/spec/mongoid/matchers/ne_spec.rb +0 -25
  536. data/spec/mongoid/matchers/nin_spec.rb +0 -25
  537. data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
  538. data/spec/mongoid/observer_spec.rb +0 -290
  539. data/spec/mongoid/paranoia_spec.rb +0 -759
  540. data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
  541. data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
  542. data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
  543. data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
  544. data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
  545. data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
  546. data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
  547. data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
  548. data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
  549. data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
  550. data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
  551. data/spec/mongoid/persistence/atomic_spec.rb +0 -216
  552. data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
  553. data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
  554. data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
  555. data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
  556. data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
  557. data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
  558. data/spec/mongoid/persistence/operations_spec.rb +0 -313
  559. data/spec/mongoid/persistence_spec.rb +0 -2279
  560. data/spec/mongoid/unit_of_work_spec.rb +0 -196
  561. data/spec/mongoid/versioning_spec.rb +0 -540
  562. data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -12,7 +12,6 @@ module Mongoid
12
12
 
13
13
  class_option :timestamps, type: :boolean
14
14
  class_option :parent, type: :string, desc: "The parent class for the generated model"
15
- class_option :versioning, type: :boolean, default: false, desc: "Enable mongoid versioning"
16
15
  class_option :collection, type: :string, desc: "The collection for storing model's documents"
17
16
 
18
17
  def create_model_file
@@ -6,9 +6,6 @@ class <%= class_name %><%= " < #{options[:parent].classify}" if options[:parent]
6
6
  <% if options[:timestamps] -%>
7
7
  include Mongoid::Timestamps
8
8
  <% end -%>
9
- <% if options[:versioning] -%>
10
- include Mongoid::Versioning
11
- <% end -%>
12
9
  <% if options[:collection] -%>
13
10
  store_in collection: "<%= options[:collection] %>"
14
11
  <% end -%>
@@ -11,44 +11,6 @@ module Mongoid
11
11
  File.expand_path("../#{base_name}/#{generator_name}/templates", __FILE__)
12
12
  end
13
13
  end
14
-
15
- class ActiveModel < ::Rails::Generators::ActiveModel
16
- def self.all(klass)
17
- "#{klass}.all"
18
- end
19
-
20
- def self.find(klass, params=nil)
21
- "#{klass}.find(#{params})"
22
- end
23
-
24
- def self.build(klass, params=nil)
25
- if params
26
- "#{klass}.new(#{params})"
27
- else
28
- "#{klass}.new"
29
- end
30
- end
31
-
32
- def save
33
- "#{name}.save"
34
- end
35
-
36
- def update_attributes(params=nil)
37
- "#{name}.update_attributes(#{params})"
38
- end
39
-
40
- def errors
41
- "#{name}.errors"
42
- end
43
-
44
- def delete
45
- "#{name}.delete"
46
- end
47
-
48
- def destroy
49
- "#{name}.destroy"
50
- end
51
- end
52
14
  end
53
15
  end
54
16
 
@@ -56,8 +18,9 @@ module Rails
56
18
  module Generators
57
19
  class GeneratedAttribute
58
20
  def type_class
59
- return "Time" if type.to_s == "datetime"
60
- return "String" if type.to_s == "text"
21
+ return "Time" if type == :datetime
22
+ return "String" if type == :text
23
+ return "Mongoid::Boolean" if type == :boolean
61
24
  type.to_s.camelcase
62
25
  end
63
26
  end
data/lib/rails/mongoid.rb CHANGED
@@ -3,98 +3,6 @@ module Rails
3
3
  module Mongoid
4
4
  extend self
5
5
 
6
- # Create indexes for each model given the provided globs and the class is
7
- # not embedded.
8
- #
9
- # @example Create all the indexes.
10
- # Rails::Mongoid.create_indexes("app/models/**/*.rb")
11
- #
12
- # @param [ Array<String> ] globs The file matching globs.
13
- #
14
- # @return [ Array<Class> ] The indexed models.
15
- #
16
- # @since 2.1.0
17
- def create_indexes(*globs)
18
- models(*globs).each do |model|
19
- next if model.index_options.empty?
20
- unless model.embedded?
21
- model.create_indexes
22
- logger.info("MONGOID: Created indexes on #{model}:")
23
- model.index_options.each_pair do |index, options|
24
- logger.info("MONGOID: Index: #{index}, Options: #{options}")
25
- end
26
- model
27
- else
28
- logger.info("MONGOID: Index ignored on: #{model}, please define in the root model.")
29
- nil
30
- end
31
- end.compact
32
- end
33
-
34
- # Remove indexes for each model given the provided globs and the class is
35
- # not embedded.
36
- #
37
- # @example Remove all the indexes.
38
- # Rails::Mongoid.create_indexes("app/models/**/*.rb")
39
- #
40
- # @param [ Array<String> ] globs The file matching globs.
41
- #
42
- # @return [ Array<Class> ] The un-indexed models.
43
- #
44
- def remove_indexes(*globs)
45
- models(*globs).each do |model|
46
- next if model.embedded?
47
- indexes = model.collection.indexes.map{ |doc| doc["name"] }
48
- indexes.delete_one("_id_")
49
- model.remove_indexes
50
- logger.info("MONGOID: Removing indexes on: #{model} for: #{indexes.join(', ')}.")
51
- model
52
- end.compact
53
- end
54
-
55
- # Return all models matching the globs or, if no globs are specified, all
56
- # possible models known from engines, the app, any gems, etc.
57
- #
58
- # @example Return *all* models. Return all models under app/models/
59
- # Rails::Mongoid.models
60
- # Rails::Mongoid.models("app/models/**/*.rb")
61
- #
62
- # @param [ String ] glob The file matching glob.
63
- #
64
- # @return [ Array<Class> ] The models.
65
- #
66
- def models(*globs)
67
- all_possible_models = globs.empty?
68
-
69
- if globs.empty?
70
- engines_models_paths = Rails.application.railties.engines.map{|engine| engine.paths["app/models"].expanded}
71
- root_models_paths = Rails.application.paths["app/models"]
72
- models_paths = engines_models_paths.push(root_models_paths).flatten
73
- globs.replace(models_paths.map{|path| "#{path}/**/*.rb"})
74
- end
75
-
76
- models = []
77
-
78
- globs.flatten.compact.each do |glob|
79
- Dir.glob(glob).map do |file|
80
- begin
81
- model = determine_model(file, logger)
82
- models.push(model)
83
- rescue => e
84
- logger.error(%Q{MONGOID: Failed to determine model from #{file}:
85
- #{e.class}:#{e.message}
86
- #{e.backtrace.join("\n")}
87
- })
88
- nil
89
- end
90
- end
91
- end
92
-
93
- models = (::Mongoid.models | models) if all_possible_models
94
-
95
- models.compact.sort_by { |model| model.name || '' }
96
- end
97
-
98
6
  # Use the application configuration to get every model and require it, so
99
7
  # that indexing and inheritance work in both development and production
100
8
  # with the same results.
@@ -144,35 +52,5 @@ module Rails
144
52
  Logger.new($stdout).warn(e.message)
145
53
  end
146
54
  end
147
-
148
- # Given the provided file name, determine the model and return the class.
149
- #
150
- # @example Determine the model from the file.
151
- # Rails::Mongoid.determine_model("app/models/person.rb")
152
- #
153
- # @param [ String ] file The filename.
154
- #
155
- # @return [ Class ] The model.
156
- #
157
- # @since 2.1.0
158
- def determine_model(file, logger)
159
- return nil unless file =~ /app\/models\/(.*).rb$/
160
- return nil unless logger
161
-
162
- model_path = $1.split('/')
163
- begin
164
- parts = model_path.map { |path| path.camelize }
165
- name = parts.join("::")
166
- klass = name.constantize
167
- rescue NameError, LoadError
168
- logger.info("MONGOID: Attempted to constantize #{name}, trying without namespacing.")
169
- klass = parts.last.constantize rescue nil
170
- end
171
- klass if klass && klass.ancestors.include?(::Mongoid::Document)
172
- end
173
-
174
- def logger
175
- @logger ||= Logger.new($stdout)
176
- end
177
55
  end
178
56
  end
@@ -19,7 +19,7 @@ end
19
19
  if invalid_version?
20
20
  message = %{
21
21
  Mongoid requires MRI version 1.9.3+ or JRuby 1.6.0+ running in 1.9 mode.
22
- You're current Ruby version is defined as #{RUBY_VERSION}. Please see:
22
+ Your current Ruby version is defined as #{RUBY_VERSION}. Please see:
23
23
  http://mongoid.org/en/mongoid/docs/tips.html#ruby for details.
24
24
  }
25
25
  raise_version_error(message)
@@ -1,13 +1,13 @@
1
1
  class Account
2
2
  include Mongoid::Document
3
3
 
4
- field :_id, type: String, default: ->{ name.try(:parameterize) }
4
+ field :_id, type: String, overwrite: true, default: ->{ name.try(:parameterize) }
5
5
 
6
6
  field :number, type: String
7
7
  field :balance, type: String
8
8
  field :nickname, type: String
9
9
  field :name, type: String
10
- field :balanced, type: Boolean, default: ->{ balance? ? true : false }
10
+ field :balanced, type: Mongoid::Boolean, default: ->{ balance? ? true : false }
11
11
 
12
12
  field :overridden, type: String
13
13
 
@@ -18,10 +18,6 @@ class Account
18
18
  has_and_belongs_to_many :agents
19
19
  has_one :comment, validate: false
20
20
 
21
- attr_accessible :nickname, as: [ :default, :admin ]
22
- attr_accessible :name, as: [ :default, :admin ]
23
- attr_accessible :balance, as: :default
24
-
25
21
  validates_presence_of :name
26
22
  validates_presence_of :nickname, on: :upsert
27
23
  validates_length_of :name, maximum: 10, on: :create
@@ -1,12 +1,13 @@
1
1
  class Acolyte
2
2
  include Mongoid::Document
3
+ include Mongoid::Attributes::Dynamic
3
4
  field :status
4
5
  field :name
5
6
 
6
7
  embeds_many :versions, as: :memorable
7
8
  belongs_to :church
8
9
 
9
- default_scope asc(:name)
10
+ default_scope ->{ asc(:name) }
10
11
  scope :active, ->{ where(status: "active") }
11
12
  scope :named, ->{ where(:name.exists => true) }
12
13
 
@@ -7,7 +7,6 @@ class Actor
7
7
  accepts_nested_attributes_for :things, allow_destroy: true
8
8
 
9
9
  define_model_callbacks :custom
10
- observable :custom
11
10
 
12
11
  def do_something
13
12
  run_callbacks(:custom) do
@@ -1,21 +1,26 @@
1
1
  class Address
2
2
  include Mongoid::Document
3
3
 
4
- field :_id, type: String, default: ->{ street.try(:parameterize) }
4
+ field :_id, type: String, overwrite: true, default: ->{ street.try(:parameterize) }
5
5
 
6
6
  attr_accessor :mode
7
7
 
8
8
  field :address_type
9
9
  field :number, type: Integer
10
+ field :no, type: Integer
11
+ field :h, as: :house, type: Integer
10
12
  field :street
11
13
  field :city
12
14
  field :state
13
15
  field :post_code
14
16
  field :parent_title
15
17
  field :services, type: Array
18
+ field :aliases, as: :a, type: Array
19
+ field :test, type: Array
16
20
  field :latlng, type: Array
17
21
  field :map, type: Hash
18
22
  field :move_in, type: DateTime
23
+ field :end_date, type: Date
19
24
  field :s, type: String, as: :suite
20
25
  field :name, localize: true
21
26
 
@@ -38,8 +43,8 @@ class Address
38
43
  belongs_to :account
39
44
  belongs_to :band
40
45
 
41
- scope :without_postcode, where(postcode: nil)
42
- scope :rodeo, where(street: "Rodeo Dr") do
46
+ scope :without_postcode, ->{ where(postcode: nil) }
47
+ scope :rodeo, ->{ where(street: "Rodeo Dr") } do
43
48
  def mansion?
44
49
  all? { |address| address.street == "Rodeo Dr" }
45
50
  end
@@ -1,7 +1,7 @@
1
1
  class Animal
2
2
  include Mongoid::Document
3
3
 
4
- field :_id, type: String, default: ->{ name.try(:parameterize) }
4
+ field :_id, type: String, overwrite: true, default: ->{ name.try(:parameterize) }
5
5
 
6
6
  field :name
7
7
  field :height, type: Integer
@@ -1,7 +1,7 @@
1
1
  class Appointment
2
2
  include Mongoid::Document
3
- field :active, type: Boolean, default: true
4
- field :timed, type: Boolean, default: true
3
+ field :active, type: Mongoid::Boolean, default: true
4
+ field :timed, type: Mongoid::Boolean, default: true
5
5
  embedded_in :person
6
- default_scope where(active: true)
6
+ default_scope ->{ where(active: true) }
7
7
  end
@@ -2,12 +2,9 @@ class Article
2
2
  include Mongoid::Document
3
3
 
4
4
  field :title, type: String
5
- field :is_rss, type: Boolean, default: false
5
+ field :is_rss, type: Mongoid::Boolean, default: false
6
6
  field :user_login, type: String
7
7
 
8
- attr_accessible :title, as: [:default, :parser]
9
- attr_accessible :is_rss, as: :parser
10
- attr_accessible :user_login
11
8
  has_and_belongs_to_many :tags, validate: false
12
9
  has_and_belongs_to_many :preferences, inverse_of: nil, validate: false
13
10
  end
@@ -0,0 +1,5 @@
1
+ class Audio
2
+ include Mongoid::Document
3
+ field :likes, type: Integer
4
+ default_scope ->{ where(:likes.gt => 100) }
5
+ end
@@ -1,6 +1,4 @@
1
1
  class Author
2
2
  include Mongoid::Document
3
3
  field :name, type: String
4
-
5
- belongs_to :paranoid_post
6
4
  end
@@ -1,7 +1,8 @@
1
1
  class Band
2
2
  include Mongoid::Document
3
+ include Mongoid::Attributes::Dynamic
3
4
  field :name, type: String
4
- field :active, type: Boolean, default: true
5
+ field :active, type: Mongoid::Boolean, default: true
5
6
  field :origin, type: String
6
7
  field :genres, type: Array
7
8
  field :member_count, type: Integer
@@ -9,7 +10,7 @@ class Band
9
10
  field :likes, type: Integer
10
11
  field :views, type: Integer
11
12
  field :rating, type: Float
12
- field :upserted, type: Boolean, default: false
13
+ field :upserted, type: Mongoid::Boolean, default: false
13
14
  field :created, type: DateTime
14
15
  field :sales, type: BigDecimal
15
16
  field :y, as: :years, type: Integer
@@ -1,5 +1,6 @@
1
1
  class Bar
2
2
  include Mongoid::Document
3
+ include Mongoid::Attributes::Dynamic
3
4
  field :name, type: String
4
5
  field :location, type: Array
5
6
  field :lat_lng, type: LatLng
@@ -1,5 +1,6 @@
1
1
  class Book
2
2
  include Mongoid::Document
3
+ include Mongoid::Attributes::Dynamic
3
4
  field :title, type: String
4
5
  field :chapters, type: Integer
5
6
  belongs_to :series
@@ -1,7 +1,5 @@
1
1
  class Building
2
2
  include Mongoid::Document
3
- attr_accessible
4
- attr_accessible :building_address, :contractors, as: :admin
5
3
  embeds_one :building_address
6
4
  embeds_many :contractors
7
5
  end
@@ -1,7 +1,5 @@
1
1
  class BuildingAddress
2
2
  include Mongoid::Document
3
- attr_accessible
4
- attr_accessible :city, as: :admin
5
3
  embedded_in :building
6
4
  field :city, type: String
7
5
  end
@@ -1,6 +1,6 @@
1
1
  class Bus
2
2
  include Mongoid::Document
3
- field :saturday, type: Boolean, default: false
3
+ field :saturday, type: Mongoid::Boolean, default: false
4
4
  field :departure_time, type: Time
5
5
  field :number, type: Integer
6
6
  embedded_in :circuit
@@ -18,7 +18,7 @@ class Canvas
18
18
 
19
19
  class Test < Canvas
20
20
 
21
- field :foo, type: String, default: ->{ "overridden" }
21
+ field :foo, type: String, overwrite: true, default: ->{ "overridden" }
22
22
  end
23
23
  end
24
24
 
@@ -1,7 +1,5 @@
1
1
  class Contractor
2
2
  include Mongoid::Document
3
- attr_accessible
4
- attr_accessible :name, as: :admin
5
3
  embedded_in :building
6
4
  field :name, type: String
7
5
  end
@@ -1,7 +1,7 @@
1
1
  class CountryCode
2
2
  include Mongoid::Document
3
3
 
4
- field :_id, type: Integer, default: ->{ code }
4
+ field :_id, type: Integer, overwrite: true, default: ->{ code }
5
5
 
6
6
  field :code, type: Integer
7
7
  embedded_in :phone_number, class_name: "Phone"
@@ -2,8 +2,8 @@ class Definition
2
2
  include Mongoid::Document
3
3
  field :description, type: String
4
4
  field :p, as: :part, type: String
5
- field :regular, type: Boolean
5
+ field :regular, type: Mongoid::Boolean
6
6
  field :syn, as: :synonyms, localize: true, type: String
7
- field :active, type: Boolean, localize: true, default: true
7
+ field :active, type: Mongoid::Boolean, localize: true, default: true
8
8
  embedded_in :word
9
9
  end
@@ -3,5 +3,5 @@ class Dog
3
3
  field :name, type: String
4
4
  has_and_belongs_to_many :breeds
5
5
  has_and_belongs_to_many :fire_hydrants, primary_key: :location
6
- default_scope asc(:name)
6
+ default_scope ->{ asc(:name) }
7
7
  end
@@ -0,0 +1,9 @@
1
+ class Draft
2
+ include Mongoid::Document
3
+
4
+ field :text
5
+
6
+ recursively_embeds_one
7
+
8
+ index text: 1
9
+ end
@@ -0,0 +1,4 @@
1
+ class Dragon
2
+ include Mongoid::Document
3
+ has_and_belongs_to_many :dungeons
4
+ end
@@ -1,8 +1,6 @@
1
1
  class Drug
2
2
  include Mongoid::Document
3
3
  field :name, type: String
4
- field :generic, type: Boolean
4
+ field :generic, type: Mongoid::Boolean
5
5
  belongs_to :person, counter_cache: true
6
- attr_accessible :name, as: [ :default, :admin ]
7
- attr_accessible :person_id
8
6
  end
@@ -0,0 +1,4 @@
1
+ class Dungeon
2
+ include Mongoid::Document
3
+ has_and_belongs_to_many :dragons
4
+ end
@@ -0,0 +1,5 @@
1
+ class Edit
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps::Updated
4
+ embedded_in :wiki_page, touch: true
5
+ end
@@ -0,0 +1,7 @@
1
+ class Even
2
+ include Mongoid::Document
3
+ field :name
4
+
5
+ belongs_to :parent, class_name: 'Odd', inverse_of: :evens
6
+ has_many :odds, inverse_of: :parent, autosave: true
7
+ end
@@ -17,6 +17,6 @@ class Event
17
17
  end
18
18
  end
19
19
 
20
- scope :best, where(:kind.in => [ "party", "concert" ])
20
+ scope :best, ->{ where(:kind.in => [ "party", "concert" ]) }
21
21
  scope :by_kind, ->(kind){ where(:kind.in => [kind]) }
22
22
  end
@@ -1,4 +1,5 @@
1
1
  class Filesystem
2
2
  include Mongoid::Document
3
+ include Mongoid::Attributes::Dynamic
3
4
  embedded_in :server
4
5
  end
@@ -1,6 +1,5 @@
1
1
  class Fish
2
2
  include Mongoid::Document
3
- include Mongoid::Paranoia
4
3
 
5
4
  def self.fresh
6
5
  where(fresh: true)
@@ -2,6 +2,7 @@ module Fruits
2
2
  class Apple
3
3
  include Mongoid::Document
4
4
  has_many :bananas, class_name: "Fruits::Banana"
5
+ has_many :fruits_melons, class_name: "Fruits::Melon"
5
6
  recursively_embeds_many
6
7
  end
7
8
 
@@ -10,6 +11,11 @@ module Fruits
10
11
  belongs_to :apple, class_name: "Fruits::Apple"
11
12
  end
12
13
 
14
+ class Melon
15
+ include Mongoid::Document
16
+ belongs_to :fruit_apple, class_name: "Fruits::Apple"
17
+ end
18
+
13
19
  class Pineapple
14
20
  include Mongoid::Document
15
21
  recursively_embeds_many cascade_callbacks: true
@@ -13,8 +13,6 @@ class Game
13
13
 
14
14
  validates_format_of :name, without: /\$\$\$/
15
15
 
16
- attr_protected :_id
17
-
18
16
  set_callback(:initialize, :after) do |document|
19
17
  write_attribute("name", "Testing") unless name
20
18
  end
@@ -2,7 +2,5 @@ class House
2
2
  include Mongoid::Document
3
3
  field :name, type: String
4
4
  field :model, type: String
5
- attr_accessible :name, as: [ :default, :admin ]
6
-
7
- default_scope asc(:name)
5
+ default_scope ->{ asc(:name) }
8
6
  end
@@ -1,12 +1,8 @@
1
1
  class Item
2
2
  include Mongoid::Document
3
3
  field :title, type: String
4
- field :is_rss, type: Boolean, default: false
4
+ field :is_rss, type: Mongoid::Boolean, default: false
5
5
  field :user_login, type: String
6
-
7
- attr_protected :title, as: [:default, :parser]
8
- attr_protected :is_rss, as: :parser
9
- attr_protected :user_login
10
6
  end
11
7
 
12
8
  require "app/models/sub_item"
@@ -2,6 +2,6 @@ class Jar
2
2
  include Mongoid::Document
3
3
  include Mongoid::Timestamps::Updated
4
4
 
5
- field :_id, type: Integer
5
+ field :_id, type: Integer, overwrite: true
6
6
  has_many :cookies, class_name: "Cookie"
7
7
  end
@@ -3,10 +3,10 @@ class Label
3
3
  include Mongoid::Timestamps::Updated::Short
4
4
 
5
5
  field :name, type: String
6
- field :after_create_called, type: Boolean, default: false
7
- field :after_save_called, type: Boolean, default: false
8
- field :after_update_called, type: Boolean, default: false
9
- field :after_validation_called, type: Boolean, default: false
6
+ field :after_create_called, type: Mongoid::Boolean, default: false
7
+ field :after_save_called, type: Mongoid::Boolean, default: false
8
+ field :after_update_called, type: Mongoid::Boolean, default: false
9
+ field :after_validation_called, type: Mongoid::Boolean, default: false
10
10
 
11
11
  embedded_in :artist
12
12
  embedded_in :band
@@ -2,5 +2,5 @@ class LineItem
2
2
  include Mongoid::Document
3
3
  embedded_in :purchase
4
4
  belongs_to :product, polymorphic: true
5
- validates :product, presence: true
5
+ validates :product, presence: true, uniqueness: { scope: :product }
6
6
  end
@@ -1,7 +1,7 @@
1
1
  class Login
2
2
  include Mongoid::Document
3
3
 
4
- field :_id, type: String, default: ->{ username }
4
+ field :_id, type: String, overwrite: true, default: ->{ username }
5
5
 
6
6
  field :username, type: String
7
7
  field :application_id, type: Integer
@@ -0,0 +1,8 @@
1
+ class Message
2
+ include Mongoid::Document
3
+
4
+ field :body, type: String
5
+
6
+ embedded_in :person
7
+ has_and_belongs_to_many :receviers, class_name: "Person", inverse_of: nil
8
+ end