mongoid 2.0.2 → 2.1.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.
- data/README.rdoc +3 -1
- data/Rakefile +3 -2
- data/lib/config/locales/bg.yml +6 -0
- data/lib/config/locales/de.yml +6 -0
- data/lib/config/locales/en-GB.yml +48 -0
- data/lib/config/locales/en.yml +6 -3
- data/lib/config/locales/es.yml +6 -0
- data/lib/config/locales/fr.yml +6 -0
- data/lib/config/locales/hi.yml +39 -0
- data/lib/config/locales/hu.yml +13 -7
- data/lib/config/locales/id.yml +3 -0
- data/lib/config/locales/it.yml +7 -1
- data/lib/config/locales/ja.yml +4 -1
- data/lib/config/locales/kr.yml +9 -34
- data/lib/config/locales/nl.yml +6 -0
- data/lib/config/locales/pl.yml +6 -0
- data/lib/config/locales/pt-BR.yml +6 -0
- data/lib/config/locales/pt.yml +6 -0
- data/lib/config/locales/ro.yml +6 -0
- data/lib/config/locales/ru.yml +6 -0
- data/lib/config/locales/sv.yml +6 -0
- data/lib/config/locales/vi.yml +3 -0
- data/lib/config/locales/zh-CN.yml +6 -0
- data/lib/mongoid.rb +51 -45
- data/lib/mongoid/atomic.rb +145 -0
- data/lib/mongoid/atomic/modifiers.rb +109 -0
- data/lib/mongoid/atomic/paths.rb +3 -0
- data/lib/mongoid/atomic/paths/embedded.rb +43 -0
- data/lib/mongoid/atomic/paths/embedded/many.rb +44 -0
- data/lib/mongoid/atomic/paths/embedded/one.rb +43 -0
- data/lib/mongoid/atomic/paths/root.rb +40 -0
- data/lib/mongoid/attributes.rb +12 -23
- data/lib/mongoid/attributes/processing.rb +5 -5
- data/lib/mongoid/callbacks.rb +2 -0
- data/lib/mongoid/collection.rb +12 -59
- data/lib/mongoid/collections.rb +23 -20
- data/lib/mongoid/collections/master.rb +6 -4
- data/lib/mongoid/collections/operations.rb +1 -0
- data/lib/mongoid/collections/retry.rb +7 -0
- data/lib/mongoid/components.rb +2 -2
- data/lib/mongoid/config.rb +42 -55
- data/lib/mongoid/config/database.rb +6 -2
- data/lib/mongoid/config/replset_database.rb +7 -3
- data/lib/mongoid/contexts.rb +9 -3
- data/lib/mongoid/contexts/enumerable.rb +7 -3
- data/lib/mongoid/contexts/mongo.rb +139 -101
- data/lib/mongoid/criteria.rb +86 -69
- data/lib/mongoid/criterion/complex.rb +32 -5
- data/lib/mongoid/criterion/inclusion.rb +4 -2
- data/lib/mongoid/criterion/optional.rb +111 -86
- data/lib/mongoid/criterion/selector.rb +8 -4
- data/lib/mongoid/cursor.rb +27 -27
- data/lib/mongoid/dirty.rb +54 -214
- data/lib/mongoid/document.rb +37 -39
- data/lib/mongoid/errors/document_not_found.rb +3 -4
- data/lib/mongoid/errors/invalid_collection.rb +2 -3
- data/lib/mongoid/errors/invalid_database.rb +2 -3
- data/lib/mongoid/errors/invalid_field.rb +2 -3
- data/lib/mongoid/errors/invalid_options.rb +19 -7
- data/lib/mongoid/errors/invalid_type.rb +2 -3
- data/lib/mongoid/errors/mongoid_error.rb +5 -6
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +2 -3
- data/lib/mongoid/errors/unsupported_version.rb +2 -3
- data/lib/mongoid/errors/validations.rb +2 -3
- data/lib/mongoid/extensions.rb +8 -62
- data/lib/mongoid/extensions/array/deletion.rb +29 -0
- data/lib/mongoid/extensions/false_class/equality.rb +14 -1
- data/lib/mongoid/extensions/hash/criteria_helpers.rb +21 -10
- data/lib/mongoid/extensions/hash/scoping.rb +14 -1
- data/lib/mongoid/extensions/nil/collectionization.rb +12 -1
- data/lib/mongoid/extensions/object/reflections.rb +33 -2
- data/lib/mongoid/extensions/object_id/conversions.rb +2 -36
- data/lib/mongoid/extensions/proc/scoping.rb +14 -1
- data/lib/mongoid/extensions/string/conversions.rb +4 -16
- data/lib/mongoid/extensions/string/inflections.rb +35 -14
- data/lib/mongoid/extensions/symbol/inflections.rb +38 -12
- data/lib/mongoid/extensions/true_class/equality.rb +14 -1
- data/lib/mongoid/extras.rb +11 -30
- data/lib/mongoid/factory.rb +1 -1
- data/lib/mongoid/fields.rb +121 -29
- data/lib/mongoid/fields/mappings.rb +36 -0
- data/lib/mongoid/fields/serializable.rb +131 -0
- data/lib/mongoid/fields/serializable/array.rb +64 -0
- data/lib/mongoid/fields/serializable/big_decimal.rb +42 -0
- data/lib/mongoid/fields/serializable/bignum.rb +10 -0
- data/lib/mongoid/fields/serializable/binary.rb +11 -0
- data/lib/mongoid/fields/serializable/boolean.rb +44 -0
- data/lib/mongoid/fields/serializable/date.rb +51 -0
- data/lib/mongoid/fields/serializable/date_time.rb +28 -0
- data/lib/mongoid/fields/serializable/fixnum.rb +10 -0
- data/lib/mongoid/fields/serializable/float.rb +33 -0
- data/lib/mongoid/fields/serializable/foreign_keys/array.rb +56 -0
- data/lib/mongoid/fields/serializable/foreign_keys/object.rb +43 -0
- data/lib/mongoid/fields/serializable/hash.rb +25 -0
- data/lib/mongoid/fields/serializable/integer.rb +33 -0
- data/lib/mongoid/fields/serializable/object.rb +11 -0
- data/lib/mongoid/fields/serializable/object_id.rb +32 -0
- data/lib/mongoid/fields/serializable/range.rb +42 -0
- data/lib/mongoid/fields/serializable/set.rb +42 -0
- data/lib/mongoid/fields/serializable/string.rb +28 -0
- data/lib/mongoid/fields/serializable/symbol.rb +28 -0
- data/lib/mongoid/fields/serializable/time.rb +12 -0
- data/lib/mongoid/fields/serializable/time_with_zone.rb +12 -0
- data/lib/mongoid/fields/serializable/timekeeping.rb +102 -0
- data/lib/mongoid/finders.rb +61 -37
- data/lib/mongoid/hierarchy.rb +43 -8
- data/lib/mongoid/identity_map.rb +106 -0
- data/lib/mongoid/indexes.rb +17 -1
- data/lib/mongoid/javascript.rb +2 -3
- data/lib/mongoid/keys.rb +10 -21
- data/lib/mongoid/logger.rb +22 -1
- data/lib/mongoid/matchers/all.rb +10 -0
- data/lib/mongoid/matchers/default.rb +1 -1
- data/lib/mongoid/matchers/exists.rb +10 -0
- data/lib/mongoid/matchers/gt.rb +10 -0
- data/lib/mongoid/matchers/gte.rb +10 -0
- data/lib/mongoid/matchers/in.rb +10 -0
- data/lib/mongoid/matchers/lt.rb +10 -0
- data/lib/mongoid/matchers/lte.rb +10 -0
- data/lib/mongoid/matchers/ne.rb +10 -0
- data/lib/mongoid/matchers/nin.rb +10 -0
- data/lib/mongoid/matchers/or.rb +7 -4
- data/lib/mongoid/matchers/size.rb +10 -0
- data/lib/mongoid/multi_database.rb +26 -6
- data/lib/mongoid/multi_parameter_attributes.rb +40 -17
- data/lib/mongoid/named_scope.rb +1 -2
- data/lib/mongoid/nested_attributes.rb +4 -1
- data/lib/mongoid/observer.rb +108 -5
- data/lib/mongoid/paranoia.rb +26 -26
- data/lib/mongoid/persistence.rb +15 -21
- data/lib/mongoid/persistence/atomic.rb +135 -0
- data/lib/mongoid/persistence/atomic/add_to_set.rb +11 -8
- data/lib/mongoid/persistence/atomic/bit.rb +37 -0
- data/lib/mongoid/persistence/atomic/inc.rb +9 -6
- data/lib/mongoid/persistence/atomic/operation.rb +48 -7
- data/lib/mongoid/persistence/atomic/pop.rb +34 -0
- data/lib/mongoid/persistence/atomic/pull.rb +34 -0
- data/lib/mongoid/persistence/atomic/pull_all.rb +10 -9
- data/lib/mongoid/persistence/atomic/push.rb +8 -5
- data/lib/mongoid/persistence/atomic/push_all.rb +31 -0
- data/lib/mongoid/persistence/atomic/rename.rb +31 -0
- data/lib/mongoid/persistence/atomic/set.rb +30 -0
- data/lib/mongoid/persistence/atomic/unset.rb +28 -0
- data/lib/mongoid/persistence/deletion.rb +32 -0
- data/lib/mongoid/persistence/insertion.rb +41 -0
- data/lib/mongoid/persistence/modification.rb +37 -0
- data/lib/mongoid/persistence/operations.rb +214 -0
- data/lib/mongoid/persistence/operations/embedded/insert.rb +42 -0
- data/lib/mongoid/persistence/operations/embedded/remove.rb +40 -0
- data/lib/mongoid/persistence/operations/insert.rb +34 -0
- data/lib/mongoid/persistence/operations/remove.rb +33 -0
- data/lib/mongoid/persistence/operations/update.rb +53 -0
- data/lib/mongoid/railtie.rb +21 -33
- data/lib/mongoid/railties/database.rake +12 -12
- data/lib/mongoid/relations.rb +9 -5
- data/lib/mongoid/relations/accessors.rb +15 -36
- data/lib/mongoid/relations/auto_save.rb +2 -2
- data/lib/mongoid/relations/binding.rb +28 -1
- data/lib/mongoid/relations/bindings/embedded/in.rb +17 -30
- data/lib/mongoid/relations/bindings/embedded/many.rb +16 -21
- data/lib/mongoid/relations/bindings/embedded/one.rb +11 -16
- data/lib/mongoid/relations/bindings/referenced/in.rb +31 -32
- data/lib/mongoid/relations/bindings/referenced/many.rb +19 -61
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +15 -63
- data/lib/mongoid/relations/bindings/referenced/one.rb +18 -26
- data/lib/mongoid/relations/builder.rb +4 -2
- data/lib/mongoid/relations/builders.rb +21 -2
- data/lib/mongoid/relations/builders/embedded/in.rb +5 -1
- data/lib/mongoid/relations/builders/embedded/many.rb +12 -4
- data/lib/mongoid/relations/builders/embedded/one.rb +5 -1
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +2 -2
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +1 -1
- data/lib/mongoid/relations/builders/referenced/in.rb +2 -5
- data/lib/mongoid/relations/builders/referenced/many.rb +2 -3
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +14 -5
- data/lib/mongoid/relations/builders/referenced/one.rb +2 -3
- data/lib/mongoid/relations/embedded/atomic.rb +2 -2
- data/lib/mongoid/relations/embedded/in.rb +72 -41
- data/lib/mongoid/relations/embedded/many.rb +116 -120
- data/lib/mongoid/relations/embedded/one.rb +59 -41
- data/lib/mongoid/relations/embedded/sort.rb +31 -0
- data/lib/mongoid/relations/macros.rb +28 -24
- data/lib/mongoid/relations/many.rb +10 -103
- data/lib/mongoid/relations/metadata.rb +335 -38
- data/lib/mongoid/relations/one.rb +7 -32
- data/lib/mongoid/relations/options.rb +47 -0
- data/lib/mongoid/relations/proxy.rb +29 -28
- data/lib/mongoid/relations/referenced/batch.rb +2 -3
- data/lib/mongoid/relations/referenced/in.rb +66 -53
- data/lib/mongoid/relations/referenced/many.rb +216 -143
- data/lib/mongoid/relations/referenced/many_to_many.rb +132 -163
- data/lib/mongoid/relations/referenced/one.rb +76 -58
- data/lib/mongoid/relations/synchronization.rb +113 -0
- data/lib/mongoid/relations/targets.rb +2 -0
- data/lib/mongoid/relations/targets/enumerable.rb +329 -0
- data/lib/mongoid/safety.rb +24 -156
- data/lib/mongoid/serialization.rb +21 -0
- data/lib/mongoid/state.rb +34 -0
- data/lib/mongoid/threaded.rb +175 -0
- data/lib/mongoid/timestamps/updated.rb +1 -1
- data/lib/mongoid/validations.rb +3 -7
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/versioning.rb +61 -7
- data/lib/rack/mongoid.rb +2 -0
- data/lib/rack/mongoid/middleware/identity_map.rb +38 -0
- data/lib/rails/generators/mongoid/model/model_generator.rb +1 -1
- data/lib/rails/generators/mongoid/model/templates/{model.rb → model.rb.tt} +0 -0
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +1 -1
- data/lib/rails/generators/mongoid/observer/templates/{observer.rb → observer.rb.tt} +0 -0
- data/lib/rails/mongoid.rb +17 -17
- metadata +136 -102
- data/lib/mongoid/atomicity.rb +0 -111
- data/lib/mongoid/collections/cyclic_iterator.rb +0 -34
- data/lib/mongoid/collections/slaves.rb +0 -61
- data/lib/mongoid/extensions/array/conversions.rb +0 -23
- data/lib/mongoid/extensions/array/parentization.rb +0 -13
- data/lib/mongoid/extensions/big_decimal/conversions.rb +0 -19
- data/lib/mongoid/extensions/binary/conversions.rb +0 -17
- data/lib/mongoid/extensions/boolean/conversions.rb +0 -27
- data/lib/mongoid/extensions/date/conversions.rb +0 -25
- data/lib/mongoid/extensions/datetime/conversions.rb +0 -12
- data/lib/mongoid/extensions/float/conversions.rb +0 -20
- data/lib/mongoid/extensions/hash/conversions.rb +0 -19
- data/lib/mongoid/extensions/integer/conversions.rb +0 -20
- data/lib/mongoid/extensions/object/conversions.rb +0 -25
- data/lib/mongoid/extensions/range/conversions.rb +0 -25
- data/lib/mongoid/extensions/set/conversions.rb +0 -20
- data/lib/mongoid/extensions/symbol/conversions.rb +0 -21
- data/lib/mongoid/extensions/time_conversions.rb +0 -38
- data/lib/mongoid/field.rb +0 -162
- data/lib/mongoid/paths.rb +0 -61
- data/lib/mongoid/persistence/command.rb +0 -71
- data/lib/mongoid/persistence/insert.rb +0 -53
- data/lib/mongoid/persistence/insert_embedded.rb +0 -43
- data/lib/mongoid/persistence/remove.rb +0 -44
- data/lib/mongoid/persistence/remove_all.rb +0 -40
- data/lib/mongoid/persistence/remove_embedded.rb +0 -48
- data/lib/mongoid/persistence/update.rb +0 -77
- data/lib/mongoid/safe.rb +0 -23
- data/lib/mongoid/validations/referenced.rb +0 -58
|
@@ -6,9 +6,8 @@ module Mongoid #:nodoc
|
|
|
6
6
|
# does not exist. If multiple ids were passed then it will display all of
|
|
7
7
|
# those.
|
|
8
8
|
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
# <tt>DocumentNotFound.new(Person, ["1", "2"])</tt>
|
|
9
|
+
# @example Create the error.
|
|
10
|
+
# DocumentNotFound.new(Person, ["1", "2"])
|
|
12
11
|
class DocumentNotFound < MongoidError
|
|
13
12
|
|
|
14
13
|
attr_reader :klass, :identifiers
|
|
@@ -20,7 +19,7 @@ module Mongoid #:nodoc
|
|
|
20
19
|
super(
|
|
21
20
|
translate(
|
|
22
21
|
"document_not_found",
|
|
23
|
-
{ :klass => klass.name, :identifiers =>
|
|
22
|
+
{ :klass => klass.name, :identifiers => identifiers }
|
|
24
23
|
)
|
|
25
24
|
)
|
|
26
25
|
end
|
|
@@ -5,9 +5,8 @@ module Mongoid #:nodoc
|
|
|
5
5
|
# This error is raised when trying to access a Mongo::Collection from an
|
|
6
6
|
# embedded document.
|
|
7
7
|
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
# <tt>InvalidCollection.new(Address)</tt>
|
|
8
|
+
# @example Create the error.
|
|
9
|
+
# InvalidCollection.new(Address)
|
|
11
10
|
class InvalidCollection < MongoidError
|
|
12
11
|
def initialize(klass)
|
|
13
12
|
super(
|
|
@@ -6,9 +6,8 @@ module Mongoid #:nodoc
|
|
|
6
6
|
# by attempting to set an object on the db that is not a +Mongo::DB+, or
|
|
7
7
|
# not setting anything at all.
|
|
8
8
|
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
# <tt>InvalidDatabase.new("Not a DB")</tt>
|
|
9
|
+
# @example Create the error.
|
|
10
|
+
# InvalidDatabase.new("Not a DB")
|
|
12
11
|
class InvalidDatabase < MongoidError
|
|
13
12
|
def initialize(database)
|
|
14
13
|
super(
|
|
@@ -5,9 +5,8 @@ module Mongoid #:nodoc
|
|
|
5
5
|
# This error is raised when trying to create a field that conflicts with
|
|
6
6
|
# a Mongoid internal attribute or method.
|
|
7
7
|
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
# <tt>InvalidField.new('collection')</tt>
|
|
8
|
+
# @example Create the error.
|
|
9
|
+
# InvalidField.new('collection')
|
|
11
10
|
class InvalidField < MongoidError
|
|
12
11
|
def initialize(name)
|
|
13
12
|
super(
|
|
@@ -2,14 +2,26 @@
|
|
|
2
2
|
module Mongoid #:nodoc
|
|
3
3
|
module Errors #:nodoc
|
|
4
4
|
|
|
5
|
-
# Raised when invalid options are passed
|
|
6
|
-
#
|
|
7
|
-
# Example:
|
|
8
|
-
#
|
|
9
|
-
# <tt>InvalidOptions.new</tt>
|
|
5
|
+
# Raised when invalid options are passed to a relation macro.
|
|
10
6
|
class InvalidOptions < MongoidError
|
|
11
|
-
|
|
12
|
-
|
|
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
|
+
)
|
|
13
25
|
end
|
|
14
26
|
end
|
|
15
27
|
end
|
|
@@ -5,9 +5,8 @@ module Mongoid #:nodoc
|
|
|
5
5
|
# Raised when trying to get or set a value for a defined field, where the
|
|
6
6
|
# type of the object does not match the defined field type.
|
|
7
7
|
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
# <tt>InvalidType.new(Array, "Not an Array")</tt>
|
|
8
|
+
# @example Create the error.
|
|
9
|
+
# InvalidType.new(Array, "Not an Array")
|
|
11
10
|
class InvalidType < MongoidError
|
|
12
11
|
def initialize(klass, value)
|
|
13
12
|
super(
|
|
@@ -11,14 +11,13 @@ module Mongoid #:nodoc
|
|
|
11
11
|
# Given the key of the specific error and the options hash, translate the
|
|
12
12
|
# message.
|
|
13
13
|
#
|
|
14
|
-
#
|
|
14
|
+
# @example Translate the message.
|
|
15
|
+
# error.translate("errors", :key => value)
|
|
15
16
|
#
|
|
16
|
-
# key
|
|
17
|
-
# options
|
|
17
|
+
# @param [ String ] key The key of the error in the locales.
|
|
18
|
+
# @param [ Hash ] options The objects to pass to create the message.
|
|
18
19
|
#
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
# A localized error message string.
|
|
20
|
+
# @return [ String ] A localized error message string.
|
|
22
21
|
def translate(key, options)
|
|
23
22
|
::I18n.translate("#{BASE_KEY}.#{key}", options)
|
|
24
23
|
end
|
|
@@ -4,9 +4,8 @@ module Mongoid #:nodoc
|
|
|
4
4
|
# This error is raised when trying to create set nested records above the
|
|
5
5
|
# specified :limit
|
|
6
6
|
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#<tt>TooManyNestedAttributeRecords.new('association', limit)
|
|
7
|
+
# @example Create the error.
|
|
8
|
+
# TooManyNestedAttributeRecords.new('association', limit)
|
|
10
9
|
class TooManyNestedAttributeRecords < MongoidError
|
|
11
10
|
def initialize(association, limit)
|
|
12
11
|
super(
|
|
@@ -4,9 +4,8 @@ module Mongoid #:nodoc
|
|
|
4
4
|
|
|
5
5
|
# Raised when the database version is not supported by Mongoid.
|
|
6
6
|
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
# <tt>UnsupportedVersion.new(Mongo::ServerVersion.new("1.3.1"))</tt>
|
|
7
|
+
# @example Create the error.
|
|
8
|
+
# UnsupportedVersion.new(Mongo::ServerVersion.new("1.3.1"))
|
|
10
9
|
class UnsupportedVersion < MongoidError
|
|
11
10
|
def initialize(version)
|
|
12
11
|
super(
|
|
@@ -5,9 +5,8 @@ module Mongoid #:nodoc
|
|
|
5
5
|
# Raised when a persistence method ending in ! fails validation. The message
|
|
6
6
|
# will contain the full error messages from the +Document+ in question.
|
|
7
7
|
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
# <tt>Validations.new(person.errors)</tt>
|
|
8
|
+
# @example Create the error.
|
|
9
|
+
# Validations.new(person.errors)
|
|
11
10
|
class Validations < MongoidError
|
|
12
11
|
attr_reader :document
|
|
13
12
|
def initialize(document)
|
data/lib/mongoid/extensions.rb
CHANGED
|
@@ -1,80 +1,33 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
|
-
require "mongoid/extensions/
|
|
3
|
-
require "mongoid/extensions/array/conversions"
|
|
4
|
-
require "mongoid/extensions/array/parentization"
|
|
5
|
-
require "mongoid/extensions/set/conversions"
|
|
6
|
-
require "mongoid/extensions/big_decimal/conversions"
|
|
7
|
-
require "mongoid/extensions/binary/conversions"
|
|
8
|
-
require "mongoid/extensions/boolean/conversions"
|
|
9
|
-
require "mongoid/extensions/date/conversions"
|
|
10
|
-
require "mongoid/extensions/datetime/conversions"
|
|
2
|
+
require "mongoid/extensions/array/deletion"
|
|
11
3
|
require "mongoid/extensions/false_class/equality"
|
|
12
|
-
require "mongoid/extensions/float/conversions"
|
|
13
|
-
require "mongoid/extensions/hash/conversions"
|
|
14
4
|
require "mongoid/extensions/hash/criteria_helpers"
|
|
15
5
|
require "mongoid/extensions/hash/scoping"
|
|
16
|
-
require "mongoid/extensions/integer/conversions"
|
|
17
6
|
require "mongoid/extensions/nil/collectionization"
|
|
18
7
|
require "mongoid/extensions/object/checks"
|
|
19
|
-
require "mongoid/extensions/object/conversions"
|
|
20
8
|
require "mongoid/extensions/object/reflections"
|
|
21
9
|
require "mongoid/extensions/object/yoda"
|
|
22
10
|
require "mongoid/extensions/proc/scoping"
|
|
23
|
-
require "mongoid/extensions/range/conversions"
|
|
24
11
|
require "mongoid/extensions/string/conversions"
|
|
25
12
|
require "mongoid/extensions/string/inflections"
|
|
26
13
|
require "mongoid/extensions/symbol/inflections"
|
|
27
|
-
require "mongoid/extensions/symbol/conversions"
|
|
28
14
|
require "mongoid/extensions/true_class/equality"
|
|
29
15
|
require "mongoid/extensions/object_id/conversions"
|
|
30
16
|
|
|
31
17
|
class Array #:nodoc
|
|
32
|
-
include Mongoid::Extensions::Array::
|
|
33
|
-
include Mongoid::Extensions::Array::Parentization
|
|
18
|
+
include Mongoid::Extensions::Array::Deletion
|
|
34
19
|
end
|
|
35
20
|
|
|
36
|
-
class
|
|
37
|
-
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
class BigDecimal #:nodoc
|
|
41
|
-
extend Mongoid::Extensions::BigDecimal::Conversions
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
class Binary #:nodoc
|
|
45
|
-
extend Mongoid::Extensions::Binary::Conversions
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
class Boolean #:nodoc
|
|
49
|
-
include Mongoid::Extensions::Boolean::Conversions
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
class DateTime #:nodoc
|
|
53
|
-
extend Mongoid::Extensions::TimeConversions
|
|
54
|
-
extend Mongoid::Extensions::DateTime::Conversions
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
class Date #:nodoc
|
|
58
|
-
extend Mongoid::Extensions::TimeConversions
|
|
59
|
-
extend Mongoid::Extensions::Date::Conversions
|
|
60
|
-
end
|
|
21
|
+
class Binary; end #:nodoc:
|
|
22
|
+
class Boolean; end #:nodoc:
|
|
61
23
|
|
|
62
24
|
class FalseClass #:nodoc
|
|
63
25
|
include Mongoid::Extensions::FalseClass::Equality
|
|
64
26
|
end
|
|
65
27
|
|
|
66
|
-
class Float #:nodoc
|
|
67
|
-
extend Mongoid::Extensions::Float::Conversions
|
|
68
|
-
end
|
|
69
|
-
|
|
70
28
|
class Hash #:nodoc
|
|
71
29
|
include Mongoid::Extensions::Hash::CriteriaHelpers
|
|
72
30
|
include Mongoid::Extensions::Hash::Scoping
|
|
73
|
-
include Mongoid::Extensions::Hash::Conversions
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
class Integer #:nodoc
|
|
77
|
-
extend Mongoid::Extensions::Integer::Conversions
|
|
78
31
|
end
|
|
79
32
|
|
|
80
33
|
class NilClass #:nodoc
|
|
@@ -83,7 +36,6 @@ end
|
|
|
83
36
|
|
|
84
37
|
class Object #:nodoc:
|
|
85
38
|
include Mongoid::Extensions::Object::Checks
|
|
86
|
-
include Mongoid::Extensions::Object::Conversions
|
|
87
39
|
include Mongoid::Extensions::Object::Reflections
|
|
88
40
|
include Mongoid::Extensions::Object::Yoda
|
|
89
41
|
end
|
|
@@ -92,23 +44,14 @@ class Proc #:nodoc:
|
|
|
92
44
|
include Mongoid::Extensions::Proc::Scoping
|
|
93
45
|
end
|
|
94
46
|
|
|
95
|
-
class Range
|
|
96
|
-
include Mongoid::Extensions::Range::Conversions
|
|
97
|
-
end
|
|
98
|
-
|
|
99
47
|
class String #:nodoc
|
|
100
|
-
include Mongoid::Extensions::String::Inflections
|
|
101
48
|
include Mongoid::Extensions::String::Conversions
|
|
49
|
+
include Mongoid::Extensions::String::Inflections
|
|
102
50
|
end
|
|
103
51
|
|
|
104
52
|
class Symbol #:nodoc
|
|
105
53
|
remove_method :size if instance_methods.include? :size # temporal fix for ruby 1.9
|
|
106
54
|
include Mongoid::Extensions::Symbol::Inflections
|
|
107
|
-
include Mongoid::Extensions::Symbol::Conversions
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
class Time #:nodoc
|
|
111
|
-
extend Mongoid::Extensions::TimeConversions
|
|
112
55
|
end
|
|
113
56
|
|
|
114
57
|
class TrueClass #:nodoc
|
|
@@ -120,4 +63,7 @@ class BSON::ObjectId #:nodoc
|
|
|
120
63
|
def as_json(options = nil)
|
|
121
64
|
to_s
|
|
122
65
|
end
|
|
66
|
+
def to_xml(options = nil)
|
|
67
|
+
ActiveSupport::XmlMini.to_tag(options[:root], self.to_s, options)
|
|
68
|
+
end
|
|
123
69
|
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module Array #:nodoc:
|
|
5
|
+
|
|
6
|
+
# This module contains deletion helpers for arrays.
|
|
7
|
+
module Deletion
|
|
8
|
+
|
|
9
|
+
# Delete the first object in the array that is equal to the supplied
|
|
10
|
+
# object and return it. This is much faster than performing a standard
|
|
11
|
+
# delete for large arrays ince it attempt to delete multiple in the
|
|
12
|
+
# other.
|
|
13
|
+
#
|
|
14
|
+
# @example Delete the first object.
|
|
15
|
+
# [ "1", "2", "1" ].delete_one("1")
|
|
16
|
+
#
|
|
17
|
+
# @param [ Object ] object The object to delete.
|
|
18
|
+
#
|
|
19
|
+
# @return [ Object ] The deleted object.
|
|
20
|
+
#
|
|
21
|
+
# @since 2.1.0
|
|
22
|
+
def delete_one(object)
|
|
23
|
+
position = index(object)
|
|
24
|
+
position ? delete_at(position) : nil
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -2,7 +2,20 @@
|
|
|
2
2
|
module Mongoid #:nodoc:
|
|
3
3
|
module Extensions #:nodoc:
|
|
4
4
|
module FalseClass #:nodoc:
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
# Adds equality hooks for false values.
|
|
7
|
+
module Equality
|
|
8
|
+
|
|
9
|
+
# Is the passed value a boolean?
|
|
10
|
+
#
|
|
11
|
+
# @example Is the value a boolean type?
|
|
12
|
+
# false.is_a?(Boolean)
|
|
13
|
+
#
|
|
14
|
+
# @param [ Class ] other The class to check.
|
|
15
|
+
#
|
|
16
|
+
# @return [ true, false ] If the other is a boolean.
|
|
17
|
+
#
|
|
18
|
+
# @since 1.0.0
|
|
6
19
|
def is_a?(other)
|
|
7
20
|
return true if other.name == "Boolean"
|
|
8
21
|
super(other)
|
|
@@ -2,19 +2,30 @@
|
|
|
2
2
|
module Mongoid #:nodoc:
|
|
3
3
|
module Extensions #:nodoc:
|
|
4
4
|
module Hash #:nodoc:
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
# Expands complex criterion into mongodb selectors.
|
|
7
|
+
module CriteriaHelpers
|
|
8
|
+
|
|
9
|
+
# Expand the complex criteria into a MongoDB compliant selector hash.
|
|
10
|
+
#
|
|
11
|
+
# @example Convert the criterion.
|
|
12
|
+
# {}.expand_complex_criteria
|
|
13
|
+
#
|
|
14
|
+
# @return [ Hash ] The mongo selector.
|
|
15
|
+
#
|
|
16
|
+
# @since 1.0.0
|
|
6
17
|
def expand_complex_criteria
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
18
|
+
{}.tap do |hsh|
|
|
19
|
+
each_pair do |k,v|
|
|
20
|
+
case k
|
|
21
|
+
when Mongoid::Criterion::Complex
|
|
22
|
+
hsh[k.key] ||= {}
|
|
23
|
+
hsh[k.key].merge!({"$#{k.operator}" => v})
|
|
24
|
+
else
|
|
25
|
+
hsh[k] = v
|
|
26
|
+
end
|
|
15
27
|
end
|
|
16
28
|
end
|
|
17
|
-
hsh
|
|
18
29
|
end
|
|
19
30
|
end
|
|
20
31
|
end
|
|
@@ -2,7 +2,20 @@
|
|
|
2
2
|
module Mongoid #:nodoc:
|
|
3
3
|
module Extensions #:nodoc:
|
|
4
4
|
module Hash #:nodoc:
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
# Adds functionality for criteria scoping/merging.
|
|
7
|
+
module Scoping
|
|
8
|
+
|
|
9
|
+
# Get the hash scoped for criteria merges.
|
|
10
|
+
#
|
|
11
|
+
# @example Get the hash.
|
|
12
|
+
# { :field => "value" }.scoped
|
|
13
|
+
#
|
|
14
|
+
# @param [ Array ] args The arguments (ignored).
|
|
15
|
+
#
|
|
16
|
+
# @return [ Hash ] The hash unmodified.
|
|
17
|
+
#
|
|
18
|
+
# @since 1.0.0
|
|
6
19
|
def scoped(*args)
|
|
7
20
|
self
|
|
8
21
|
end
|
|
@@ -2,7 +2,18 @@
|
|
|
2
2
|
module Mongoid #:nodoc:
|
|
3
3
|
module Extensions #:nodoc:
|
|
4
4
|
module Nil #:nodoc:
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
# This module safeguards collection access on anonymous classes.
|
|
7
|
+
module Collectionization
|
|
8
|
+
|
|
9
|
+
# Get the name of a nil collection.
|
|
10
|
+
#
|
|
11
|
+
# @example Get the nil name.
|
|
12
|
+
# nil.collectionize
|
|
13
|
+
#
|
|
14
|
+
# @return [ String ] A blank string.
|
|
15
|
+
#
|
|
16
|
+
# @since 1.0.0
|
|
6
17
|
def collectionize
|
|
7
18
|
to_s.collectionize
|
|
8
19
|
end
|
|
@@ -2,14 +2,45 @@
|
|
|
2
2
|
module Mongoid #:nodoc:
|
|
3
3
|
module Extensions #:nodoc:
|
|
4
4
|
module Object #:nodoc:
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
# This module contains reflection convenience methods.
|
|
7
|
+
module Reflections
|
|
6
8
|
extend ActiveSupport::Concern
|
|
7
9
|
|
|
10
|
+
# Get the value for an instance variable or nil if it doesn't exist.
|
|
11
|
+
#
|
|
12
|
+
# @example Get the value for an instance var.
|
|
13
|
+
# document.ivar("person")
|
|
14
|
+
#
|
|
15
|
+
# @param [ String ] name The name of the variable.
|
|
16
|
+
#
|
|
17
|
+
# @return [ Object, nil ] The value or nil.
|
|
18
|
+
#
|
|
19
|
+
# @since 2.0.0.rc.1
|
|
8
20
|
def ivar(name)
|
|
9
21
|
if instance_variable_defined?("@#{name}")
|
|
10
22
|
return instance_variable_get("@#{name}")
|
|
23
|
+
else
|
|
24
|
+
false
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Remove the instance variable for the provided name.
|
|
29
|
+
#
|
|
30
|
+
# @example Remove the instance variable
|
|
31
|
+
# document.remove_ivar("person")
|
|
32
|
+
#
|
|
33
|
+
# @param [ String ] name The name of the variable.
|
|
34
|
+
#
|
|
35
|
+
# @return [ true, false ] If the variable was defined.
|
|
36
|
+
#
|
|
37
|
+
# @since 2.1.0
|
|
38
|
+
def remove_ivar(name)
|
|
39
|
+
if instance_variable_defined?("@#{name}")
|
|
40
|
+
return remove_instance_variable("@#{name}")
|
|
41
|
+
else
|
|
42
|
+
false
|
|
11
43
|
end
|
|
12
|
-
nil
|
|
13
44
|
end
|
|
14
45
|
end
|
|
15
46
|
end
|