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.
- data/CHANGELOG.md +615 -0
- data/LICENSE +20 -0
- data/README.md +62 -0
- data/Rakefile +49 -0
- data/lib/config/locales/bg.yml +54 -0
- data/lib/config/locales/de.yml +54 -0
- data/lib/config/locales/en-GB.yml +55 -0
- data/lib/config/locales/en.yml +55 -0
- data/lib/config/locales/es.yml +52 -0
- data/lib/config/locales/fr.yml +55 -0
- data/lib/config/locales/hi.yml +46 -0
- data/lib/config/locales/hu.yml +57 -0
- data/lib/config/locales/id.yml +55 -0
- data/lib/config/locales/it.yml +52 -0
- data/lib/config/locales/ja.yml +50 -0
- data/lib/config/locales/kr.yml +47 -0
- data/lib/config/locales/nl.yml +52 -0
- data/lib/config/locales/pl.yml +52 -0
- data/lib/config/locales/pt-BR.yml +53 -0
- data/lib/config/locales/pt.yml +53 -0
- data/lib/config/locales/ro.yml +59 -0
- data/lib/config/locales/ru.yml +54 -0
- data/lib/config/locales/sv.yml +53 -0
- data/lib/config/locales/vi.yml +55 -0
- data/lib/config/locales/zh-CN.yml +46 -0
- data/lib/mongoid.rb +148 -0
- data/lib/mongoid/atomic.rb +230 -0
- data/lib/mongoid/atomic/modifiers.rb +243 -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 +234 -0
- data/lib/mongoid/attributes/processing.rb +146 -0
- data/lib/mongoid/callbacks.rb +135 -0
- data/lib/mongoid/collection.rb +153 -0
- data/lib/mongoid/collection_proxy.rb +59 -0
- data/lib/mongoid/collections.rb +120 -0
- data/lib/mongoid/collections/master.rb +45 -0
- data/lib/mongoid/collections/operations.rb +44 -0
- data/lib/mongoid/collections/retry.rb +46 -0
- data/lib/mongoid/components.rb +96 -0
- data/lib/mongoid/config.rb +347 -0
- data/lib/mongoid/config/database.rb +186 -0
- data/lib/mongoid/config/replset_database.rb +82 -0
- data/lib/mongoid/connection_proxy.rb +30 -0
- data/lib/mongoid/contexts.rb +25 -0
- data/lib/mongoid/contexts/enumerable.rb +288 -0
- data/lib/mongoid/contexts/enumerable/sort.rb +43 -0
- data/lib/mongoid/contexts/mongo.rb +409 -0
- data/lib/mongoid/copyable.rb +48 -0
- data/lib/mongoid/criteria.rb +418 -0
- data/lib/mongoid/criterion/builder.rb +34 -0
- data/lib/mongoid/criterion/complex.rb +84 -0
- data/lib/mongoid/criterion/creational.rb +34 -0
- data/lib/mongoid/criterion/exclusion.rb +108 -0
- data/lib/mongoid/criterion/inclusion.rb +305 -0
- data/lib/mongoid/criterion/inspection.rb +22 -0
- data/lib/mongoid/criterion/optional.rb +232 -0
- data/lib/mongoid/criterion/selector.rb +153 -0
- data/lib/mongoid/cursor.rb +86 -0
- data/lib/mongoid/database_proxy.rb +97 -0
- data/lib/mongoid/default_scope.rb +36 -0
- data/lib/mongoid/dirty.rb +110 -0
- data/lib/mongoid/document.rb +280 -0
- data/lib/mongoid/errors.rb +17 -0
- data/lib/mongoid/errors/callback.rb +26 -0
- data/lib/mongoid/errors/document_not_found.rb +28 -0
- data/lib/mongoid/errors/eager_load.rb +25 -0
- data/lib/mongoid/errors/invalid_collection.rb +18 -0
- data/lib/mongoid/errors/invalid_database.rb +19 -0
- data/lib/mongoid/errors/invalid_field.rb +18 -0
- data/lib/mongoid/errors/invalid_find.rb +19 -0
- data/lib/mongoid/errors/invalid_options.rb +28 -0
- data/lib/mongoid/errors/invalid_time.rb +25 -0
- data/lib/mongoid/errors/invalid_type.rb +25 -0
- data/lib/mongoid/errors/mixed_relations.rb +37 -0
- data/lib/mongoid/errors/mongoid_error.rb +26 -0
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +20 -0
- data/lib/mongoid/errors/unsaved_document.rb +23 -0
- data/lib/mongoid/errors/unsupported_version.rb +20 -0
- data/lib/mongoid/errors/validations.rb +23 -0
- data/lib/mongoid/extensions.rb +82 -0
- data/lib/mongoid/extensions/array/deletion.rb +29 -0
- data/lib/mongoid/extensions/false_class/equality.rb +26 -0
- data/lib/mongoid/extensions/hash/criteria_helpers.rb +45 -0
- data/lib/mongoid/extensions/hash/scoping.rb +25 -0
- data/lib/mongoid/extensions/integer/checks.rb +23 -0
- data/lib/mongoid/extensions/nil/collectionization.rb +23 -0
- data/lib/mongoid/extensions/object/checks.rb +29 -0
- data/lib/mongoid/extensions/object/reflections.rb +48 -0
- data/lib/mongoid/extensions/object/substitutable.rb +15 -0
- data/lib/mongoid/extensions/object/yoda.rb +44 -0
- data/lib/mongoid/extensions/object_id/conversions.rb +60 -0
- data/lib/mongoid/extensions/proc/scoping.rb +25 -0
- data/lib/mongoid/extensions/string/checks.rb +36 -0
- data/lib/mongoid/extensions/string/conversions.rb +22 -0
- data/lib/mongoid/extensions/string/inflections.rb +118 -0
- data/lib/mongoid/extensions/symbol/checks.rb +23 -0
- data/lib/mongoid/extensions/symbol/inflections.rb +66 -0
- data/lib/mongoid/extensions/true_class/equality.rb +26 -0
- data/lib/mongoid/extras.rb +31 -0
- data/lib/mongoid/factory.rb +46 -0
- data/lib/mongoid/fields.rb +332 -0
- data/lib/mongoid/fields/mappings.rb +41 -0
- data/lib/mongoid/fields/serializable.rb +201 -0
- data/lib/mongoid/fields/serializable/array.rb +49 -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 +43 -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 +32 -0
- data/lib/mongoid/fields/serializable/foreign_keys/array.rb +42 -0
- data/lib/mongoid/fields/serializable/foreign_keys/object.rb +47 -0
- data/lib/mongoid/fields/serializable/hash.rb +11 -0
- data/lib/mongoid/fields/serializable/integer.rb +44 -0
- data/lib/mongoid/fields/serializable/localized.rb +41 -0
- data/lib/mongoid/fields/serializable/nil_class.rb +38 -0
- data/lib/mongoid/fields/serializable/object.rb +11 -0
- data/lib/mongoid/fields/serializable/object_id.rb +31 -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 +27 -0
- data/lib/mongoid/fields/serializable/symbol.rb +27 -0
- data/lib/mongoid/fields/serializable/time.rb +23 -0
- data/lib/mongoid/fields/serializable/time_with_zone.rb +23 -0
- data/lib/mongoid/fields/serializable/timekeeping.rb +106 -0
- data/lib/mongoid/finders.rb +152 -0
- data/lib/mongoid/hierarchy.rb +120 -0
- data/lib/mongoid/identity.rb +92 -0
- data/lib/mongoid/identity_map.rb +119 -0
- data/lib/mongoid/indexes.rb +54 -0
- data/lib/mongoid/inspection.rb +54 -0
- data/lib/mongoid/javascript.rb +20 -0
- data/lib/mongoid/javascript/functions.yml +63 -0
- data/lib/mongoid/json.rb +16 -0
- data/lib/mongoid/keys.rb +144 -0
- data/lib/mongoid/logger.rb +39 -0
- data/lib/mongoid/matchers.rb +32 -0
- data/lib/mongoid/matchers/all.rb +21 -0
- data/lib/mongoid/matchers/and.rb +30 -0
- data/lib/mongoid/matchers/default.rb +70 -0
- data/lib/mongoid/matchers/exists.rb +23 -0
- data/lib/mongoid/matchers/gt.rb +21 -0
- data/lib/mongoid/matchers/gte.rb +21 -0
- data/lib/mongoid/matchers/in.rb +21 -0
- data/lib/mongoid/matchers/lt.rb +21 -0
- data/lib/mongoid/matchers/lte.rb +21 -0
- data/lib/mongoid/matchers/ne.rb +21 -0
- data/lib/mongoid/matchers/nin.rb +21 -0
- data/lib/mongoid/matchers/or.rb +33 -0
- data/lib/mongoid/matchers/size.rb +21 -0
- data/lib/mongoid/matchers/strategies.rb +93 -0
- data/lib/mongoid/multi_database.rb +31 -0
- data/lib/mongoid/multi_parameter_attributes.rb +106 -0
- data/lib/mongoid/named_scope.rb +146 -0
- data/lib/mongoid/nested_attributes.rb +54 -0
- data/lib/mongoid/observer.rb +170 -0
- data/lib/mongoid/paranoia.rb +158 -0
- data/lib/mongoid/persistence.rb +264 -0
- data/lib/mongoid/persistence/atomic.rb +223 -0
- data/lib/mongoid/persistence/atomic/add_to_set.rb +35 -0
- data/lib/mongoid/persistence/atomic/bit.rb +37 -0
- data/lib/mongoid/persistence/atomic/inc.rb +31 -0
- data/lib/mongoid/persistence/atomic/operation.rb +85 -0
- 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 +34 -0
- data/lib/mongoid/persistence/atomic/push.rb +31 -0
- data/lib/mongoid/persistence/atomic/push_all.rb +31 -0
- data/lib/mongoid/persistence/atomic/rename.rb +31 -0
- data/lib/mongoid/persistence/atomic/sets.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 +211 -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 +64 -0
- data/lib/mongoid/railtie.rb +126 -0
- data/lib/mongoid/railties/database.rake +182 -0
- data/lib/mongoid/railties/document.rb +12 -0
- data/lib/mongoid/relations.rb +144 -0
- data/lib/mongoid/relations/accessors.rb +138 -0
- data/lib/mongoid/relations/auto_save.rb +38 -0
- data/lib/mongoid/relations/binding.rb +26 -0
- data/lib/mongoid/relations/bindings.rb +9 -0
- data/lib/mongoid/relations/bindings/embedded/in.rb +69 -0
- data/lib/mongoid/relations/bindings/embedded/many.rb +93 -0
- data/lib/mongoid/relations/bindings/embedded/one.rb +61 -0
- data/lib/mongoid/relations/bindings/referenced/in.rb +76 -0
- data/lib/mongoid/relations/bindings/referenced/many.rb +54 -0
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +51 -0
- data/lib/mongoid/relations/bindings/referenced/one.rb +58 -0
- data/lib/mongoid/relations/builder.rb +57 -0
- data/lib/mongoid/relations/builders.rb +83 -0
- data/lib/mongoid/relations/builders/embedded/in.rb +29 -0
- data/lib/mongoid/relations/builders/embedded/many.rb +40 -0
- data/lib/mongoid/relations/builders/embedded/one.rb +30 -0
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +110 -0
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +135 -0
- data/lib/mongoid/relations/builders/referenced/in.rb +26 -0
- data/lib/mongoid/relations/builders/referenced/many.rb +27 -0
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +38 -0
- data/lib/mongoid/relations/builders/referenced/one.rb +26 -0
- data/lib/mongoid/relations/cascading.rb +56 -0
- data/lib/mongoid/relations/cascading/delete.rb +19 -0
- data/lib/mongoid/relations/cascading/destroy.rb +26 -0
- data/lib/mongoid/relations/cascading/nullify.rb +18 -0
- data/lib/mongoid/relations/cascading/strategy.rb +26 -0
- data/lib/mongoid/relations/constraint.rb +42 -0
- data/lib/mongoid/relations/conversions.rb +35 -0
- data/lib/mongoid/relations/cyclic.rb +103 -0
- data/lib/mongoid/relations/embedded/atomic.rb +89 -0
- data/lib/mongoid/relations/embedded/atomic/operation.rb +63 -0
- data/lib/mongoid/relations/embedded/atomic/pull.rb +65 -0
- data/lib/mongoid/relations/embedded/atomic/push_all.rb +59 -0
- data/lib/mongoid/relations/embedded/atomic/set.rb +61 -0
- data/lib/mongoid/relations/embedded/atomic/unset.rb +41 -0
- data/lib/mongoid/relations/embedded/in.rb +220 -0
- data/lib/mongoid/relations/embedded/many.rb +560 -0
- data/lib/mongoid/relations/embedded/one.rb +206 -0
- data/lib/mongoid/relations/embedded/sort.rb +31 -0
- data/lib/mongoid/relations/macros.rb +310 -0
- data/lib/mongoid/relations/many.rb +135 -0
- data/lib/mongoid/relations/metadata.rb +919 -0
- data/lib/mongoid/relations/nested_builder.rb +75 -0
- data/lib/mongoid/relations/one.rb +36 -0
- data/lib/mongoid/relations/options.rb +47 -0
- data/lib/mongoid/relations/polymorphic.rb +40 -0
- data/lib/mongoid/relations/proxy.rb +145 -0
- data/lib/mongoid/relations/referenced/batch.rb +72 -0
- data/lib/mongoid/relations/referenced/batch/insert.rb +57 -0
- data/lib/mongoid/relations/referenced/in.rb +262 -0
- data/lib/mongoid/relations/referenced/many.rb +623 -0
- data/lib/mongoid/relations/referenced/many_to_many.rb +396 -0
- data/lib/mongoid/relations/referenced/one.rb +272 -0
- data/lib/mongoid/relations/reflections.rb +62 -0
- data/lib/mongoid/relations/synchronization.rb +153 -0
- data/lib/mongoid/relations/targets.rb +2 -0
- data/lib/mongoid/relations/targets/enumerable.rb +372 -0
- data/lib/mongoid/reloading.rb +91 -0
- data/lib/mongoid/safety.rb +105 -0
- data/lib/mongoid/scope.rb +31 -0
- data/lib/mongoid/serialization.rb +134 -0
- data/lib/mongoid/sharding.rb +61 -0
- data/lib/mongoid/state.rb +97 -0
- data/lib/mongoid/threaded.rb +530 -0
- data/lib/mongoid/threaded/lifecycle.rb +192 -0
- data/lib/mongoid/timestamps.rb +15 -0
- data/lib/mongoid/timestamps/created.rb +24 -0
- data/lib/mongoid/timestamps/timeless.rb +50 -0
- data/lib/mongoid/timestamps/updated.rb +26 -0
- data/lib/mongoid/validations.rb +140 -0
- data/lib/mongoid/validations/associated.rb +46 -0
- data/lib/mongoid/validations/uniqueness.rb +145 -0
- data/lib/mongoid/version.rb +4 -0
- data/lib/mongoid/versioning.rb +185 -0
- data/lib/rack/mongoid.rb +2 -0
- data/lib/rack/mongoid/middleware/identity_map.rb +38 -0
- data/lib/rails/generators/mongoid/config/config_generator.rb +25 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +20 -0
- data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +19 -0
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +17 -0
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +4 -0
- data/lib/rails/generators/mongoid_generator.rb +70 -0
- data/lib/rails/mongoid.rb +91 -0
- metadata +465 -0
@@ -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
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module FalseClass #:nodoc:
|
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
|
19
|
+
def is_a?(other)
|
20
|
+
return true if other.name == "Boolean"
|
21
|
+
super(other)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module Hash #:nodoc:
|
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
|
17
|
+
def expand_complex_criteria
|
18
|
+
{}.tap do |hsh|
|
19
|
+
each_pair do |k,v|
|
20
|
+
if k.respond_to?(:key) && k.respond_to?(:to_mongo_query)
|
21
|
+
hsh[k.key] ||= {}
|
22
|
+
hsh[k.key].merge!(k.to_mongo_query(v))
|
23
|
+
else
|
24
|
+
hsh[k] = v
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Get the id attribute from this hash, whether it's prefixed with an
|
31
|
+
# underscore or is a symbol.
|
32
|
+
#
|
33
|
+
# @example Extract the id.
|
34
|
+
# { :_id => 1 }.extract_id
|
35
|
+
#
|
36
|
+
# @return [ Object ] The value of the id.
|
37
|
+
#
|
38
|
+
# @since 2.3.2
|
39
|
+
def extract_id
|
40
|
+
self["id"] || self["_id"] || self[:id] || self[:_id]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module Hash #:nodoc:
|
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
|
19
|
+
def scoped(*args)
|
20
|
+
self
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module Integer #:nodoc:
|
5
|
+
|
6
|
+
# This module has object checks in it.
|
7
|
+
module Checks #:nodoc:
|
8
|
+
|
9
|
+
# Is the object not to be converted to bson on criteria creation?
|
10
|
+
#
|
11
|
+
# @example Is the object unconvertable?
|
12
|
+
# object.unconvertable_to_bson?
|
13
|
+
#
|
14
|
+
# @return [ true ] If the object is unconvertable.
|
15
|
+
#
|
16
|
+
# @since 2.2.1
|
17
|
+
def unconvertable_to_bson?
|
18
|
+
true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module Nil #:nodoc:
|
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
|
17
|
+
def collectionize
|
18
|
+
to_s.collectionize
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module Object #:nodoc:
|
5
|
+
|
6
|
+
# This module has object checks in it.
|
7
|
+
module Checks #:nodoc:
|
8
|
+
|
9
|
+
# Since Active Support's blank? check looks to see if the object
|
10
|
+
# responds to #empty? and will call it if it does, we need another way
|
11
|
+
# to check if the object is empty or nil in case the user has defined a
|
12
|
+
# field called "empty" on the document.
|
13
|
+
#
|
14
|
+
# @example Is the array vacant?
|
15
|
+
# [].vacant?
|
16
|
+
#
|
17
|
+
# @example Is the object vacant?
|
18
|
+
# nil.vacant?
|
19
|
+
#
|
20
|
+
# @return [ true, false ] True if empty or nil, false if not.
|
21
|
+
#
|
22
|
+
# @since 2.0.2
|
23
|
+
def _vacant?
|
24
|
+
is_a?(::Array) || is_a?(::String) ? empty? : !self
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module Object #:nodoc:
|
5
|
+
|
6
|
+
# This module contains reflection convenience methods.
|
7
|
+
module Reflections
|
8
|
+
extend ActiveSupport::Concern
|
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
|
20
|
+
def ivar(name)
|
21
|
+
if instance_variable_defined?("@#{name}")
|
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
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module Object #:nodoc:
|
5
|
+
|
6
|
+
# This module is for defining base substitutable behaviour.
|
7
|
+
module Substitutable #:nodoc:
|
8
|
+
|
9
|
+
def substitutable
|
10
|
+
self
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module Object #:nodoc:
|
5
|
+
|
6
|
+
# This module behaves like the master jedi.
|
7
|
+
module Yoda #:nodoc:
|
8
|
+
|
9
|
+
# Do or do not, there is no try. -- Yoda.
|
10
|
+
#
|
11
|
+
# @example Do or do not.
|
12
|
+
# object.do_or_do_not(:use, "The Force")
|
13
|
+
#
|
14
|
+
# @param [ String, Symbol ] name The method name.
|
15
|
+
# @param [ Array ] *args The arguments.
|
16
|
+
#
|
17
|
+
# @return [ Object, nil ] The result of the method call or nil if the
|
18
|
+
# method does not exist.
|
19
|
+
#
|
20
|
+
# @since 2.0.0.rc.1
|
21
|
+
def do_or_do_not(name, *args)
|
22
|
+
return nil unless name
|
23
|
+
respond_to?(name) ? send(name, *args) : nil
|
24
|
+
end
|
25
|
+
|
26
|
+
# You must unlearn what you have learned. -- Yoda
|
27
|
+
#
|
28
|
+
# @example You must perform this execution.
|
29
|
+
# object.you_must(:use, "The Force")
|
30
|
+
#
|
31
|
+
# @param [ String, Symbol ] name The method name.
|
32
|
+
# @param [ Array ] *args The arguments.
|
33
|
+
#
|
34
|
+
# @return [ Object, nil ] The result of the method call or nil if the
|
35
|
+
# method does not exist. Nil if the object is frozen.
|
36
|
+
#
|
37
|
+
# @since 2.2.1
|
38
|
+
def you_must(name, *args)
|
39
|
+
frozen? ? nil : do_or_do_not(name, *args)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module ObjectId #:nodoc:
|
5
|
+
|
6
|
+
# Provides conversions to and from BSON::ObjectIds and Strings, Arrays,
|
7
|
+
# and Hashes.
|
8
|
+
module Conversions
|
9
|
+
|
10
|
+
# Convert the supplied arguments to object ids based on the class
|
11
|
+
# settings.
|
12
|
+
#
|
13
|
+
# @todo Durran: This method can be refactored.
|
14
|
+
#
|
15
|
+
# @example Convert a string to an object id
|
16
|
+
# BSON::ObjectId.convert(Person, "4c52c439931a90ab29000003")
|
17
|
+
#
|
18
|
+
# @example Convert an array of strings to object ids.
|
19
|
+
# BSON::ObjectId.convert(Person, [ "4c52c439931a90ab29000003" ])
|
20
|
+
#
|
21
|
+
# @example Convert a hash of id strings to object ids.
|
22
|
+
# BSON::ObjectId.convert(Person, { :_id => "4c52c439931a90ab29000003" })
|
23
|
+
#
|
24
|
+
# @param [ Class ] klass The class to convert the ids for.
|
25
|
+
# @param [ Object, Array, Hash ] object The object to convert.
|
26
|
+
#
|
27
|
+
# @raise BSON::InvalidObjectId If using object ids and passed bad
|
28
|
+
# strings.
|
29
|
+
#
|
30
|
+
# @return [ BSON::ObjectId, Array, Hash ] The converted object ids.
|
31
|
+
#
|
32
|
+
# @since 2.0.0.rc.7
|
33
|
+
def convert(klass, object, reject_blank = true)
|
34
|
+
return object if object.is_a?(BSON::ObjectId) || !klass.using_object_ids?
|
35
|
+
case object
|
36
|
+
when ::String
|
37
|
+
return nil if object.blank?
|
38
|
+
if object.unconvertable_to_bson?
|
39
|
+
object
|
40
|
+
else
|
41
|
+
BSON::ObjectId.legal?(object) ? BSON::ObjectId.from_string(object) : object
|
42
|
+
end
|
43
|
+
when ::Array
|
44
|
+
object.delete_if { |arg| arg.blank? } if reject_blank
|
45
|
+
object.replace(object.map { |arg| convert(klass, arg, reject_blank) })
|
46
|
+
when ::Hash
|
47
|
+
object.tap do |hash|
|
48
|
+
hash.each_pair do |key, value|
|
49
|
+
next unless klass.object_id_field?(key)
|
50
|
+
hash[key] = convert(klass, value, reject_blank)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
else
|
54
|
+
object
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module Proc #:nodoc:
|
5
|
+
|
6
|
+
# Adds functionality for criteria scoping/merging.
|
7
|
+
module Scoping
|
8
|
+
|
9
|
+
# Get the proc scoped for criteria merges.
|
10
|
+
#
|
11
|
+
# @example Get the hash.
|
12
|
+
# proc.scoped
|
13
|
+
#
|
14
|
+
# @param [ Array ] args The arguments to delegate to the proc.
|
15
|
+
#
|
16
|
+
# @return [ Object ] The result of the proc call.
|
17
|
+
#
|
18
|
+
# @since 1.0.0
|
19
|
+
def scoped(*args)
|
20
|
+
call(*args).scoped
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module String #:nodoc:
|
5
|
+
|
6
|
+
# This module has object checks in it.
|
7
|
+
module Checks #:nodoc:
|
8
|
+
attr_accessor :unconvertable_to_bson
|
9
|
+
|
10
|
+
# Is the string a valid value for a Mongoid id?
|
11
|
+
#
|
12
|
+
# @example Is the string an id value?
|
13
|
+
# "_id".mongoid_id?
|
14
|
+
#
|
15
|
+
# @return [ true, false ] If the string is id or _id.
|
16
|
+
#
|
17
|
+
# @since 2.3.1
|
18
|
+
def mongoid_id?
|
19
|
+
self =~ /^(|_)id$/
|
20
|
+
end
|
21
|
+
|
22
|
+
# Is the object not to be converted to bson on criteria creation?
|
23
|
+
#
|
24
|
+
# @example Is the object unconvertable?
|
25
|
+
# object.unconvertable_to_bson?
|
26
|
+
#
|
27
|
+
# @return [ true, false ] If the object is unconvertable.
|
28
|
+
#
|
29
|
+
# @since 2.2.1
|
30
|
+
def unconvertable_to_bson?
|
31
|
+
!!@unconvertable_to_bson
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|