mongoid-multi-db 3.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 (276) hide show
  1. data/CHANGELOG.md +615 -0
  2. data/LICENSE +20 -0
  3. data/README.md +62 -0
  4. data/Rakefile +49 -0
  5. data/lib/config/locales/bg.yml +54 -0
  6. data/lib/config/locales/de.yml +54 -0
  7. data/lib/config/locales/en-GB.yml +55 -0
  8. data/lib/config/locales/en.yml +55 -0
  9. data/lib/config/locales/es.yml +52 -0
  10. data/lib/config/locales/fr.yml +55 -0
  11. data/lib/config/locales/hi.yml +46 -0
  12. data/lib/config/locales/hu.yml +57 -0
  13. data/lib/config/locales/id.yml +55 -0
  14. data/lib/config/locales/it.yml +52 -0
  15. data/lib/config/locales/ja.yml +50 -0
  16. data/lib/config/locales/kr.yml +47 -0
  17. data/lib/config/locales/nl.yml +52 -0
  18. data/lib/config/locales/pl.yml +52 -0
  19. data/lib/config/locales/pt-BR.yml +53 -0
  20. data/lib/config/locales/pt.yml +53 -0
  21. data/lib/config/locales/ro.yml +59 -0
  22. data/lib/config/locales/ru.yml +54 -0
  23. data/lib/config/locales/sv.yml +53 -0
  24. data/lib/config/locales/vi.yml +55 -0
  25. data/lib/config/locales/zh-CN.yml +46 -0
  26. data/lib/mongoid.rb +148 -0
  27. data/lib/mongoid/atomic.rb +230 -0
  28. data/lib/mongoid/atomic/modifiers.rb +243 -0
  29. data/lib/mongoid/atomic/paths.rb +3 -0
  30. data/lib/mongoid/atomic/paths/embedded.rb +43 -0
  31. data/lib/mongoid/atomic/paths/embedded/many.rb +44 -0
  32. data/lib/mongoid/atomic/paths/embedded/one.rb +43 -0
  33. data/lib/mongoid/atomic/paths/root.rb +40 -0
  34. data/lib/mongoid/attributes.rb +234 -0
  35. data/lib/mongoid/attributes/processing.rb +146 -0
  36. data/lib/mongoid/callbacks.rb +135 -0
  37. data/lib/mongoid/collection.rb +153 -0
  38. data/lib/mongoid/collection_proxy.rb +59 -0
  39. data/lib/mongoid/collections.rb +120 -0
  40. data/lib/mongoid/collections/master.rb +45 -0
  41. data/lib/mongoid/collections/operations.rb +44 -0
  42. data/lib/mongoid/collections/retry.rb +46 -0
  43. data/lib/mongoid/components.rb +96 -0
  44. data/lib/mongoid/config.rb +347 -0
  45. data/lib/mongoid/config/database.rb +186 -0
  46. data/lib/mongoid/config/replset_database.rb +82 -0
  47. data/lib/mongoid/connection_proxy.rb +30 -0
  48. data/lib/mongoid/contexts.rb +25 -0
  49. data/lib/mongoid/contexts/enumerable.rb +288 -0
  50. data/lib/mongoid/contexts/enumerable/sort.rb +43 -0
  51. data/lib/mongoid/contexts/mongo.rb +409 -0
  52. data/lib/mongoid/copyable.rb +48 -0
  53. data/lib/mongoid/criteria.rb +418 -0
  54. data/lib/mongoid/criterion/builder.rb +34 -0
  55. data/lib/mongoid/criterion/complex.rb +84 -0
  56. data/lib/mongoid/criterion/creational.rb +34 -0
  57. data/lib/mongoid/criterion/exclusion.rb +108 -0
  58. data/lib/mongoid/criterion/inclusion.rb +305 -0
  59. data/lib/mongoid/criterion/inspection.rb +22 -0
  60. data/lib/mongoid/criterion/optional.rb +232 -0
  61. data/lib/mongoid/criterion/selector.rb +153 -0
  62. data/lib/mongoid/cursor.rb +86 -0
  63. data/lib/mongoid/database_proxy.rb +97 -0
  64. data/lib/mongoid/default_scope.rb +36 -0
  65. data/lib/mongoid/dirty.rb +110 -0
  66. data/lib/mongoid/document.rb +280 -0
  67. data/lib/mongoid/errors.rb +17 -0
  68. data/lib/mongoid/errors/callback.rb +26 -0
  69. data/lib/mongoid/errors/document_not_found.rb +28 -0
  70. data/lib/mongoid/errors/eager_load.rb +25 -0
  71. data/lib/mongoid/errors/invalid_collection.rb +18 -0
  72. data/lib/mongoid/errors/invalid_database.rb +19 -0
  73. data/lib/mongoid/errors/invalid_field.rb +18 -0
  74. data/lib/mongoid/errors/invalid_find.rb +19 -0
  75. data/lib/mongoid/errors/invalid_options.rb +28 -0
  76. data/lib/mongoid/errors/invalid_time.rb +25 -0
  77. data/lib/mongoid/errors/invalid_type.rb +25 -0
  78. data/lib/mongoid/errors/mixed_relations.rb +37 -0
  79. data/lib/mongoid/errors/mongoid_error.rb +26 -0
  80. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +20 -0
  81. data/lib/mongoid/errors/unsaved_document.rb +23 -0
  82. data/lib/mongoid/errors/unsupported_version.rb +20 -0
  83. data/lib/mongoid/errors/validations.rb +23 -0
  84. data/lib/mongoid/extensions.rb +82 -0
  85. data/lib/mongoid/extensions/array/deletion.rb +29 -0
  86. data/lib/mongoid/extensions/false_class/equality.rb +26 -0
  87. data/lib/mongoid/extensions/hash/criteria_helpers.rb +45 -0
  88. data/lib/mongoid/extensions/hash/scoping.rb +25 -0
  89. data/lib/mongoid/extensions/integer/checks.rb +23 -0
  90. data/lib/mongoid/extensions/nil/collectionization.rb +23 -0
  91. data/lib/mongoid/extensions/object/checks.rb +29 -0
  92. data/lib/mongoid/extensions/object/reflections.rb +48 -0
  93. data/lib/mongoid/extensions/object/substitutable.rb +15 -0
  94. data/lib/mongoid/extensions/object/yoda.rb +44 -0
  95. data/lib/mongoid/extensions/object_id/conversions.rb +60 -0
  96. data/lib/mongoid/extensions/proc/scoping.rb +25 -0
  97. data/lib/mongoid/extensions/string/checks.rb +36 -0
  98. data/lib/mongoid/extensions/string/conversions.rb +22 -0
  99. data/lib/mongoid/extensions/string/inflections.rb +118 -0
  100. data/lib/mongoid/extensions/symbol/checks.rb +23 -0
  101. data/lib/mongoid/extensions/symbol/inflections.rb +66 -0
  102. data/lib/mongoid/extensions/true_class/equality.rb +26 -0
  103. data/lib/mongoid/extras.rb +31 -0
  104. data/lib/mongoid/factory.rb +46 -0
  105. data/lib/mongoid/fields.rb +332 -0
  106. data/lib/mongoid/fields/mappings.rb +41 -0
  107. data/lib/mongoid/fields/serializable.rb +201 -0
  108. data/lib/mongoid/fields/serializable/array.rb +49 -0
  109. data/lib/mongoid/fields/serializable/big_decimal.rb +42 -0
  110. data/lib/mongoid/fields/serializable/bignum.rb +10 -0
  111. data/lib/mongoid/fields/serializable/binary.rb +11 -0
  112. data/lib/mongoid/fields/serializable/boolean.rb +43 -0
  113. data/lib/mongoid/fields/serializable/date.rb +51 -0
  114. data/lib/mongoid/fields/serializable/date_time.rb +28 -0
  115. data/lib/mongoid/fields/serializable/fixnum.rb +10 -0
  116. data/lib/mongoid/fields/serializable/float.rb +32 -0
  117. data/lib/mongoid/fields/serializable/foreign_keys/array.rb +42 -0
  118. data/lib/mongoid/fields/serializable/foreign_keys/object.rb +47 -0
  119. data/lib/mongoid/fields/serializable/hash.rb +11 -0
  120. data/lib/mongoid/fields/serializable/integer.rb +44 -0
  121. data/lib/mongoid/fields/serializable/localized.rb +41 -0
  122. data/lib/mongoid/fields/serializable/nil_class.rb +38 -0
  123. data/lib/mongoid/fields/serializable/object.rb +11 -0
  124. data/lib/mongoid/fields/serializable/object_id.rb +31 -0
  125. data/lib/mongoid/fields/serializable/range.rb +42 -0
  126. data/lib/mongoid/fields/serializable/set.rb +42 -0
  127. data/lib/mongoid/fields/serializable/string.rb +27 -0
  128. data/lib/mongoid/fields/serializable/symbol.rb +27 -0
  129. data/lib/mongoid/fields/serializable/time.rb +23 -0
  130. data/lib/mongoid/fields/serializable/time_with_zone.rb +23 -0
  131. data/lib/mongoid/fields/serializable/timekeeping.rb +106 -0
  132. data/lib/mongoid/finders.rb +152 -0
  133. data/lib/mongoid/hierarchy.rb +120 -0
  134. data/lib/mongoid/identity.rb +92 -0
  135. data/lib/mongoid/identity_map.rb +119 -0
  136. data/lib/mongoid/indexes.rb +54 -0
  137. data/lib/mongoid/inspection.rb +54 -0
  138. data/lib/mongoid/javascript.rb +20 -0
  139. data/lib/mongoid/javascript/functions.yml +63 -0
  140. data/lib/mongoid/json.rb +16 -0
  141. data/lib/mongoid/keys.rb +144 -0
  142. data/lib/mongoid/logger.rb +39 -0
  143. data/lib/mongoid/matchers.rb +32 -0
  144. data/lib/mongoid/matchers/all.rb +21 -0
  145. data/lib/mongoid/matchers/and.rb +30 -0
  146. data/lib/mongoid/matchers/default.rb +70 -0
  147. data/lib/mongoid/matchers/exists.rb +23 -0
  148. data/lib/mongoid/matchers/gt.rb +21 -0
  149. data/lib/mongoid/matchers/gte.rb +21 -0
  150. data/lib/mongoid/matchers/in.rb +21 -0
  151. data/lib/mongoid/matchers/lt.rb +21 -0
  152. data/lib/mongoid/matchers/lte.rb +21 -0
  153. data/lib/mongoid/matchers/ne.rb +21 -0
  154. data/lib/mongoid/matchers/nin.rb +21 -0
  155. data/lib/mongoid/matchers/or.rb +33 -0
  156. data/lib/mongoid/matchers/size.rb +21 -0
  157. data/lib/mongoid/matchers/strategies.rb +93 -0
  158. data/lib/mongoid/multi_database.rb +31 -0
  159. data/lib/mongoid/multi_parameter_attributes.rb +106 -0
  160. data/lib/mongoid/named_scope.rb +146 -0
  161. data/lib/mongoid/nested_attributes.rb +54 -0
  162. data/lib/mongoid/observer.rb +170 -0
  163. data/lib/mongoid/paranoia.rb +158 -0
  164. data/lib/mongoid/persistence.rb +264 -0
  165. data/lib/mongoid/persistence/atomic.rb +223 -0
  166. data/lib/mongoid/persistence/atomic/add_to_set.rb +35 -0
  167. data/lib/mongoid/persistence/atomic/bit.rb +37 -0
  168. data/lib/mongoid/persistence/atomic/inc.rb +31 -0
  169. data/lib/mongoid/persistence/atomic/operation.rb +85 -0
  170. data/lib/mongoid/persistence/atomic/pop.rb +34 -0
  171. data/lib/mongoid/persistence/atomic/pull.rb +34 -0
  172. data/lib/mongoid/persistence/atomic/pull_all.rb +34 -0
  173. data/lib/mongoid/persistence/atomic/push.rb +31 -0
  174. data/lib/mongoid/persistence/atomic/push_all.rb +31 -0
  175. data/lib/mongoid/persistence/atomic/rename.rb +31 -0
  176. data/lib/mongoid/persistence/atomic/sets.rb +30 -0
  177. data/lib/mongoid/persistence/atomic/unset.rb +28 -0
  178. data/lib/mongoid/persistence/deletion.rb +32 -0
  179. data/lib/mongoid/persistence/insertion.rb +41 -0
  180. data/lib/mongoid/persistence/modification.rb +37 -0
  181. data/lib/mongoid/persistence/operations.rb +211 -0
  182. data/lib/mongoid/persistence/operations/embedded/insert.rb +42 -0
  183. data/lib/mongoid/persistence/operations/embedded/remove.rb +40 -0
  184. data/lib/mongoid/persistence/operations/insert.rb +34 -0
  185. data/lib/mongoid/persistence/operations/remove.rb +33 -0
  186. data/lib/mongoid/persistence/operations/update.rb +64 -0
  187. data/lib/mongoid/railtie.rb +126 -0
  188. data/lib/mongoid/railties/database.rake +182 -0
  189. data/lib/mongoid/railties/document.rb +12 -0
  190. data/lib/mongoid/relations.rb +144 -0
  191. data/lib/mongoid/relations/accessors.rb +138 -0
  192. data/lib/mongoid/relations/auto_save.rb +38 -0
  193. data/lib/mongoid/relations/binding.rb +26 -0
  194. data/lib/mongoid/relations/bindings.rb +9 -0
  195. data/lib/mongoid/relations/bindings/embedded/in.rb +69 -0
  196. data/lib/mongoid/relations/bindings/embedded/many.rb +93 -0
  197. data/lib/mongoid/relations/bindings/embedded/one.rb +61 -0
  198. data/lib/mongoid/relations/bindings/referenced/in.rb +76 -0
  199. data/lib/mongoid/relations/bindings/referenced/many.rb +54 -0
  200. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +51 -0
  201. data/lib/mongoid/relations/bindings/referenced/one.rb +58 -0
  202. data/lib/mongoid/relations/builder.rb +57 -0
  203. data/lib/mongoid/relations/builders.rb +83 -0
  204. data/lib/mongoid/relations/builders/embedded/in.rb +29 -0
  205. data/lib/mongoid/relations/builders/embedded/many.rb +40 -0
  206. data/lib/mongoid/relations/builders/embedded/one.rb +30 -0
  207. data/lib/mongoid/relations/builders/nested_attributes/many.rb +110 -0
  208. data/lib/mongoid/relations/builders/nested_attributes/one.rb +135 -0
  209. data/lib/mongoid/relations/builders/referenced/in.rb +26 -0
  210. data/lib/mongoid/relations/builders/referenced/many.rb +27 -0
  211. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +38 -0
  212. data/lib/mongoid/relations/builders/referenced/one.rb +26 -0
  213. data/lib/mongoid/relations/cascading.rb +56 -0
  214. data/lib/mongoid/relations/cascading/delete.rb +19 -0
  215. data/lib/mongoid/relations/cascading/destroy.rb +26 -0
  216. data/lib/mongoid/relations/cascading/nullify.rb +18 -0
  217. data/lib/mongoid/relations/cascading/strategy.rb +26 -0
  218. data/lib/mongoid/relations/constraint.rb +42 -0
  219. data/lib/mongoid/relations/conversions.rb +35 -0
  220. data/lib/mongoid/relations/cyclic.rb +103 -0
  221. data/lib/mongoid/relations/embedded/atomic.rb +89 -0
  222. data/lib/mongoid/relations/embedded/atomic/operation.rb +63 -0
  223. data/lib/mongoid/relations/embedded/atomic/pull.rb +65 -0
  224. data/lib/mongoid/relations/embedded/atomic/push_all.rb +59 -0
  225. data/lib/mongoid/relations/embedded/atomic/set.rb +61 -0
  226. data/lib/mongoid/relations/embedded/atomic/unset.rb +41 -0
  227. data/lib/mongoid/relations/embedded/in.rb +220 -0
  228. data/lib/mongoid/relations/embedded/many.rb +560 -0
  229. data/lib/mongoid/relations/embedded/one.rb +206 -0
  230. data/lib/mongoid/relations/embedded/sort.rb +31 -0
  231. data/lib/mongoid/relations/macros.rb +310 -0
  232. data/lib/mongoid/relations/many.rb +135 -0
  233. data/lib/mongoid/relations/metadata.rb +919 -0
  234. data/lib/mongoid/relations/nested_builder.rb +75 -0
  235. data/lib/mongoid/relations/one.rb +36 -0
  236. data/lib/mongoid/relations/options.rb +47 -0
  237. data/lib/mongoid/relations/polymorphic.rb +40 -0
  238. data/lib/mongoid/relations/proxy.rb +145 -0
  239. data/lib/mongoid/relations/referenced/batch.rb +72 -0
  240. data/lib/mongoid/relations/referenced/batch/insert.rb +57 -0
  241. data/lib/mongoid/relations/referenced/in.rb +262 -0
  242. data/lib/mongoid/relations/referenced/many.rb +623 -0
  243. data/lib/mongoid/relations/referenced/many_to_many.rb +396 -0
  244. data/lib/mongoid/relations/referenced/one.rb +272 -0
  245. data/lib/mongoid/relations/reflections.rb +62 -0
  246. data/lib/mongoid/relations/synchronization.rb +153 -0
  247. data/lib/mongoid/relations/targets.rb +2 -0
  248. data/lib/mongoid/relations/targets/enumerable.rb +372 -0
  249. data/lib/mongoid/reloading.rb +91 -0
  250. data/lib/mongoid/safety.rb +105 -0
  251. data/lib/mongoid/scope.rb +31 -0
  252. data/lib/mongoid/serialization.rb +134 -0
  253. data/lib/mongoid/sharding.rb +61 -0
  254. data/lib/mongoid/state.rb +97 -0
  255. data/lib/mongoid/threaded.rb +530 -0
  256. data/lib/mongoid/threaded/lifecycle.rb +192 -0
  257. data/lib/mongoid/timestamps.rb +15 -0
  258. data/lib/mongoid/timestamps/created.rb +24 -0
  259. data/lib/mongoid/timestamps/timeless.rb +50 -0
  260. data/lib/mongoid/timestamps/updated.rb +26 -0
  261. data/lib/mongoid/validations.rb +140 -0
  262. data/lib/mongoid/validations/associated.rb +46 -0
  263. data/lib/mongoid/validations/uniqueness.rb +145 -0
  264. data/lib/mongoid/version.rb +4 -0
  265. data/lib/mongoid/versioning.rb +185 -0
  266. data/lib/rack/mongoid.rb +2 -0
  267. data/lib/rack/mongoid/middleware/identity_map.rb +38 -0
  268. data/lib/rails/generators/mongoid/config/config_generator.rb +25 -0
  269. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +20 -0
  270. data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
  271. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +19 -0
  272. data/lib/rails/generators/mongoid/observer/observer_generator.rb +17 -0
  273. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +4 -0
  274. data/lib/rails/generators/mongoid_generator.rb +70 -0
  275. data/lib/rails/mongoid.rb +91 -0
  276. metadata +465 -0
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ require "mongoid/errors/mongoid_error"
3
+ require "mongoid/errors/callback"
4
+ require "mongoid/errors/document_not_found"
5
+ require "mongoid/errors/eager_load"
6
+ require "mongoid/errors/invalid_collection"
7
+ require "mongoid/errors/invalid_database"
8
+ require "mongoid/errors/invalid_field"
9
+ require "mongoid/errors/invalid_find"
10
+ require "mongoid/errors/invalid_options"
11
+ require "mongoid/errors/invalid_time"
12
+ require "mongoid/errors/invalid_type"
13
+ require "mongoid/errors/mixed_relations"
14
+ require "mongoid/errors/too_many_nested_attribute_records"
15
+ require "mongoid/errors/unsaved_document"
16
+ require "mongoid/errors/unsupported_version"
17
+ require "mongoid/errors/validations"
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # This error is raised when calling #save! or .create! on a model when one
6
+ # of the callbacks returns false.
7
+ class Callback < MongoidError
8
+
9
+ attr_reader :klass, :method
10
+
11
+ # Create the new callbacks error.
12
+ #
13
+ # @example Create the new callbacks error.
14
+ # Callbacks.new(Post, :create!)
15
+ #
16
+ # @param [ Class ] klass The class of the document.
17
+ # @param [ Symbol ] method The name of the method.
18
+ #
19
+ # @since 2.2.0
20
+ def initialize(klass, method)
21
+ @klass, @method = klass, method
22
+ super(translate("callbacks", { :klass => klass, :method => method }))
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when querying the database for a document by a specific id which
6
+ # does not exist. If multiple ids were passed then it will display all of
7
+ # those.
8
+ #
9
+ # @example Create the error.
10
+ # DocumentNotFound.new(Person, ["1", "2"])
11
+ class DocumentNotFound < MongoidError
12
+
13
+ attr_reader :klass, :identifiers
14
+
15
+ def initialize(klass, ids)
16
+ @klass = klass
17
+ @identifiers = ids.is_a?(Array) ? ids.join(", ") : ids
18
+
19
+ super(
20
+ translate(
21
+ "document_not_found",
22
+ { :klass => klass.name, :identifiers => identifiers }
23
+ )
24
+ )
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # This error is raised when attempting to eager load a many to many
6
+ # relation.
7
+ class EagerLoad < MongoidError
8
+
9
+ attr_reader :name
10
+
11
+ # Create the new eager load error.
12
+ #
13
+ # @example Create the new eager load error.
14
+ # EagerLoad.new(:preferences)
15
+ #
16
+ # @param [ Symbol ] name The name of the relation.
17
+ #
18
+ # @since 2.2.0
19
+ def initialize(name)
20
+ @name = name
21
+ super(translate("eager_load", { :name => name }))
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # This error is raised when trying to access a Mongo::Collection from an
6
+ # embedded document.
7
+ #
8
+ # @example Create the error.
9
+ # InvalidCollection.new(Address)
10
+ class InvalidCollection < MongoidError
11
+ def initialize(klass)
12
+ super(
13
+ translate("invalid_collection", { :klass => klass.name })
14
+ )
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when the database connection has not been set up properly, either
6
+ # by attempting to set an object on the db that is not a +Mongo::DB+, or
7
+ # not setting anything at all.
8
+ #
9
+ # @example Create the error.
10
+ # InvalidDatabase.new("Not a DB")
11
+ class InvalidDatabase < MongoidError
12
+ def initialize(database)
13
+ super(
14
+ translate("invalid_database", { :name => database.class.name })
15
+ )
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # This error is raised when trying to create a field that conflicts with
6
+ # a Mongoid internal attribute or method.
7
+ #
8
+ # @example Create the error.
9
+ # InvalidField.new('collection')
10
+ class InvalidField < MongoidError
11
+ def initialize(name)
12
+ super(
13
+ translate("invalid_field", { :name => name })
14
+ )
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when invalid arguments are passed to #find.
6
+ class InvalidFind < MongoidError
7
+
8
+ # Create the new invalid find error.
9
+ #
10
+ # @example Create the error.
11
+ # InvalidFind.new
12
+ #
13
+ # @since 2.2.0
14
+ def initialize
15
+ super(translate("calling_document_find_with_nil_is_invalid", {}))
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when invalid options are passed to a relation macro.
6
+ class InvalidOptions < MongoidError
7
+
8
+ # Instantiate the options error.
9
+ #
10
+ # @example Create the error.
11
+ # InvalidOptions.new(:name, :polymorphic, [ :as ])
12
+ #
13
+ # @param [ Symbol ] name The name of the relation.
14
+ # @param [ Symbol ] invalid The invalid option.
15
+ # @param [ Array<Symbol> ] valid The allowed options.
16
+ #
17
+ # @since 2.1.0
18
+ def initialize(name, invalid, valid)
19
+ super(
20
+ translate(
21
+ "invalid_options",
22
+ { :name => name, :invalid => invalid, :valid => valid.join(', ') }
23
+ )
24
+ )
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # This exception is raised when a bad value is attempted to be converted to
6
+ # a date or time.
7
+ class InvalidTime < MongoidError
8
+
9
+ attr_reader :klass, :value
10
+
11
+ # Create the new invalid date error.
12
+ #
13
+ # @example Create the new invalid date error.
14
+ # InvalidTime.new("this is not a time")
15
+ #
16
+ # @param [ Object ] value The value that was attempted.
17
+ #
18
+ # @since 2.3.1
19
+ def initialize(value)
20
+ @value = value
21
+ super(translate("invalid_time", { :value => value }))
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when trying to get or set a value for a defined field, where the
6
+ # type of the object does not match the defined field type.
7
+ #
8
+ # @example Create the error.
9
+ # InvalidType.new(Array, "Not an Array")
10
+ class InvalidType < MongoidError
11
+ def initialize(klass, value)
12
+ super(
13
+ translate(
14
+ "invalid_type",
15
+ {
16
+ :klass => klass.name,
17
+ :other => value.class.name,
18
+ :value => value.inspect
19
+ }
20
+ )
21
+ )
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # This error is raised when trying to reference an embedded document from
6
+ # a document in another collection that is not it's parent.
7
+ #
8
+ # @example An illegal reference to an embedded document.
9
+ # class Post
10
+ # include Mongoid::Document
11
+ # references_many :addresses
12
+ # end
13
+ #
14
+ # class Address
15
+ # include Mongoid::Document
16
+ # embedded_in :person
17
+ # referenced_in :post
18
+ # end
19
+ #
20
+ # @since 2.0.0
21
+ class MixedRelations < MongoidError
22
+
23
+ attr_reader :root_klass, :embedded_klass
24
+
25
+ def initialize(root_klass, embedded_klass)
26
+ @root_klass, @embedded_klass = root_klass, embedded_klass
27
+
28
+ super(
29
+ translate(
30
+ "mixed_relations",
31
+ { :root => root_klass, :embedded => embedded_klass }
32
+ )
33
+ )
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Default parent Mongoid error for all custom errors. This handles the base
6
+ # key for the translations and provides the convenience method for
7
+ # translating the messages.
8
+ class MongoidError < StandardError
9
+ BASE_KEY = "mongoid.errors.messages"
10
+
11
+ # Given the key of the specific error and the options hash, translate the
12
+ # message.
13
+ #
14
+ # @example Translate the message.
15
+ # error.translate("errors", :key => value)
16
+ #
17
+ # @param [ String ] key The key of the error in the locales.
18
+ # @param [ Hash ] options The objects to pass to create the message.
19
+ #
20
+ # @return [ String ] A localized error message string.
21
+ def translate(key, options)
22
+ ::I18n.translate("#{BASE_KEY}.#{key}", options)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ module Mongoid #:nodoc
2
+ module Errors #:nodoc
3
+
4
+ # This error is raised when trying to create set nested records above the
5
+ # specified :limit
6
+ #
7
+ # @example Create the error.
8
+ # TooManyNestedAttributeRecords.new('association', limit)
9
+ class TooManyNestedAttributeRecords < MongoidError
10
+ def initialize(association, limit)
11
+ super(
12
+ translate(
13
+ "too_many_nested_attribute_records",
14
+ { :association => association, :limit => limit }
15
+ )
16
+ )
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when attempting to call create or create! through a
6
+ # references_many when the parent document has not been saved. This
7
+ # prevents the child from getting presisted and immediately being orphaned.
8
+ class UnsavedDocument < MongoidError
9
+
10
+ attr_reader :base, :document
11
+
12
+ def initialize(base, document)
13
+ @base, @document = base, document
14
+ super(
15
+ translate(
16
+ "unsaved_document",
17
+ { :base => base.class.name, :document => document.class.name }
18
+ )
19
+ )
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when the database version is not supported by Mongoid.
6
+ #
7
+ # @example Create the error.
8
+ # UnsupportedVersion.new(Mongo::ServerVersion.new("1.3.1"))
9
+ class UnsupportedVersion < MongoidError
10
+ def initialize(version)
11
+ super(
12
+ translate(
13
+ "unsupported_version",
14
+ { :version => version, :mongo_version => Mongoid::MONGODB_VERSION }
15
+ )
16
+ )
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when a persistence method ending in ! fails validation. The message
6
+ # will contain the full error messages from the +Document+ in question.
7
+ #
8
+ # @example Create the error.
9
+ # Validations.new(person.errors)
10
+ class Validations < MongoidError
11
+ attr_reader :document
12
+ def initialize(document)
13
+ @document = document
14
+ super(
15
+ translate(
16
+ "validations",
17
+ { :errors => document.errors.full_messages.join(", ") }
18
+ )
19
+ )
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,82 @@
1
+ # encoding: utf-8
2
+ require "mongoid/extensions/array/deletion"
3
+ require "mongoid/extensions/false_class/equality"
4
+ require "mongoid/extensions/hash/criteria_helpers"
5
+ require "mongoid/extensions/hash/scoping"
6
+ require "mongoid/extensions/integer/checks"
7
+ require "mongoid/extensions/nil/collectionization"
8
+ require "mongoid/extensions/object/checks"
9
+ require "mongoid/extensions/object/reflections"
10
+ require "mongoid/extensions/object/substitutable"
11
+ require "mongoid/extensions/object/yoda"
12
+ require "mongoid/extensions/proc/scoping"
13
+ require "mongoid/extensions/string/checks"
14
+ require "mongoid/extensions/string/conversions"
15
+ require "mongoid/extensions/string/inflections"
16
+ require "mongoid/extensions/symbol/checks"
17
+ require "mongoid/extensions/symbol/inflections"
18
+ require "mongoid/extensions/true_class/equality"
19
+ require "mongoid/extensions/object_id/conversions"
20
+
21
+ class Array #:nodoc
22
+ include Mongoid::Extensions::Array::Deletion
23
+ end
24
+
25
+ class Binary; end #:nodoc:
26
+ unless defined?(Boolean)
27
+ class Boolean; end
28
+ end
29
+
30
+ class FalseClass #:nodoc
31
+ include Mongoid::Extensions::FalseClass::Equality
32
+ end
33
+
34
+ class Hash #:nodoc
35
+ include Mongoid::Extensions::Hash::CriteriaHelpers
36
+ include Mongoid::Extensions::Hash::Scoping
37
+ end
38
+
39
+ class Integer #:nodoc
40
+ include Mongoid::Extensions::Integer::Checks
41
+ end
42
+
43
+ class NilClass #:nodoc
44
+ include Mongoid::Extensions::Nil::Collectionization
45
+ end
46
+
47
+ class Object #:nodoc:
48
+ include Mongoid::Extensions::Object::Checks
49
+ include Mongoid::Extensions::Object::Reflections
50
+ include Mongoid::Extensions::Object::Substitutable
51
+ include Mongoid::Extensions::Object::Yoda
52
+ end
53
+
54
+ class Proc #:nodoc:
55
+ include Mongoid::Extensions::Proc::Scoping
56
+ end
57
+
58
+ class String #:nodoc
59
+ include Mongoid::Extensions::String::Checks
60
+ include Mongoid::Extensions::String::Conversions
61
+ include Mongoid::Extensions::String::Inflections
62
+ end
63
+
64
+ class Symbol #:nodoc
65
+ remove_method :size if instance_methods.include? :size # temporal fix for ruby 1.9
66
+ include Mongoid::Extensions::Symbol::Checks
67
+ include Mongoid::Extensions::Symbol::Inflections
68
+ end
69
+
70
+ class TrueClass #:nodoc
71
+ include Mongoid::Extensions::TrueClass::Equality
72
+ end
73
+
74
+ class BSON::ObjectId #:nodoc
75
+ extend Mongoid::Extensions::ObjectId::Conversions
76
+ def as_json(options = nil)
77
+ to_s
78
+ end
79
+ def to_xml(options = nil)
80
+ ActiveSupport::XmlMini.to_tag(options[:root], self.to_s, options)
81
+ end
82
+ end