mongoid 2.8.1 → 3.0.0.rc

Sign up to get free protection for your applications and to get access to all the features.
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