mongoid 2.8.1 → 3.0.0.rc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +802 -58
- data/LICENSE +1 -1
- data/README.md +10 -11
- data/Rakefile +2 -8
- data/lib/config/locales/en.yml +441 -51
- data/lib/mongoid.rb +24 -39
- data/lib/mongoid/atomic.rb +16 -33
- data/lib/mongoid/atomic/modifiers.rb +2 -2
- data/lib/mongoid/atomic/paths/embedded.rb +4 -5
- data/lib/mongoid/atomic/paths/embedded/many.rb +6 -6
- data/lib/mongoid/atomic/paths/embedded/one.rb +5 -5
- data/lib/mongoid/atomic/paths/root.rb +4 -5
- data/lib/mongoid/attributes.rb +95 -32
- data/lib/mongoid/attributes/processing.rb +14 -10
- data/lib/mongoid/attributes/readonly.rb +56 -0
- data/lib/mongoid/callbacks.rb +90 -27
- data/lib/mongoid/collections/retry.rb +2 -3
- data/lib/mongoid/components.rb +11 -23
- data/lib/mongoid/config.rb +87 -233
- data/lib/mongoid/config/environment.rb +5 -6
- data/lib/mongoid/config/inflections.rb +6 -0
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/config/validators.rb +3 -0
- data/lib/mongoid/config/validators/option.rb +25 -0
- data/lib/mongoid/config/validators/session.rb +140 -0
- data/lib/mongoid/contextual.rb +50 -0
- data/lib/mongoid/contextual/aggregable/memory.rb +98 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +181 -0
- data/lib/mongoid/contextual/atomic.rb +179 -0
- data/lib/mongoid/contextual/command.rb +43 -0
- data/lib/mongoid/contextual/find_and_modify.rb +66 -0
- data/lib/mongoid/contextual/map_reduce.rb +273 -0
- data/lib/mongoid/contextual/memory.rb +383 -0
- data/lib/mongoid/contextual/mongo.rb +543 -0
- data/lib/mongoid/copyable.rb +3 -34
- data/lib/mongoid/criteria.rb +436 -250
- data/lib/mongoid/criterion/inspection.rb +14 -8
- data/lib/mongoid/criterion/scoping.rb +114 -44
- data/lib/mongoid/dirty.rb +152 -67
- data/lib/mongoid/document.rb +69 -50
- data/lib/mongoid/errors.rb +22 -1
- data/lib/mongoid/errors/ambiguous_relationship.rb +51 -0
- data/lib/mongoid/errors/callback.rb +5 -6
- data/lib/mongoid/errors/delete_restriction.rb +29 -0
- data/lib/mongoid/errors/document_not_found.rb +98 -17
- data/lib/mongoid/errors/eager_load.rb +3 -6
- data/lib/mongoid/errors/invalid_collection.rb +3 -3
- data/lib/mongoid/errors/invalid_config_option.rb +27 -0
- data/lib/mongoid/errors/invalid_database.rb +3 -3
- data/lib/mongoid/errors/invalid_field.rb +54 -8
- data/lib/mongoid/errors/invalid_field_option.rb +35 -0
- data/lib/mongoid/errors/invalid_find.rb +3 -3
- data/lib/mongoid/errors/invalid_index.rb +28 -0
- data/lib/mongoid/errors/invalid_options.rb +4 -4
- data/lib/mongoid/errors/invalid_scope.rb +24 -0
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +38 -0
- data/lib/mongoid/errors/invalid_storage_options.rb +27 -0
- data/lib/mongoid/errors/invalid_time.rb +3 -6
- data/lib/mongoid/errors/inverse_not_found.rb +29 -0
- data/lib/mongoid/errors/mixed_relations.rb +4 -9
- data/lib/mongoid/errors/mixed_session_configuration.rb +28 -0
- data/lib/mongoid/errors/mongoid_error.rb +54 -3
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +28 -0
- data/lib/mongoid/errors/no_default_session.rb +23 -0
- data/lib/mongoid/errors/no_environment.rb +3 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +24 -0
- data/lib/mongoid/errors/no_parent.rb +24 -0
- data/lib/mongoid/errors/no_session_config.rb +22 -0
- data/lib/mongoid/errors/no_session_database.rb +27 -0
- data/lib/mongoid/errors/no_session_hosts.rb +27 -0
- data/lib/mongoid/errors/no_sessions_config.rb +20 -0
- data/lib/mongoid/errors/readonly_attribute.rb +25 -0
- data/lib/mongoid/errors/scope_overwrite.rb +4 -4
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +4 -4
- data/lib/mongoid/errors/unknown_attribute.rb +25 -0
- data/lib/mongoid/errors/unsaved_document.rb +4 -8
- data/lib/mongoid/errors/unsupported_javascript.rb +27 -0
- data/lib/mongoid/errors/unsupported_version.rb +4 -4
- data/lib/mongoid/errors/validations.rb +7 -6
- data/lib/mongoid/errors/versioning_not_on_root.rb +23 -0
- data/lib/mongoid/extensions.rb +28 -76
- data/lib/mongoid/extensions/array.rb +127 -0
- data/lib/mongoid/extensions/big_decimal.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +24 -0
- data/lib/mongoid/extensions/date.rb +70 -0
- data/lib/mongoid/extensions/date_time.rb +68 -0
- data/lib/mongoid/extensions/false_class.rb +26 -0
- data/lib/mongoid/extensions/float.rb +44 -0
- data/lib/mongoid/extensions/hash.rb +91 -0
- data/lib/mongoid/extensions/integer.rb +54 -0
- data/lib/mongoid/extensions/module.rb +28 -0
- data/lib/mongoid/extensions/nil_class.rb +21 -0
- data/lib/mongoid/extensions/object.rb +188 -0
- data/lib/mongoid/extensions/object_id.rb +53 -0
- data/lib/mongoid/extensions/range.rb +55 -0
- data/lib/mongoid/extensions/regexp.rb +27 -0
- data/lib/mongoid/extensions/set.rb +55 -0
- data/lib/mongoid/extensions/string.rb +155 -0
- data/lib/mongoid/extensions/symbol.rb +54 -0
- data/lib/mongoid/extensions/time.rb +78 -0
- data/lib/mongoid/extensions/time_with_zone.rb +55 -0
- data/lib/mongoid/extensions/true_class.rb +26 -0
- data/lib/mongoid/factory.rb +1 -1
- data/lib/mongoid/fields.rb +129 -194
- data/lib/mongoid/fields/foreign_key.rb +134 -0
- data/lib/mongoid/fields/localized.rb +73 -0
- data/lib/mongoid/fields/standard.rb +268 -0
- data/lib/mongoid/fields/validators.rb +2 -0
- data/lib/mongoid/fields/validators/macro.rb +83 -0
- data/lib/mongoid/finders.rb +42 -43
- data/lib/mongoid/hierarchy.rb +25 -14
- data/lib/mongoid/identity_map.rb +31 -19
- data/lib/mongoid/indexes.rb +66 -15
- data/lib/mongoid/indexes/validators/options.rb +80 -0
- data/lib/mongoid/inspection.rb +1 -1
- data/lib/mongoid/javascript.rb +1 -1
- data/lib/mongoid/json.rb +2 -2
- data/lib/mongoid/loggable.rb +69 -0
- data/lib/mongoid/matchers.rb +1 -1
- data/lib/mongoid/matchers/all.rb +7 -8
- data/lib/mongoid/matchers/and.rb +3 -3
- data/lib/mongoid/matchers/default.rb +6 -4
- data/lib/mongoid/matchers/exists.rb +2 -2
- data/lib/mongoid/matchers/gt.rb +2 -2
- data/lib/mongoid/matchers/gte.rb +2 -2
- data/lib/mongoid/matchers/in.rb +3 -7
- data/lib/mongoid/matchers/lt.rb +2 -2
- data/lib/mongoid/matchers/lte.rb +2 -2
- data/lib/mongoid/matchers/ne.rb +2 -2
- data/lib/mongoid/matchers/nin.rb +2 -2
- data/lib/mongoid/matchers/or.rb +2 -2
- data/lib/mongoid/matchers/size.rb +2 -2
- data/lib/mongoid/matchers/strategies.rb +3 -3
- data/lib/mongoid/multi_parameter_attributes.rb +8 -10
- data/lib/mongoid/nested_attributes.rb +17 -9
- data/lib/mongoid/observer.rb +1 -2
- data/lib/mongoid/paranoia.rb +13 -18
- data/lib/mongoid/persistence.rb +43 -39
- data/lib/mongoid/persistence/atomic.rb +2 -2
- data/lib/mongoid/persistence/atomic/add_to_set.rb +5 -9
- data/lib/mongoid/persistence/atomic/bit.rb +5 -7
- data/lib/mongoid/persistence/atomic/inc.rb +5 -7
- data/lib/mongoid/persistence/atomic/operation.rb +45 -6
- data/lib/mongoid/persistence/atomic/pop.rb +5 -7
- data/lib/mongoid/persistence/atomic/pull.rb +5 -7
- data/lib/mongoid/persistence/atomic/pull_all.rb +5 -7
- data/lib/mongoid/persistence/atomic/push.rb +4 -10
- data/lib/mongoid/persistence/atomic/push_all.rb +4 -10
- data/lib/mongoid/persistence/atomic/rename.rb +6 -7
- data/lib/mongoid/persistence/atomic/sets.rb +5 -7
- data/lib/mongoid/persistence/atomic/unset.rb +4 -5
- data/lib/mongoid/persistence/deletion.rb +2 -2
- data/lib/mongoid/persistence/insertion.rb +10 -16
- data/lib/mongoid/persistence/modification.rb +5 -9
- data/lib/mongoid/persistence/operations.rb +6 -19
- data/lib/mongoid/persistence/operations/embedded/insert.rb +7 -6
- data/lib/mongoid/persistence/operations/embedded/remove.rb +5 -5
- data/lib/mongoid/persistence/operations/insert.rb +4 -4
- data/lib/mongoid/persistence/operations/remove.rb +4 -4
- data/lib/mongoid/persistence/operations/update.rb +5 -5
- data/lib/mongoid/railtie.rb +26 -11
- data/lib/mongoid/railties/database.rake +22 -108
- data/lib/mongoid/relations.rb +4 -6
- data/lib/mongoid/relations/accessors.rb +119 -19
- data/lib/mongoid/relations/auto_save.rb +59 -5
- data/lib/mongoid/relations/binding.rb +211 -2
- data/lib/mongoid/relations/bindings/embedded/in.rb +16 -22
- data/lib/mongoid/relations/bindings/embedded/many.rb +9 -50
- data/lib/mongoid/relations/bindings/embedded/one.rb +10 -16
- data/lib/mongoid/relations/bindings/referenced/in.rb +31 -57
- data/lib/mongoid/relations/bindings/referenced/many.rb +8 -20
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +15 -19
- data/lib/mongoid/relations/bindings/referenced/one.rb +10 -24
- data/lib/mongoid/relations/builder.rb +3 -3
- data/lib/mongoid/relations/builders.rb +19 -16
- data/lib/mongoid/relations/builders/embedded/in.rb +5 -5
- data/lib/mongoid/relations/builders/embedded/many.rb +12 -12
- data/lib/mongoid/relations/builders/embedded/one.rb +6 -6
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +8 -8
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -4
- data/lib/mongoid/relations/builders/referenced/in.rb +4 -4
- data/lib/mongoid/relations/builders/referenced/many.rb +5 -5
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +7 -5
- data/lib/mongoid/relations/builders/referenced/one.rb +5 -5
- data/lib/mongoid/relations/cascading.rb +6 -4
- data/lib/mongoid/relations/cascading/delete.rb +3 -5
- data/lib/mongoid/relations/cascading/destroy.rb +3 -3
- data/lib/mongoid/relations/cascading/nullify.rb +3 -3
- data/lib/mongoid/relations/cascading/restrict.rb +37 -0
- data/lib/mongoid/relations/constraint.rb +4 -3
- data/lib/mongoid/relations/conversions.rb +5 -6
- data/lib/mongoid/relations/cyclic.rb +7 -7
- data/lib/mongoid/relations/embedded/batchable.rb +346 -0
- data/lib/mongoid/relations/embedded/in.rb +23 -12
- data/lib/mongoid/relations/embedded/many.rb +99 -161
- data/lib/mongoid/relations/embedded/one.rb +25 -14
- data/lib/mongoid/relations/macros.rb +105 -61
- data/lib/mongoid/relations/many.rb +93 -14
- data/lib/mongoid/relations/metadata.rb +200 -45
- data/lib/mongoid/relations/nested_builder.rb +3 -5
- data/lib/mongoid/relations/one.rb +2 -2
- data/lib/mongoid/relations/options.rb +2 -2
- data/lib/mongoid/relations/polymorphic.rb +9 -9
- data/lib/mongoid/relations/proxy.rb +60 -31
- data/lib/mongoid/relations/referenced/in.rb +40 -15
- data/lib/mongoid/relations/referenced/many.rb +117 -132
- data/lib/mongoid/relations/referenced/many_to_many.rb +101 -46
- data/lib/mongoid/relations/referenced/one.rb +34 -13
- data/lib/mongoid/relations/reflections.rb +3 -3
- data/lib/mongoid/relations/synchronization.rb +19 -23
- data/lib/mongoid/relations/targets/enumerable.rb +86 -57
- data/lib/mongoid/reloading.rb +12 -14
- data/lib/mongoid/scoping.rb +329 -0
- data/lib/mongoid/serialization.rb +8 -27
- data/lib/mongoid/sessions.rb +359 -0
- data/lib/mongoid/sessions/factory.rb +106 -0
- data/lib/mongoid/sessions/mongo_uri.rb +93 -0
- data/lib/mongoid/sessions/validators.rb +2 -0
- data/lib/mongoid/sessions/validators/storage.rb +49 -0
- data/lib/mongoid/sharding.rb +6 -6
- data/lib/mongoid/state.rb +6 -7
- data/lib/mongoid/threaded.rb +167 -59
- data/lib/mongoid/threaded/lifecycle.rb +21 -22
- data/lib/mongoid/threaded/sessions.rb +0 -0
- data/lib/mongoid/timestamps.rb +1 -1
- data/lib/mongoid/timestamps/created.rb +8 -4
- data/lib/mongoid/timestamps/timeless.rb +6 -4
- data/lib/mongoid/timestamps/updated.rb +3 -3
- data/lib/mongoid/unit_of_work.rb +61 -0
- data/lib/mongoid/validations.rb +27 -19
- data/lib/mongoid/validations/associated.rb +2 -2
- data/lib/mongoid/validations/format.rb +2 -2
- data/lib/mongoid/validations/presence.rb +31 -5
- data/lib/mongoid/validations/uniqueness.rb +9 -12
- data/lib/mongoid/version.rb +2 -2
- data/lib/mongoid/versioning.rb +25 -26
- data/lib/rack/mongoid/middleware/identity_map.rb +3 -3
- data/lib/rails/generators/mongoid/config/config_generator.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +59 -19
- data/lib/rails/generators/mongoid/model/model_generator.rb +7 -7
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +2 -2
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +4 -4
- data/lib/rails/generators/mongoid_generator.rb +5 -5
- data/lib/rails/mongoid.rb +69 -25
- metadata +110 -137
- checksums.yaml +0 -7
- data/lib/config/locales/bg.yml +0 -61
- data/lib/config/locales/de.yml +0 -61
- data/lib/config/locales/en-GB.yml +0 -64
- data/lib/config/locales/es.yml +0 -59
- data/lib/config/locales/fr.yml +0 -62
- data/lib/config/locales/hi.yml +0 -53
- data/lib/config/locales/hu.yml +0 -64
- data/lib/config/locales/id.yml +0 -62
- data/lib/config/locales/it.yml +0 -59
- data/lib/config/locales/ja.yml +0 -57
- data/lib/config/locales/kr.yml +0 -54
- data/lib/config/locales/nl.yml +0 -61
- data/lib/config/locales/pl.yml +0 -59
- data/lib/config/locales/pt-BR.yml +0 -60
- data/lib/config/locales/pt.yml +0 -60
- data/lib/config/locales/ro.yml +0 -66
- data/lib/config/locales/ru.yml +0 -61
- data/lib/config/locales/sv.yml +0 -60
- data/lib/config/locales/vi.yml +0 -62
- data/lib/config/locales/zh-CN.yml +0 -53
- data/lib/mongoid/collection.rb +0 -157
- data/lib/mongoid/collections.rb +0 -120
- data/lib/mongoid/collections/master.rb +0 -45
- data/lib/mongoid/collections/operations.rb +0 -44
- data/lib/mongoid/config/database.rb +0 -181
- data/lib/mongoid/config/replset_database.rb +0 -80
- data/lib/mongoid/contexts.rb +0 -25
- data/lib/mongoid/contexts/enumerable.rb +0 -313
- data/lib/mongoid/contexts/enumerable/sort.rb +0 -43
- data/lib/mongoid/contexts/mongo.rb +0 -487
- data/lib/mongoid/criterion/builder.rb +0 -34
- data/lib/mongoid/criterion/complex.rb +0 -84
- data/lib/mongoid/criterion/creational.rb +0 -34
- data/lib/mongoid/criterion/exclusion.rb +0 -110
- data/lib/mongoid/criterion/inclusion.rb +0 -290
- data/lib/mongoid/criterion/optional.rb +0 -259
- data/lib/mongoid/criterion/selector.rb +0 -177
- data/lib/mongoid/cursor.rb +0 -88
- data/lib/mongoid/default_scope.rb +0 -36
- data/lib/mongoid/errors/invalid_type.rb +0 -25
- data/lib/mongoid/extensions/array/deep_copy.rb +0 -25
- data/lib/mongoid/extensions/array/deletion.rb +0 -29
- data/lib/mongoid/extensions/false_class/equality.rb +0 -26
- data/lib/mongoid/extensions/hash/criteria_helpers.rb +0 -47
- data/lib/mongoid/extensions/hash/deep_copy.rb +0 -25
- data/lib/mongoid/extensions/hash/scoping.rb +0 -25
- data/lib/mongoid/extensions/integer/checks.rb +0 -23
- data/lib/mongoid/extensions/nil/collectionization.rb +0 -23
- data/lib/mongoid/extensions/object/checks.rb +0 -29
- data/lib/mongoid/extensions/object/deep_copy.rb +0 -21
- data/lib/mongoid/extensions/object/reflections.rb +0 -48
- data/lib/mongoid/extensions/object/substitutable.rb +0 -15
- data/lib/mongoid/extensions/object/yoda.rb +0 -44
- data/lib/mongoid/extensions/object_id/conversions.rb +0 -60
- data/lib/mongoid/extensions/proc/scoping.rb +0 -25
- data/lib/mongoid/extensions/string/checks.rb +0 -36
- data/lib/mongoid/extensions/string/conversions.rb +0 -22
- data/lib/mongoid/extensions/string/inflections.rb +0 -118
- data/lib/mongoid/extensions/symbol/checks.rb +0 -23
- data/lib/mongoid/extensions/symbol/inflections.rb +0 -67
- data/lib/mongoid/extensions/true_class/equality.rb +0 -26
- data/lib/mongoid/extras.rb +0 -31
- data/lib/mongoid/fields/internal/array.rb +0 -77
- data/lib/mongoid/fields/internal/big_decimal.rb +0 -63
- data/lib/mongoid/fields/internal/bignum.rb +0 -10
- data/lib/mongoid/fields/internal/binary.rb +0 -11
- data/lib/mongoid/fields/internal/boolean.rb +0 -58
- data/lib/mongoid/fields/internal/date.rb +0 -51
- data/lib/mongoid/fields/internal/date_time.rb +0 -28
- data/lib/mongoid/fields/internal/false_class.rb +0 -10
- data/lib/mongoid/fields/internal/fixnum.rb +0 -10
- data/lib/mongoid/fields/internal/float.rb +0 -47
- data/lib/mongoid/fields/internal/foreign_keys/array.rb +0 -88
- data/lib/mongoid/fields/internal/foreign_keys/object.rb +0 -56
- data/lib/mongoid/fields/internal/hash.rb +0 -11
- data/lib/mongoid/fields/internal/integer.rb +0 -59
- data/lib/mongoid/fields/internal/localized.rb +0 -62
- data/lib/mongoid/fields/internal/nil_class.rb +0 -53
- data/lib/mongoid/fields/internal/object.rb +0 -11
- data/lib/mongoid/fields/internal/object_id.rb +0 -46
- data/lib/mongoid/fields/internal/range.rb +0 -61
- data/lib/mongoid/fields/internal/set.rb +0 -57
- data/lib/mongoid/fields/internal/string.rb +0 -42
- data/lib/mongoid/fields/internal/symbol.rb +0 -43
- data/lib/mongoid/fields/internal/time.rb +0 -23
- data/lib/mongoid/fields/internal/time_with_zone.rb +0 -23
- data/lib/mongoid/fields/internal/timekeeping.rb +0 -122
- data/lib/mongoid/fields/internal/true_class.rb +0 -10
- data/lib/mongoid/fields/mappings.rb +0 -42
- data/lib/mongoid/fields/serializable.rb +0 -270
- data/lib/mongoid/identity.rb +0 -92
- data/lib/mongoid/keys.rb +0 -144
- data/lib/mongoid/logger.rb +0 -45
- data/lib/mongoid/multi_database.rb +0 -36
- data/lib/mongoid/named_scope.rb +0 -166
- data/lib/mongoid/relations/embedded/atomic.rb +0 -89
- data/lib/mongoid/relations/embedded/atomic/operation.rb +0 -63
- data/lib/mongoid/relations/embedded/atomic/pull.rb +0 -65
- data/lib/mongoid/relations/embedded/atomic/push_all.rb +0 -59
- data/lib/mongoid/relations/embedded/atomic/set.rb +0 -61
- data/lib/mongoid/relations/embedded/atomic/unset.rb +0 -41
- data/lib/mongoid/relations/referenced/batch.rb +0 -73
- data/lib/mongoid/relations/referenced/batch/insert.rb +0 -57
- data/lib/mongoid/safety.rb +0 -105
- data/lib/mongoid/scope.rb +0 -31
@@ -1,60 +0,0 @@
|
|
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
|
@@ -1,25 +0,0 @@
|
|
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 as_conditions(*args)
|
20
|
-
call(*args).as_conditions
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,36 +0,0 @@
|
|
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
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Mongoid #:nodoc:
|
3
|
-
module Extensions #:nodoc:
|
4
|
-
module String #:nodoc:
|
5
|
-
module Conversions #:nodoc:
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
|
8
|
-
# Convert the string to an array with the string in it.
|
9
|
-
#
|
10
|
-
# @example Convert the string to an array.
|
11
|
-
# "Testing".to_a
|
12
|
-
#
|
13
|
-
# @return [ Array ] An array with only the string in it.
|
14
|
-
#
|
15
|
-
# @since 1.0.0
|
16
|
-
def to_a
|
17
|
-
[ self ]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,118 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Mongoid #:nodoc:
|
3
|
-
module Extensions #:nodoc:
|
4
|
-
module String #:nodoc:
|
5
|
-
|
6
|
-
# This module contains convenience methods for string inflection and
|
7
|
-
# conversion.
|
8
|
-
module Inflections
|
9
|
-
|
10
|
-
ActiveSupport::Inflector.inflections do |inflect|
|
11
|
-
inflect.singular(/address$/, "address")
|
12
|
-
inflect.singular("addresses", "address")
|
13
|
-
inflect.irregular("canvas", "canvases")
|
14
|
-
end
|
15
|
-
|
16
|
-
# Represents how special characters will get converted when creating a
|
17
|
-
# composite key that should be unique and part of a url.
|
18
|
-
CHAR_CONV = {
|
19
|
-
" " => "-",
|
20
|
-
"!" => "-excl-",
|
21
|
-
"\"" => "-dblquo-",
|
22
|
-
"#" => "-hash-",
|
23
|
-
"$" => "-dol-",
|
24
|
-
"%" => "-perc-",
|
25
|
-
"&" => "-and-",
|
26
|
-
"'" => "-quo-",
|
27
|
-
"(" => "-oparen-",
|
28
|
-
")" => "-cparen-",
|
29
|
-
"*" => "-astx-",
|
30
|
-
"+" => "-plus-",
|
31
|
-
"," => "-comma-",
|
32
|
-
"-" => "-",
|
33
|
-
"." => "-period-",
|
34
|
-
"/" => "-fwdslsh-",
|
35
|
-
":" => "-colon-",
|
36
|
-
";" => "-semicol-",
|
37
|
-
"<" => "-lt-",
|
38
|
-
"=" => "-eq-",
|
39
|
-
">" => "-gt-",
|
40
|
-
"?" => "-ques-",
|
41
|
-
"@" => "-at-",
|
42
|
-
"[" => "-obrck-",
|
43
|
-
"\\" => "-bckslsh-",
|
44
|
-
"]" => "-clbrck-",
|
45
|
-
"^" => "-carat-",
|
46
|
-
"_" => "-undscr-",
|
47
|
-
"`" => "-bcktick-",
|
48
|
-
"{" => "-ocurly-",
|
49
|
-
"|" => "-pipe-",
|
50
|
-
"}" => "-clcurly-",
|
51
|
-
"~" => "-tilde-"
|
52
|
-
}
|
53
|
-
|
54
|
-
REVERSALS = {
|
55
|
-
"asc" => "desc",
|
56
|
-
"ascending" => "descending",
|
57
|
-
"desc" => "asc",
|
58
|
-
"descending" => "ascending"
|
59
|
-
}
|
60
|
-
|
61
|
-
# Convert the string to a collection friendly name.
|
62
|
-
#
|
63
|
-
# @example Collectionize the string.
|
64
|
-
# "namespace/model".collectionize
|
65
|
-
#
|
66
|
-
# @return [ String ] The string in collection friendly form.
|
67
|
-
def collectionize
|
68
|
-
tableize.gsub("/", "_")
|
69
|
-
end
|
70
|
-
|
71
|
-
# Convert this string to a key friendly string.
|
72
|
-
#
|
73
|
-
# @example Convert to key.
|
74
|
-
# "testing".identify
|
75
|
-
#
|
76
|
-
# @return [ String ] The key friendly string.
|
77
|
-
def identify
|
78
|
-
if Mongoid.parameterize_keys
|
79
|
-
key = ""
|
80
|
-
each_char { |c| key += (CHAR_CONV[c] || c.downcase) }; key
|
81
|
-
else
|
82
|
-
self
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
# Get the inverted sorting option.
|
87
|
-
#
|
88
|
-
# @example Get the inverted option.
|
89
|
-
# "asc".invert
|
90
|
-
#
|
91
|
-
# @return [ String ] The string inverted.
|
92
|
-
def invert
|
93
|
-
REVERSALS[self]
|
94
|
-
end
|
95
|
-
|
96
|
-
# Get the string as a getter string.
|
97
|
-
#
|
98
|
-
# @example Get the reader/getter
|
99
|
-
# "model=".reader
|
100
|
-
#
|
101
|
-
# @return [ String ] The string stripped of "=".
|
102
|
-
def reader
|
103
|
-
delete("=")
|
104
|
-
end
|
105
|
-
|
106
|
-
# Is this string a writer?
|
107
|
-
#
|
108
|
-
# @example Is the string a setter method?
|
109
|
-
# "model=".writer?
|
110
|
-
#
|
111
|
-
# @return [ true, false ] If the string contains "=".
|
112
|
-
def writer?
|
113
|
-
include?("=")
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Mongoid #:nodoc:
|
3
|
-
module Extensions #:nodoc:
|
4
|
-
module Symbol #:nodoc:
|
5
|
-
|
6
|
-
# This module has object checks in it.
|
7
|
-
module Checks #:nodoc:
|
8
|
-
|
9
|
-
# Is the symbol a valid value for a Mongoid id?
|
10
|
-
#
|
11
|
-
# @example Is the string an id value?
|
12
|
-
# :_id.mongoid_id?
|
13
|
-
#
|
14
|
-
# @return [ true, false ] If the symbol is :id or :_id.
|
15
|
-
#
|
16
|
-
# @since 2.3.1
|
17
|
-
def mongoid_id?
|
18
|
-
to_s =~ /^(|_)id$/
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Mongoid #:nodoc:
|
3
|
-
module Extensions #:nodoc:
|
4
|
-
module Symbol #:nodoc:
|
5
|
-
|
6
|
-
# This module contains convenience methods for symbol inflection and
|
7
|
-
# conversion.
|
8
|
-
module Inflections
|
9
|
-
|
10
|
-
REVERSALS = {
|
11
|
-
:asc => :desc,
|
12
|
-
:ascending => :descending,
|
13
|
-
:desc => :asc,
|
14
|
-
:descending => :ascending
|
15
|
-
}
|
16
|
-
|
17
|
-
# Get the inverted sorting option.
|
18
|
-
#
|
19
|
-
# @example Get the inverted option.
|
20
|
-
# :asc.invert
|
21
|
-
#
|
22
|
-
# @return [ String ] The string inverted.
|
23
|
-
def invert
|
24
|
-
REVERSALS[self]
|
25
|
-
end
|
26
|
-
|
27
|
-
# Define all the necessary methods on symbol to support Mongoid's
|
28
|
-
# complex criterion.
|
29
|
-
#
|
30
|
-
# @example A greater than criterion.
|
31
|
-
# :field.gt => 5
|
32
|
-
#
|
33
|
-
# @return [ Criterion::Complex ] The criterion.
|
34
|
-
#
|
35
|
-
# @since 1.0.0
|
36
|
-
[
|
37
|
-
"all",
|
38
|
-
"asc",
|
39
|
-
"ascending",
|
40
|
-
"desc",
|
41
|
-
"descending",
|
42
|
-
"exists",
|
43
|
-
"gt",
|
44
|
-
"gte",
|
45
|
-
"in",
|
46
|
-
"lt",
|
47
|
-
"lte",
|
48
|
-
"mod",
|
49
|
-
"ne",
|
50
|
-
"near",
|
51
|
-
"not",
|
52
|
-
"nin",
|
53
|
-
"size",
|
54
|
-
"within",
|
55
|
-
["matches","elemMatch"] ].each do |oper|
|
56
|
-
m, oper = oper
|
57
|
-
oper = m unless oper
|
58
|
-
class_eval <<-OPERATORS
|
59
|
-
def #{m}
|
60
|
-
Criterion::Complex.new(:key => self, :operator => "#{oper}")
|
61
|
-
end
|
62
|
-
OPERATORS
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Mongoid #:nodoc:
|
3
|
-
module Extensions #:nodoc:
|
4
|
-
module TrueClass #:nodoc:
|
5
|
-
|
6
|
-
# Adds equality hooks for true values.
|
7
|
-
module Equality
|
8
|
-
|
9
|
-
# Is the passed value a boolean?
|
10
|
-
#
|
11
|
-
# @example Is the value a boolean type?
|
12
|
-
# true.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
|
data/lib/mongoid/extras.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Mongoid #:nodoc:
|
3
|
-
|
4
|
-
# Adds support for caching queries at the class level.
|
5
|
-
module Extras
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
|
8
|
-
included do
|
9
|
-
class_attribute :cached
|
10
|
-
self.cached = false
|
11
|
-
end
|
12
|
-
|
13
|
-
module ClassMethods #:nodoc
|
14
|
-
|
15
|
-
# Sets caching on for this class. This class level configuration will
|
16
|
-
# default all queries to cache the results of the first iteration over
|
17
|
-
# the cursor into an internal array. This should only be used for queries
|
18
|
-
# that return a small number of results or have small documents, as after
|
19
|
-
# the first iteration the entire results will be stored in memory.
|
20
|
-
#
|
21
|
-
# @example Cache all reads for the class.
|
22
|
-
# class Person
|
23
|
-
# include Mongoid::Document
|
24
|
-
# cache
|
25
|
-
# end
|
26
|
-
def cache
|
27
|
-
self.cached = true
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,77 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Mongoid #:nodoc:
|
3
|
-
module Fields #:nodoc:
|
4
|
-
module Internal #:nodoc:
|
5
|
-
|
6
|
-
# Defines the behaviour for array fields.
|
7
|
-
class Array
|
8
|
-
include Serializable
|
9
|
-
|
10
|
-
# Adds the atomic changes for this type of resizable field.
|
11
|
-
#
|
12
|
-
# @example Add the atomic changes.
|
13
|
-
# field.add_atomic_changes(doc, "key", {}, [], [])
|
14
|
-
#
|
15
|
-
# @param [ Document ] document The document to add to.
|
16
|
-
# @param [ String ] name The name of the field.
|
17
|
-
# @param [ String ] key The atomic location of the field.
|
18
|
-
# @param [ Hash ] mods The current modifications.
|
19
|
-
# @param [ Array ] new The new elements to add.
|
20
|
-
# @param [ Array ] old The old elements getting removed.
|
21
|
-
#
|
22
|
-
# @since 2.4.0
|
23
|
-
def add_atomic_changes(document, name, key, mods, new, old)
|
24
|
-
mods[key] = new
|
25
|
-
end
|
26
|
-
|
27
|
-
# Array fields are resizable.
|
28
|
-
#
|
29
|
-
# @example Is this field resizable?
|
30
|
-
# field.resizable?
|
31
|
-
#
|
32
|
-
# @return [ true ] Always true.
|
33
|
-
#
|
34
|
-
# @since 2.4.0
|
35
|
-
def resizable?; true; end
|
36
|
-
|
37
|
-
# Serialize the object from the type defined in the model to a MongoDB
|
38
|
-
# compatible object to store.
|
39
|
-
#
|
40
|
-
# @example Serialize the field.
|
41
|
-
# field.serialize(object)
|
42
|
-
#
|
43
|
-
# @param [ Object ] object The object to cast.
|
44
|
-
#
|
45
|
-
# @return [ Array ] The converted object.
|
46
|
-
#
|
47
|
-
# @since 2.1.0
|
48
|
-
def serialize(object)
|
49
|
-
raise_or_return(object)
|
50
|
-
end
|
51
|
-
|
52
|
-
protected
|
53
|
-
|
54
|
-
# If the value is not an array or nil we will raise an error,
|
55
|
-
# otherwise return the value.
|
56
|
-
#
|
57
|
-
# @example Raise or return the value.
|
58
|
-
# field.raise_or_return([])
|
59
|
-
#
|
60
|
-
# @param [ Object ] value The value to check.a
|
61
|
-
#
|
62
|
-
# @raise [ InvalidType ] If not passed an array.
|
63
|
-
#
|
64
|
-
# @return [ Array ] The array.
|
65
|
-
#
|
66
|
-
# @since 2.1.0
|
67
|
-
def raise_or_return(value)
|
68
|
-
return nil if value.nil? || value == ""
|
69
|
-
unless value.is_a?(::Array)
|
70
|
-
raise Mongoid::Errors::InvalidType.new(::Array, value)
|
71
|
-
end
|
72
|
-
value
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|