mongoid 2.8.1 → 3.0.0.rc

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 (351) hide show
  1. data/CHANGELOG.md +802 -58
  2. data/LICENSE +1 -1
  3. data/README.md +10 -11
  4. data/Rakefile +2 -8
  5. data/lib/config/locales/en.yml +441 -51
  6. data/lib/mongoid.rb +24 -39
  7. data/lib/mongoid/atomic.rb +16 -33
  8. data/lib/mongoid/atomic/modifiers.rb +2 -2
  9. data/lib/mongoid/atomic/paths/embedded.rb +4 -5
  10. data/lib/mongoid/atomic/paths/embedded/many.rb +6 -6
  11. data/lib/mongoid/atomic/paths/embedded/one.rb +5 -5
  12. data/lib/mongoid/atomic/paths/root.rb +4 -5
  13. data/lib/mongoid/attributes.rb +95 -32
  14. data/lib/mongoid/attributes/processing.rb +14 -10
  15. data/lib/mongoid/attributes/readonly.rb +56 -0
  16. data/lib/mongoid/callbacks.rb +90 -27
  17. data/lib/mongoid/collections/retry.rb +2 -3
  18. data/lib/mongoid/components.rb +11 -23
  19. data/lib/mongoid/config.rb +87 -233
  20. data/lib/mongoid/config/environment.rb +5 -6
  21. data/lib/mongoid/config/inflections.rb +6 -0
  22. data/lib/mongoid/config/options.rb +1 -1
  23. data/lib/mongoid/config/validators.rb +3 -0
  24. data/lib/mongoid/config/validators/option.rb +25 -0
  25. data/lib/mongoid/config/validators/session.rb +140 -0
  26. data/lib/mongoid/contextual.rb +50 -0
  27. data/lib/mongoid/contextual/aggregable/memory.rb +98 -0
  28. data/lib/mongoid/contextual/aggregable/mongo.rb +181 -0
  29. data/lib/mongoid/contextual/atomic.rb +179 -0
  30. data/lib/mongoid/contextual/command.rb +43 -0
  31. data/lib/mongoid/contextual/find_and_modify.rb +66 -0
  32. data/lib/mongoid/contextual/map_reduce.rb +273 -0
  33. data/lib/mongoid/contextual/memory.rb +383 -0
  34. data/lib/mongoid/contextual/mongo.rb +543 -0
  35. data/lib/mongoid/copyable.rb +3 -34
  36. data/lib/mongoid/criteria.rb +436 -250
  37. data/lib/mongoid/criterion/inspection.rb +14 -8
  38. data/lib/mongoid/criterion/scoping.rb +114 -44
  39. data/lib/mongoid/dirty.rb +152 -67
  40. data/lib/mongoid/document.rb +69 -50
  41. data/lib/mongoid/errors.rb +22 -1
  42. data/lib/mongoid/errors/ambiguous_relationship.rb +51 -0
  43. data/lib/mongoid/errors/callback.rb +5 -6
  44. data/lib/mongoid/errors/delete_restriction.rb +29 -0
  45. data/lib/mongoid/errors/document_not_found.rb +98 -17
  46. data/lib/mongoid/errors/eager_load.rb +3 -6
  47. data/lib/mongoid/errors/invalid_collection.rb +3 -3
  48. data/lib/mongoid/errors/invalid_config_option.rb +27 -0
  49. data/lib/mongoid/errors/invalid_database.rb +3 -3
  50. data/lib/mongoid/errors/invalid_field.rb +54 -8
  51. data/lib/mongoid/errors/invalid_field_option.rb +35 -0
  52. data/lib/mongoid/errors/invalid_find.rb +3 -3
  53. data/lib/mongoid/errors/invalid_index.rb +28 -0
  54. data/lib/mongoid/errors/invalid_options.rb +4 -4
  55. data/lib/mongoid/errors/invalid_scope.rb +24 -0
  56. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +38 -0
  57. data/lib/mongoid/errors/invalid_storage_options.rb +27 -0
  58. data/lib/mongoid/errors/invalid_time.rb +3 -6
  59. data/lib/mongoid/errors/inverse_not_found.rb +29 -0
  60. data/lib/mongoid/errors/mixed_relations.rb +4 -9
  61. data/lib/mongoid/errors/mixed_session_configuration.rb +28 -0
  62. data/lib/mongoid/errors/mongoid_error.rb +54 -3
  63. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +28 -0
  64. data/lib/mongoid/errors/no_default_session.rb +23 -0
  65. data/lib/mongoid/errors/no_environment.rb +3 -3
  66. data/lib/mongoid/errors/no_map_reduce_output.rb +24 -0
  67. data/lib/mongoid/errors/no_parent.rb +24 -0
  68. data/lib/mongoid/errors/no_session_config.rb +22 -0
  69. data/lib/mongoid/errors/no_session_database.rb +27 -0
  70. data/lib/mongoid/errors/no_session_hosts.rb +27 -0
  71. data/lib/mongoid/errors/no_sessions_config.rb +20 -0
  72. data/lib/mongoid/errors/readonly_attribute.rb +25 -0
  73. data/lib/mongoid/errors/scope_overwrite.rb +4 -4
  74. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +4 -4
  75. data/lib/mongoid/errors/unknown_attribute.rb +25 -0
  76. data/lib/mongoid/errors/unsaved_document.rb +4 -8
  77. data/lib/mongoid/errors/unsupported_javascript.rb +27 -0
  78. data/lib/mongoid/errors/unsupported_version.rb +4 -4
  79. data/lib/mongoid/errors/validations.rb +7 -6
  80. data/lib/mongoid/errors/versioning_not_on_root.rb +23 -0
  81. data/lib/mongoid/extensions.rb +28 -76
  82. data/lib/mongoid/extensions/array.rb +127 -0
  83. data/lib/mongoid/extensions/big_decimal.rb +42 -0
  84. data/lib/mongoid/extensions/boolean.rb +24 -0
  85. data/lib/mongoid/extensions/date.rb +70 -0
  86. data/lib/mongoid/extensions/date_time.rb +68 -0
  87. data/lib/mongoid/extensions/false_class.rb +26 -0
  88. data/lib/mongoid/extensions/float.rb +44 -0
  89. data/lib/mongoid/extensions/hash.rb +91 -0
  90. data/lib/mongoid/extensions/integer.rb +54 -0
  91. data/lib/mongoid/extensions/module.rb +28 -0
  92. data/lib/mongoid/extensions/nil_class.rb +21 -0
  93. data/lib/mongoid/extensions/object.rb +188 -0
  94. data/lib/mongoid/extensions/object_id.rb +53 -0
  95. data/lib/mongoid/extensions/range.rb +55 -0
  96. data/lib/mongoid/extensions/regexp.rb +27 -0
  97. data/lib/mongoid/extensions/set.rb +55 -0
  98. data/lib/mongoid/extensions/string.rb +155 -0
  99. data/lib/mongoid/extensions/symbol.rb +54 -0
  100. data/lib/mongoid/extensions/time.rb +78 -0
  101. data/lib/mongoid/extensions/time_with_zone.rb +55 -0
  102. data/lib/mongoid/extensions/true_class.rb +26 -0
  103. data/lib/mongoid/factory.rb +1 -1
  104. data/lib/mongoid/fields.rb +129 -194
  105. data/lib/mongoid/fields/foreign_key.rb +134 -0
  106. data/lib/mongoid/fields/localized.rb +73 -0
  107. data/lib/mongoid/fields/standard.rb +268 -0
  108. data/lib/mongoid/fields/validators.rb +2 -0
  109. data/lib/mongoid/fields/validators/macro.rb +83 -0
  110. data/lib/mongoid/finders.rb +42 -43
  111. data/lib/mongoid/hierarchy.rb +25 -14
  112. data/lib/mongoid/identity_map.rb +31 -19
  113. data/lib/mongoid/indexes.rb +66 -15
  114. data/lib/mongoid/indexes/validators/options.rb +80 -0
  115. data/lib/mongoid/inspection.rb +1 -1
  116. data/lib/mongoid/javascript.rb +1 -1
  117. data/lib/mongoid/json.rb +2 -2
  118. data/lib/mongoid/loggable.rb +69 -0
  119. data/lib/mongoid/matchers.rb +1 -1
  120. data/lib/mongoid/matchers/all.rb +7 -8
  121. data/lib/mongoid/matchers/and.rb +3 -3
  122. data/lib/mongoid/matchers/default.rb +6 -4
  123. data/lib/mongoid/matchers/exists.rb +2 -2
  124. data/lib/mongoid/matchers/gt.rb +2 -2
  125. data/lib/mongoid/matchers/gte.rb +2 -2
  126. data/lib/mongoid/matchers/in.rb +3 -7
  127. data/lib/mongoid/matchers/lt.rb +2 -2
  128. data/lib/mongoid/matchers/lte.rb +2 -2
  129. data/lib/mongoid/matchers/ne.rb +2 -2
  130. data/lib/mongoid/matchers/nin.rb +2 -2
  131. data/lib/mongoid/matchers/or.rb +2 -2
  132. data/lib/mongoid/matchers/size.rb +2 -2
  133. data/lib/mongoid/matchers/strategies.rb +3 -3
  134. data/lib/mongoid/multi_parameter_attributes.rb +8 -10
  135. data/lib/mongoid/nested_attributes.rb +17 -9
  136. data/lib/mongoid/observer.rb +1 -2
  137. data/lib/mongoid/paranoia.rb +13 -18
  138. data/lib/mongoid/persistence.rb +43 -39
  139. data/lib/mongoid/persistence/atomic.rb +2 -2
  140. data/lib/mongoid/persistence/atomic/add_to_set.rb +5 -9
  141. data/lib/mongoid/persistence/atomic/bit.rb +5 -7
  142. data/lib/mongoid/persistence/atomic/inc.rb +5 -7
  143. data/lib/mongoid/persistence/atomic/operation.rb +45 -6
  144. data/lib/mongoid/persistence/atomic/pop.rb +5 -7
  145. data/lib/mongoid/persistence/atomic/pull.rb +5 -7
  146. data/lib/mongoid/persistence/atomic/pull_all.rb +5 -7
  147. data/lib/mongoid/persistence/atomic/push.rb +4 -10
  148. data/lib/mongoid/persistence/atomic/push_all.rb +4 -10
  149. data/lib/mongoid/persistence/atomic/rename.rb +6 -7
  150. data/lib/mongoid/persistence/atomic/sets.rb +5 -7
  151. data/lib/mongoid/persistence/atomic/unset.rb +4 -5
  152. data/lib/mongoid/persistence/deletion.rb +2 -2
  153. data/lib/mongoid/persistence/insertion.rb +10 -16
  154. data/lib/mongoid/persistence/modification.rb +5 -9
  155. data/lib/mongoid/persistence/operations.rb +6 -19
  156. data/lib/mongoid/persistence/operations/embedded/insert.rb +7 -6
  157. data/lib/mongoid/persistence/operations/embedded/remove.rb +5 -5
  158. data/lib/mongoid/persistence/operations/insert.rb +4 -4
  159. data/lib/mongoid/persistence/operations/remove.rb +4 -4
  160. data/lib/mongoid/persistence/operations/update.rb +5 -5
  161. data/lib/mongoid/railtie.rb +26 -11
  162. data/lib/mongoid/railties/database.rake +22 -108
  163. data/lib/mongoid/relations.rb +4 -6
  164. data/lib/mongoid/relations/accessors.rb +119 -19
  165. data/lib/mongoid/relations/auto_save.rb +59 -5
  166. data/lib/mongoid/relations/binding.rb +211 -2
  167. data/lib/mongoid/relations/bindings/embedded/in.rb +16 -22
  168. data/lib/mongoid/relations/bindings/embedded/many.rb +9 -50
  169. data/lib/mongoid/relations/bindings/embedded/one.rb +10 -16
  170. data/lib/mongoid/relations/bindings/referenced/in.rb +31 -57
  171. data/lib/mongoid/relations/bindings/referenced/many.rb +8 -20
  172. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +15 -19
  173. data/lib/mongoid/relations/bindings/referenced/one.rb +10 -24
  174. data/lib/mongoid/relations/builder.rb +3 -3
  175. data/lib/mongoid/relations/builders.rb +19 -16
  176. data/lib/mongoid/relations/builders/embedded/in.rb +5 -5
  177. data/lib/mongoid/relations/builders/embedded/many.rb +12 -12
  178. data/lib/mongoid/relations/builders/embedded/one.rb +6 -6
  179. data/lib/mongoid/relations/builders/nested_attributes/many.rb +8 -8
  180. data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -4
  181. data/lib/mongoid/relations/builders/referenced/in.rb +4 -4
  182. data/lib/mongoid/relations/builders/referenced/many.rb +5 -5
  183. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +7 -5
  184. data/lib/mongoid/relations/builders/referenced/one.rb +5 -5
  185. data/lib/mongoid/relations/cascading.rb +6 -4
  186. data/lib/mongoid/relations/cascading/delete.rb +3 -5
  187. data/lib/mongoid/relations/cascading/destroy.rb +3 -3
  188. data/lib/mongoid/relations/cascading/nullify.rb +3 -3
  189. data/lib/mongoid/relations/cascading/restrict.rb +37 -0
  190. data/lib/mongoid/relations/constraint.rb +4 -3
  191. data/lib/mongoid/relations/conversions.rb +5 -6
  192. data/lib/mongoid/relations/cyclic.rb +7 -7
  193. data/lib/mongoid/relations/embedded/batchable.rb +346 -0
  194. data/lib/mongoid/relations/embedded/in.rb +23 -12
  195. data/lib/mongoid/relations/embedded/many.rb +99 -161
  196. data/lib/mongoid/relations/embedded/one.rb +25 -14
  197. data/lib/mongoid/relations/macros.rb +105 -61
  198. data/lib/mongoid/relations/many.rb +93 -14
  199. data/lib/mongoid/relations/metadata.rb +200 -45
  200. data/lib/mongoid/relations/nested_builder.rb +3 -5
  201. data/lib/mongoid/relations/one.rb +2 -2
  202. data/lib/mongoid/relations/options.rb +2 -2
  203. data/lib/mongoid/relations/polymorphic.rb +9 -9
  204. data/lib/mongoid/relations/proxy.rb +60 -31
  205. data/lib/mongoid/relations/referenced/in.rb +40 -15
  206. data/lib/mongoid/relations/referenced/many.rb +117 -132
  207. data/lib/mongoid/relations/referenced/many_to_many.rb +101 -46
  208. data/lib/mongoid/relations/referenced/one.rb +34 -13
  209. data/lib/mongoid/relations/reflections.rb +3 -3
  210. data/lib/mongoid/relations/synchronization.rb +19 -23
  211. data/lib/mongoid/relations/targets/enumerable.rb +86 -57
  212. data/lib/mongoid/reloading.rb +12 -14
  213. data/lib/mongoid/scoping.rb +329 -0
  214. data/lib/mongoid/serialization.rb +8 -27
  215. data/lib/mongoid/sessions.rb +359 -0
  216. data/lib/mongoid/sessions/factory.rb +106 -0
  217. data/lib/mongoid/sessions/mongo_uri.rb +93 -0
  218. data/lib/mongoid/sessions/validators.rb +2 -0
  219. data/lib/mongoid/sessions/validators/storage.rb +49 -0
  220. data/lib/mongoid/sharding.rb +6 -6
  221. data/lib/mongoid/state.rb +6 -7
  222. data/lib/mongoid/threaded.rb +167 -59
  223. data/lib/mongoid/threaded/lifecycle.rb +21 -22
  224. data/lib/mongoid/threaded/sessions.rb +0 -0
  225. data/lib/mongoid/timestamps.rb +1 -1
  226. data/lib/mongoid/timestamps/created.rb +8 -4
  227. data/lib/mongoid/timestamps/timeless.rb +6 -4
  228. data/lib/mongoid/timestamps/updated.rb +3 -3
  229. data/lib/mongoid/unit_of_work.rb +61 -0
  230. data/lib/mongoid/validations.rb +27 -19
  231. data/lib/mongoid/validations/associated.rb +2 -2
  232. data/lib/mongoid/validations/format.rb +2 -2
  233. data/lib/mongoid/validations/presence.rb +31 -5
  234. data/lib/mongoid/validations/uniqueness.rb +9 -12
  235. data/lib/mongoid/version.rb +2 -2
  236. data/lib/mongoid/versioning.rb +25 -26
  237. data/lib/rack/mongoid/middleware/identity_map.rb +3 -3
  238. data/lib/rails/generators/mongoid/config/config_generator.rb +1 -1
  239. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +59 -19
  240. data/lib/rails/generators/mongoid/model/model_generator.rb +7 -7
  241. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +2 -2
  242. data/lib/rails/generators/mongoid/observer/observer_generator.rb +4 -4
  243. data/lib/rails/generators/mongoid_generator.rb +5 -5
  244. data/lib/rails/mongoid.rb +69 -25
  245. metadata +110 -137
  246. checksums.yaml +0 -7
  247. data/lib/config/locales/bg.yml +0 -61
  248. data/lib/config/locales/de.yml +0 -61
  249. data/lib/config/locales/en-GB.yml +0 -64
  250. data/lib/config/locales/es.yml +0 -59
  251. data/lib/config/locales/fr.yml +0 -62
  252. data/lib/config/locales/hi.yml +0 -53
  253. data/lib/config/locales/hu.yml +0 -64
  254. data/lib/config/locales/id.yml +0 -62
  255. data/lib/config/locales/it.yml +0 -59
  256. data/lib/config/locales/ja.yml +0 -57
  257. data/lib/config/locales/kr.yml +0 -54
  258. data/lib/config/locales/nl.yml +0 -61
  259. data/lib/config/locales/pl.yml +0 -59
  260. data/lib/config/locales/pt-BR.yml +0 -60
  261. data/lib/config/locales/pt.yml +0 -60
  262. data/lib/config/locales/ro.yml +0 -66
  263. data/lib/config/locales/ru.yml +0 -61
  264. data/lib/config/locales/sv.yml +0 -60
  265. data/lib/config/locales/vi.yml +0 -62
  266. data/lib/config/locales/zh-CN.yml +0 -53
  267. data/lib/mongoid/collection.rb +0 -157
  268. data/lib/mongoid/collections.rb +0 -120
  269. data/lib/mongoid/collections/master.rb +0 -45
  270. data/lib/mongoid/collections/operations.rb +0 -44
  271. data/lib/mongoid/config/database.rb +0 -181
  272. data/lib/mongoid/config/replset_database.rb +0 -80
  273. data/lib/mongoid/contexts.rb +0 -25
  274. data/lib/mongoid/contexts/enumerable.rb +0 -313
  275. data/lib/mongoid/contexts/enumerable/sort.rb +0 -43
  276. data/lib/mongoid/contexts/mongo.rb +0 -487
  277. data/lib/mongoid/criterion/builder.rb +0 -34
  278. data/lib/mongoid/criterion/complex.rb +0 -84
  279. data/lib/mongoid/criterion/creational.rb +0 -34
  280. data/lib/mongoid/criterion/exclusion.rb +0 -110
  281. data/lib/mongoid/criterion/inclusion.rb +0 -290
  282. data/lib/mongoid/criterion/optional.rb +0 -259
  283. data/lib/mongoid/criterion/selector.rb +0 -177
  284. data/lib/mongoid/cursor.rb +0 -88
  285. data/lib/mongoid/default_scope.rb +0 -36
  286. data/lib/mongoid/errors/invalid_type.rb +0 -25
  287. data/lib/mongoid/extensions/array/deep_copy.rb +0 -25
  288. data/lib/mongoid/extensions/array/deletion.rb +0 -29
  289. data/lib/mongoid/extensions/false_class/equality.rb +0 -26
  290. data/lib/mongoid/extensions/hash/criteria_helpers.rb +0 -47
  291. data/lib/mongoid/extensions/hash/deep_copy.rb +0 -25
  292. data/lib/mongoid/extensions/hash/scoping.rb +0 -25
  293. data/lib/mongoid/extensions/integer/checks.rb +0 -23
  294. data/lib/mongoid/extensions/nil/collectionization.rb +0 -23
  295. data/lib/mongoid/extensions/object/checks.rb +0 -29
  296. data/lib/mongoid/extensions/object/deep_copy.rb +0 -21
  297. data/lib/mongoid/extensions/object/reflections.rb +0 -48
  298. data/lib/mongoid/extensions/object/substitutable.rb +0 -15
  299. data/lib/mongoid/extensions/object/yoda.rb +0 -44
  300. data/lib/mongoid/extensions/object_id/conversions.rb +0 -60
  301. data/lib/mongoid/extensions/proc/scoping.rb +0 -25
  302. data/lib/mongoid/extensions/string/checks.rb +0 -36
  303. data/lib/mongoid/extensions/string/conversions.rb +0 -22
  304. data/lib/mongoid/extensions/string/inflections.rb +0 -118
  305. data/lib/mongoid/extensions/symbol/checks.rb +0 -23
  306. data/lib/mongoid/extensions/symbol/inflections.rb +0 -67
  307. data/lib/mongoid/extensions/true_class/equality.rb +0 -26
  308. data/lib/mongoid/extras.rb +0 -31
  309. data/lib/mongoid/fields/internal/array.rb +0 -77
  310. data/lib/mongoid/fields/internal/big_decimal.rb +0 -63
  311. data/lib/mongoid/fields/internal/bignum.rb +0 -10
  312. data/lib/mongoid/fields/internal/binary.rb +0 -11
  313. data/lib/mongoid/fields/internal/boolean.rb +0 -58
  314. data/lib/mongoid/fields/internal/date.rb +0 -51
  315. data/lib/mongoid/fields/internal/date_time.rb +0 -28
  316. data/lib/mongoid/fields/internal/false_class.rb +0 -10
  317. data/lib/mongoid/fields/internal/fixnum.rb +0 -10
  318. data/lib/mongoid/fields/internal/float.rb +0 -47
  319. data/lib/mongoid/fields/internal/foreign_keys/array.rb +0 -88
  320. data/lib/mongoid/fields/internal/foreign_keys/object.rb +0 -56
  321. data/lib/mongoid/fields/internal/hash.rb +0 -11
  322. data/lib/mongoid/fields/internal/integer.rb +0 -59
  323. data/lib/mongoid/fields/internal/localized.rb +0 -62
  324. data/lib/mongoid/fields/internal/nil_class.rb +0 -53
  325. data/lib/mongoid/fields/internal/object.rb +0 -11
  326. data/lib/mongoid/fields/internal/object_id.rb +0 -46
  327. data/lib/mongoid/fields/internal/range.rb +0 -61
  328. data/lib/mongoid/fields/internal/set.rb +0 -57
  329. data/lib/mongoid/fields/internal/string.rb +0 -42
  330. data/lib/mongoid/fields/internal/symbol.rb +0 -43
  331. data/lib/mongoid/fields/internal/time.rb +0 -23
  332. data/lib/mongoid/fields/internal/time_with_zone.rb +0 -23
  333. data/lib/mongoid/fields/internal/timekeeping.rb +0 -122
  334. data/lib/mongoid/fields/internal/true_class.rb +0 -10
  335. data/lib/mongoid/fields/mappings.rb +0 -42
  336. data/lib/mongoid/fields/serializable.rb +0 -270
  337. data/lib/mongoid/identity.rb +0 -92
  338. data/lib/mongoid/keys.rb +0 -144
  339. data/lib/mongoid/logger.rb +0 -45
  340. data/lib/mongoid/multi_database.rb +0 -36
  341. data/lib/mongoid/named_scope.rb +0 -166
  342. data/lib/mongoid/relations/embedded/atomic.rb +0 -89
  343. data/lib/mongoid/relations/embedded/atomic/operation.rb +0 -63
  344. data/lib/mongoid/relations/embedded/atomic/pull.rb +0 -65
  345. data/lib/mongoid/relations/embedded/atomic/push_all.rb +0 -59
  346. data/lib/mongoid/relations/embedded/atomic/set.rb +0 -61
  347. data/lib/mongoid/relations/embedded/atomic/unset.rb +0 -41
  348. data/lib/mongoid/relations/referenced/batch.rb +0 -73
  349. data/lib/mongoid/relations/referenced/batch/insert.rb +0 -57
  350. data/lib/mongoid/safety.rb +0 -105
  351. data/lib/mongoid/scope.rb +0 -31
@@ -1,61 +0,0 @@
1
- ru:
2
- mongoid:
3
- errors:
4
- messages:
5
- taken:
6
- уже занят
7
- callbacks:
8
- "Calling %{method} on %{klass} resulted in a false return from a callback."
9
- document_not_found:
10
- Документ класса %{klass} с id %{identifiers} не найден.
11
- eager_load:
12
- "Eager loading :%{name} is not supported due to it being a many-to-many
13
- or polymorphic belongs_to relation."
14
- invalid_database:
15
- База данных должна быть Mongo::DB, а не %{name}.
16
- invalid_time:
17
- "'%{value}' is not a valid Time."
18
- invalid_type:
19
- Поле уже было определено в классе %{klass}, но получено как %{other}
20
- со значением %{value}.
21
- invalid_options:
22
- "Invalid option :%{invalid} provided to relation :%{name}. Valid options
23
- are: %{valid}."
24
- unsupported_version:
25
- Версия MongoDB %{version} не поддерживается. Пожалуйста, обновитесь до
26
- версии %{mongo_version}.
27
- validations:
28
- Документ не прошёл валидацию - %{errors}.
29
- invalid_collection:
30
- Доступ к коллекции для класса %{klass} запрещён, так как это вложенный
31
- документ. Пожалуйста, обратитесь к коллекции через родительский документ.
32
- invalid_field:
33
- Определение поля с именем %{name} запрещено. Не определяйте поля
34
- с именами совпадающими с внутренними атрибутами или методами Mongoid.
35
- Используйте Document#instance_methods для просмотра запрещённых имён.
36
- too_many_nested_attribute_records:
37
- Accepting nested attributes для %{association} ограничено
38
- %{limit} записями.
39
- embedded_in_must_have_inverse_of:
40
- Указание опции inverse_of для embedded_in ассоциации обязательно.
41
- dependent_only_references_one_or_many:
42
- Опция dependent => destroy|delete доступная только для
43
- references_one или references_many ассоциаций.
44
- association_cant_have_inverse_of:
45
- Опция inverse_of не может использоваться с этой ассоциацией.
46
- Используйте её с embedded_in или references_many ассоциациями.
47
- calling_document_find_with_nil_is_invalid:
48
- Вызов Document#find с nil запрещён
49
- unsaved_document:
50
- Вызов методов create или create! запрещён у реляционной ассоциации
51
- (%{document}), у которой родитель (%{base}) не сохранён.
52
- mixed_relations:
53
- Referencing a(n) %{embedded} document from the %{root} document via a
54
- relational association is not allowed since the %{embedded} is embedded.
55
- no_environment:
56
- "Mongoid attempted to find the appropriate environment but no Rails.env,
57
- Sinatra::Base.environment, or RACK_ENV could be found."
58
- scope_overwrite:
59
- "Cannot create scope :%{scope_name}, because of existing method
60
- %{model_name}.%{scope_name}."
61
- blank_on_locale: "can't be blank in %{location}"
@@ -1,60 +0,0 @@
1
- sv:
2
- mongoid:
3
- errors:
4
- messages:
5
- taken:
6
- har redan använts
7
- callbacks:
8
- "Calling %{method} on %{klass} resulted in a false return from a callback."
9
- document_not_found:
10
- Inget dokument kunde hittas för klass %{klass} med id %{identifiers}.
11
- eager_load:
12
- "Eager loading :%{name} is not supported due to it being a many-to-many
13
- or polymorphic belongs_to relation."
14
- invalid_database:
15
- Databasen bör vara Mongo::DB, inte %{name}.
16
- invalid_time:
17
- "'%{value}' is not a valid Time."
18
- invalid_type:
19
- Fältet var definerat som %{klass}, men fick %{other} med
20
- värdet %{value}.
21
- invalid_options:
22
- "Invalid option :%{invalid} provided to relation :%{name}. Valid options
23
- are: %{valid}."
24
- unsupported_version:
25
- MongoDB %{version} stöds ej, vänligen upgradera
26
- till %{mongo_version}.
27
- validations:
28
- Validering misslyckades - %{errors}.
29
- invalid_collection:
30
- Tillgång till kollektionen för %{klass} är inte tillåten eftersom den
31
- är ett inbäddat dokument, vänligen accessa kollektionen från
32
- rotdokumentet.
33
- invalid_field:
34
- Att definera ett fält med namnet %{name} är inte tillåtet. Definera inte
35
- fält som är i konflikt med Mongoids interna attribut eller metod
36
- namn. Använd Document#instance_methods för att se vilka namn detta innefattar.
37
- too_many_nested_attribute_records:
38
- Acceptans av nästlade attribut för %{association} är begränsat
39
- till %{limit} register.
40
- embedded_in_must_have_inverse_of:
41
- Alternativ för en embedded_in association måste innehålla inverse_of.
42
- dependent_only_references_one_or_many:
43
- Alternativet dependent => destroy|delete som angavs
44
- är endast giltigt för references_one eller references_many associationer.
45
- association_cant_have_inverse_of:
46
- Att definera inverse_of på denna association är inte tillåtet. Använd
47
- endast detta alternativ på embedded_in eller references_many as array.
48
- unsaved_document:
49
- You cannot call create or create! through a relational association
50
- relation (%{document}) who's parent (%{base}) is not already saved.
51
- mixed_relations:
52
- Referencing a(n) %{embedded} document from the %{root} document via a
53
- relational association is not allowed since the %{embedded} is embedded.
54
- no_environment:
55
- "Mongoid attempted to find the appropriate environment but no Rails.env,
56
- Sinatra::Base.environment, or RACK_ENV could be found."
57
- scope_overwrite:
58
- "Cannot create scope :%{scope_name}, because of existing method
59
- %{model_name}.%{scope_name}."
60
- blank_on_locale: "can't be blank in %{location}"
@@ -1,62 +0,0 @@
1
- vi:
2
- mongoid:
3
- errors:
4
- messages:
5
- taken:
6
- đã bị lấy
7
- callbacks:
8
- "Calling %{method} on %{klass} resulted in a false return from a callback."
9
- document_not_found:
10
- Không tìm thấy văn bản cho lớp %{klass} với định danh %{identifiers}.
11
- eager_load:
12
- "Eager loading :%{name} is not supported due to it being a many-to-many
13
- or polymorphic belongs_to relation."
14
- invalid_database:
15
- Cơ sở dữ liệu nên là Mongo::DB, không phải %{name}.
16
- invalid_time:
17
- "'%{value}' is not a valid Time."
18
- invalid_type:
19
- Trường được định nghĩa là một %{klass}, nhưng nhận được %{other} với
20
- giá trị %{value}.
21
- invalid_options:
22
- "Invalid option :%{invalid} provided to relation :%{name}. Valid options
23
- are: %{valid}."
24
- unsupported_version:
25
- MongoDB %{version} không được hỗ trợ, xin vui lòng nâng cấp
26
- lên %{mongo_version}.
27
- validations:
28
- Kiểm định không thành công - %{errors}.
29
- invalid_collection:
30
- Không được phép truy cập tập văn bản cuả %{klass} vì đây
31
- là một văn bản nhúng, xin vui lòng truy cập tập văn bản từ
32
- văn bản gốc.
33
- invalid_field:
34
- Không được phép định nghĩa tên trường là %{name}. Không định nghĩa
35
- tên trường trùng với các thuộc tính có sẵn hoặc các tên hàm cuả Mongoid.
36
- Sử dụng Use Document#instance_methods để xem danh sách tên đã được dùng.
37
- too_many_nested_attribute_records:
38
- Số lượng các thuộc tính lồng cho %{association} bị giới hạn
39
- ở %{limit} bản ghi.
40
- embedded_in_must_have_inverse_of:
41
- Phải cho thêm inverse_of vào lực chọn cuả kết hợp embedded_in.
42
- dependent_only_references_one_or_many:
43
- Lựa chọn dependent => destroy|delete
44
- chỉ có hiệu lực với kết hợp references_one hoặc references_many.
45
- association_cant_have_inverse_of:
46
- Không được phép định nghĩa inverse_of cho kết hợp này. Chỉ
47
- sử dụng lựa chọn này cho embedded_in or references_many as array.
48
- calling_document_find_with_nil_is_invalid:
49
- Không được phép gọi Document#find với giá trị nil
50
- unsaved_document:
51
- Bạn không được gọi create hoặc create! thông qua một quan hệ kết hợp
52
- mà văn bản gốc (%{base}) chưa được lưu.
53
- mixed_relations:
54
- Không được phép tham chiếu một văn bản %{embedded} từ văn bản %{root} thông qua một
55
- quan hệ kết hợp vì %{embedded} là kiểu nhúng.
56
- no_environment:
57
- "Mongoid attempted to find the appropriate environment but no Rails.env,
58
- Sinatra::Base.environment, or RACK_ENV could be found."
59
- scope_overwrite:
60
- "Cannot create scope :%{scope_name}, because of existing method
61
- %{model_name}.%{scope_name}."
62
- blank_on_locale: "can't be blank in %{location}"
@@ -1,53 +0,0 @@
1
- zh-CN:
2
- mongoid:
3
- errors:
4
- messages:
5
- blank:
6
- 不能为空
7
- callbacks:
8
- "Calling %{method} on %{klass} resulted in a false return from a callback."
9
- taken:
10
- 已占用
11
- document_not_found:
12
- 没有发现类是%{klass}id(s)是%{identifiers}的文档
13
- eager_load:
14
- "Eager loading :%{name} is not supported due to it being a many-to-many
15
- or polymorphic belongs_to relation."
16
- invalid_database:
17
- 数据库应该是Mongo::DB,而不是%{name}.
18
- invalid_time:
19
- "'%{value}' is not a valid Time."
20
- invalid_type:
21
- 在类%{klass}中定义了字段,实际值是%{value}的%{other}.
22
- invalid_options:
23
- "Invalid option :%{invalid} provided to relation :%{name}. Valid options
24
- are: %{valid}."
25
- unsupported_version:
26
- MongoDB %{version} 版本已过期,请升级到 %{mongo_version}.
27
- validations:
28
- 校验失败 - %{errors}.
29
- invalid_collection:
30
- 不允许直接访问嵌入式的集合%{klass} , 请从文档的根访问集合.
31
- invalid_field:
32
- 字段的名字不允许为 %{name}. 你不应该定义跟Mongoid内部属性或者方法相同的名字,详细请看Use Document#instance_methods.
33
- too_many_nested_attribute_records:
34
- 被关联的%{association} 嵌入式属性不能超过 %{limit}.
35
- embedded_in_must_have_inverse_of:
36
- embedded_in的关联属性必须包含inverse_of.
37
- dependent_only_references_one_or_many:
38
- dependent => destroy|delete 选项只有在references_one或者references_many时候有效.
39
- association_cant_have_inverse_of:
40
- 在当前的关联中,不允许定义inverse_of去,其只有在embedded_in或者references_many是数组的情况下使用
41
- unsaved_document:
42
- You cannot call create or create! through a relational association
43
- relation (%{document}) who's parent (%{base}) is not already saved.
44
- mixed_relations:
45
- Referencing a(n) %{embedded} document from the %{root} document via a
46
- relational association is not allowed since the %{embedded} is embedded.
47
- no_environment:
48
- "Mongoid attempted to find the appropriate environment but no Rails.env,
49
- Sinatra::Base.environment, or RACK_ENV could be found."
50
- scope_overwrite:
51
- "Cannot create scope :%{scope_name}, because of existing method
52
- %{model_name}.%{scope_name}."
53
- blank_on_locale: "can't be blank in %{location}"
@@ -1,157 +0,0 @@
1
- # encoding: utf-8
2
- require "mongoid/collections/retry"
3
- require "mongoid/collections/operations"
4
- require "mongoid/collections/master"
5
-
6
- module Mongoid #:nodoc
7
-
8
- # This class is the Mongoid wrapper to the Mongo Ruby driver's collection
9
- # object.
10
- class Collection
11
- attr_reader :counter, :klass, :name
12
-
13
- # All write operations should delegate to the master connection. These
14
- # operations mimic the methods on a Mongo:Collection.
15
- #
16
- # @example Delegate the operation.
17
- # collection.save({ :name => "Al" })
18
- delegate *(Collections::Operations::PROXIED.dup << {:to => :master})
19
-
20
- # Get the unwrapped driver collection for this mongoid collection.
21
- #
22
- # @example Get the driver collection.
23
- # collection.driver
24
- #
25
- # @return [ Mongo::Collection ] The driver collection.
26
- #
27
- # @since 2.2.0
28
- def driver
29
- master.collection
30
- end
31
-
32
- # Find documents from the database given a selector and options.
33
- #
34
- # @example Find documents in the collection.
35
- # collection.find({ :test => "value" })
36
- #
37
- # @param [ Hash ] selector The query selector.
38
- # @param [ Hash ] options The options to pass to the db.
39
- #
40
- # @return [ Cursor ] The results.
41
- def find(selector = {}, options = {})
42
- cursor = Mongoid::Cursor.new(klass, self, master(options).find(selector, options))
43
- if block_given?
44
- yield cursor; cursor.close
45
- else
46
- cursor
47
- end
48
- end
49
-
50
- # Find the first document from the database given a selector and options.
51
- #
52
- # @example Find one document.
53
- # collection.find_one({ :test => "value" })
54
- #
55
- # @param [ Hash ] selector The query selector.
56
- # @param [ Hash ] options The options to pass to the db.
57
- #
58
- # @return [ Document, nil ] A matching document or nil if none found.
59
- def find_one(selector = {}, options = {})
60
- master(options).find_one(selector, options)
61
- end
62
-
63
- # Initialize a new Mongoid::Collection, setting up the master, slave, and
64
- # name attributes. Masters will be used for writes, slaves for reads.
65
- #
66
- # @example Create the new collection.
67
- # Collection.new(masters, slaves, "test")
68
- #
69
- # @param [ Class ] klass The class the collection is for.
70
- # @param [ String ] name The name of the collection.
71
- # @param [ Hash ] options The collection options.
72
- #
73
- # @option options [ true, false ] :capped If the collection is capped.
74
- # @option options [ Integer ] :size The capped collection size.
75
- # @option options [ Integer ] :max The maximum number of docs in the
76
- # capped collection.
77
- def initialize(klass, name, options = {})
78
- @klass, @name, @options = klass, name, options || {}
79
- end
80
-
81
- # Inserts one or more documents in the collection.
82
- #
83
- # @example Insert documents.
84
- # collection.insert(
85
- # { "field" => "value" },
86
- # :safe => true
87
- # )
88
- #
89
- # @param [ Hash, Array<Hash> ] documents A single document or multiples.
90
- # @param [ Hash ] options The options.
91
- #
92
- # @since 2.0.2, batch-relational-insert
93
- def insert(documents, options = {})
94
- consumer = Threaded.insert(name)
95
- if consumer
96
- consumer.consume(documents, options)
97
- else
98
- master(options).insert(documents, options)
99
- end
100
- end
101
-
102
- # Perform a map/reduce on the documents.
103
- #
104
- # @example Perform the map/reduce.
105
- # collection.map_reduce(map, reduce)
106
- #
107
- # @param [ String ] map The map javascript function.
108
- # @param [ String ] reduce The reduce javascript function.
109
- # @param [ Hash ] options The options to pass to the db.
110
- #
111
- # @return [ Cursor ] The results.
112
- def map_reduce(map, reduce, options = {})
113
- master(options).map_reduce(map, reduce, options)
114
- end
115
- alias :mapreduce :map_reduce
116
-
117
- # Return the object responsible for writes to the database. This will
118
- # always return a collection associated with the Master DB.
119
- #
120
- # @example Get the master connection.
121
- # collection.master
122
- #
123
- # @return [ Master ] The master connection.
124
- def master(options = {})
125
- options.delete(:cache)
126
- db = Mongoid.databases[klass.database] || Mongoid.master
127
- @master ||= Collections::Master.new(db, @name, @options)
128
- end
129
-
130
- # Updates one or more documents in the collection.
131
- #
132
- # @example Update documents.
133
- # collection.update(
134
- # { "_id" => BSON::OjectId.new },
135
- # { "$push" => { "addresses" => { "_id" => "street" } } },
136
- # :safe => true
137
- # )
138
- #
139
- # @param [ Hash ] selector The document selector.
140
- # @param [ Hash ] document The modifier.
141
- # @param [ Hash ] options The options.
142
- #
143
- # @since 2.0.0
144
- def update(selector, document, options = {})
145
- updater = Threaded.update_consumer(name)
146
- if updater
147
- updater.consume(selector, document, options)
148
- else
149
- master(options).update(selector, document, options)
150
- end
151
- end
152
-
153
- def drop(*args)
154
- @master = nil if master.drop
155
- end
156
- end
157
- end
@@ -1,120 +0,0 @@
1
- # encoding: utf-8
2
- module Mongoid #:nodoc
3
-
4
- # The collections module is used for providing functionality around setting
5
- # up and updating collections.
6
- module Collections
7
- extend ActiveSupport::Concern
8
-
9
- included do
10
- cattr_accessor :_collection, :collection_name
11
- self.collection_name = self.name.collectionize
12
- end
13
-
14
- # Get the collection for the class.
15
- #
16
- # @note Defining methods instead of delegate to avoid calls to
17
- # Kernel.caller for class load performance reasons.
18
- #
19
- # @example Get the collection.
20
- # person.collection
21
- #
22
- # @return [ Collection ] The class collection.
23
- #
24
- # @since 1.0.0
25
- def collection
26
- self.class.collection
27
- end
28
-
29
- # Get the database for the class.
30
- #
31
- # @note Defining methods instead of delegate to avoid calls to
32
- # Kernel.caller for class load performance reasons.
33
- #
34
- # @example Get the database.
35
- # person.db
36
- #
37
- # @return [ DB ] The class db.
38
- #
39
- # @since 1.0.0
40
- def db
41
- self.class.db
42
- end
43
-
44
- module ClassMethods #:nodoc:
45
-
46
- # Returns the collection associated with this +Document+. If the
47
- # document is embedded, there will be no collection associated
48
- # with it unless it's in a cyclic relation.
49
- #
50
- # @example Get the collection.
51
- # Model.collection
52
- #
53
- # @return [ Collection ] The Mongoid collection wrapper.
54
- def collection
55
- raise Errors::InvalidCollection.new(self) if embedded? && !cyclic
56
- self._collection || set_collection
57
- add_indexes; self._collection
58
- end
59
-
60
- # Return the database associated with this collection.
61
- #
62
- # @example Get the database object.
63
- # Model.db
64
- #
65
- # @return [ Mongo::DB ] The Mongo daatabase object.
66
- def db
67
- collection.db
68
- end
69
-
70
- # Convenience method for getting index information from the collection.
71
- #
72
- # @example Get the index information from the collection.
73
- # Model.index_information
74
- #
75
- # @return [ Array ] The collection index information.
76
- def index_information
77
- collection.index_information
78
- end
79
-
80
- # Macro for setting the collection name to store in.
81
- #
82
- # @example Store in a separate collection than the default.
83
- # Model.store_in :population
84
- #
85
- # @example Store in a capped collection.
86
- # Model.store_in :population, :capped => true, :max => 10000
87
- #
88
- # @param [ Symbol ] name The name of the collection.
89
- # @param [ Hash ] options The collection options.
90
- #
91
- # @option options [ true, false ] :capped If the collection is capped.
92
- # @option options [ Integer ] :size The capped collection size.
93
- # @option options [ Integer ] :max The maximum number of docs in the
94
- # capped collection.
95
- def store_in(name, options = {})
96
- self.collection_name = name.to_s
97
- set_collection(options)
98
- end
99
-
100
- protected
101
-
102
- # Set the collection on the class.
103
- #
104
- # @example Set the collection.
105
- # Model.set_collection
106
- #
107
- # @param [ Hash ] options The collection options.
108
- #
109
- # @option options [ true, false ] :capped If the collection is capped.
110
- # @option options [ Integer ] :size The capped collection size.
111
- # @option options [ Integer ] :max The maximum number of docs in the
112
- # capped collection.
113
-
114
- # @return [ Collection ] The Mongoid collection wrapper.
115
- def set_collection(options = {})
116
- self._collection = Collection.new(self, self.collection_name, options)
117
- end
118
- end
119
- end
120
- end