mongoid 3.1.7 → 4.0.0.alpha1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +317 -11
- data/README.md +4 -5
- data/lib/config/locales/en.yml +9 -12
- data/lib/mongoid.rb +6 -75
- data/lib/mongoid/atomic.rb +0 -11
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/attributes.rb +30 -108
- data/lib/mongoid/attributes/dynamic.rb +154 -0
- data/lib/mongoid/attributes/nested.rb +82 -0
- data/lib/mongoid/attributes/processing.rb +13 -66
- data/lib/mongoid/{dirty.rb → changeable.rb} +5 -2
- data/lib/mongoid/composable.rb +104 -0
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/command.rb +26 -0
- data/lib/mongoid/contextual/map_reduce.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +6 -5
- data/lib/mongoid/contextual/mongo.rb +59 -28
- data/lib/mongoid/contextual/text_search.rb +180 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/criteria.rb +13 -33
- data/lib/mongoid/criteria/{#findable.rb# → findable.rb} +0 -2
- data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
- data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
- data/lib/mongoid/{criterion → criteria}/modifiable.rb +1 -1
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/document.rb +28 -12
- data/lib/mongoid/errors.rb +1 -1
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/extensions.rb +2 -7
- data/lib/mongoid/extensions/array.rb +2 -2
- data/lib/mongoid/extensions/boolean.rb +14 -17
- data/lib/mongoid/extensions/float.rb +1 -0
- data/lib/mongoid/extensions/hash.rb +1 -1
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +8 -2
- data/lib/mongoid/extensions/string.rb +5 -17
- data/lib/mongoid/extensions/time.rb +2 -2
- data/lib/mongoid/factory.rb +3 -3
- data/lib/mongoid/fields.rb +9 -8
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/standard.rb +4 -16
- data/lib/mongoid/fields/validators/macro.rb +11 -3
- data/lib/mongoid/{finders.rb → findable.rb} +6 -2
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
- data/lib/mongoid/{callbacks.rb → interceptable.rb} +3 -52
- data/lib/mongoid/log_subscriber.rb +22 -0
- data/lib/mongoid/matchable.rb +152 -0
- data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/ne.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
- data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
- data/lib/mongoid/persistable.rb +212 -0
- data/lib/mongoid/persistable/creatable.rb +188 -0
- data/lib/mongoid/persistable/deletable.rb +148 -0
- data/lib/mongoid/persistable/destroyable.rb +55 -0
- data/lib/mongoid/persistable/incrementable.rb +36 -0
- data/lib/mongoid/persistable/logical.rb +38 -0
- data/lib/mongoid/persistable/poppable.rb +39 -0
- data/lib/mongoid/persistable/pullable.rb +55 -0
- data/lib/mongoid/persistable/pushable.rb +62 -0
- data/lib/mongoid/persistable/renamable.rb +35 -0
- data/lib/mongoid/persistable/savable.rb +52 -0
- data/lib/mongoid/persistable/settable.rb +33 -0
- data/lib/mongoid/persistable/unsettable.rb +36 -0
- data/lib/mongoid/persistable/updatable.rb +151 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/railtie.rb +32 -45
- data/lib/mongoid/railties/database.rake +12 -6
- data/lib/mongoid/relations.rb +3 -3
- data/lib/mongoid/relations/accessors.rb +13 -46
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +0 -23
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
- data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +3 -1
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
- data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
- data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
- data/lib/mongoid/relations/cascading.rb +3 -5
- data/lib/mongoid/relations/constraint.rb +1 -1
- data/lib/mongoid/relations/conversions.rb +1 -1
- data/lib/mongoid/relations/counter_cache.rb +39 -15
- data/lib/mongoid/relations/eager.rb +47 -0
- data/lib/mongoid/relations/eager/base.rb +57 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +30 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +40 -0
- data/lib/mongoid/relations/eager/has_many.rb +37 -0
- data/lib/mongoid/relations/eager/has_one.rb +29 -0
- data/lib/mongoid/relations/embedded/batchable.rb +3 -4
- data/lib/mongoid/relations/embedded/many.rb +7 -27
- data/lib/mongoid/relations/macros.rb +2 -4
- data/lib/mongoid/relations/many.rb +30 -31
- data/lib/mongoid/relations/metadata.rb +6 -75
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +10 -32
- data/lib/mongoid/relations/referenced/in.rb +2 -18
- data/lib/mongoid/relations/referenced/many.rb +9 -22
- data/lib/mongoid/relations/referenced/many_to_many.rb +10 -33
- data/lib/mongoid/relations/referenced/one.rb +2 -21
- data/lib/mongoid/relations/synchronization.rb +3 -3
- data/lib/mongoid/relations/touchable.rb +33 -0
- data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
- data/lib/mongoid/{scoping.rb → scopable.rb} +26 -3
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +10 -1
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +176 -0
- data/lib/mongoid/sessions/storage_options.rb +140 -0
- data/lib/mongoid/sessions/thread_options.rb +19 -0
- data/lib/mongoid/sessions/validators/storage.rb +15 -1
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/threaded.rb +0 -110
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -9
- data/lib/mongoid/{validations → validatable}/associated.rb +3 -1
- data/lib/mongoid/{validations → validatable}/format.rb +1 -1
- data/lib/mongoid/{validations → validatable}/length.rb +1 -1
- data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
- data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
- data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
- data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
- data/lib/mongoid/{validations → validatable}/uniqueness.rb +3 -3
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +9 -13
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
- data/lib/rails/generators/mongoid_generator.rb +3 -40
- data/lib/rails/mongoid.rb +59 -57
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +1 -0
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +6 -1
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +2 -2
- data/spec/app/models/article.rb +1 -4
- data/spec/app/models/audio.rb +5 -0
- data/spec/app/models/author.rb +0 -2
- data/spec/app/models/band.rb +3 -2
- data/spec/app/models/bar.rb +1 -0
- data/spec/app/models/book.rb +1 -0
- data/spec/app/models/building.rb +0 -2
- data/spec/app/models/building_address.rb +0 -2
- data/spec/app/models/bus.rb +1 -1
- data/spec/app/models/canvas.rb +1 -1
- data/spec/app/models/contractor.rb +0 -2
- data/spec/app/models/country_code.rb +1 -1
- data/spec/app/models/definition.rb +2 -2
- data/spec/app/models/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- data/spec/app/models/filesystem.rb +1 -0
- data/spec/app/models/fish.rb +0 -1
- data/spec/app/models/fruits.rb +6 -0
- data/spec/app/models/game.rb +0 -2
- data/spec/app/models/house.rb +0 -2
- data/spec/app/models/item.rb +1 -5
- data/spec/app/models/jar.rb +1 -1
- data/spec/app/models/label.rb +4 -4
- data/spec/app/models/login.rb +1 -1
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +1 -1
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +13 -8
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +1 -1
- data/spec/app/models/post.rb +2 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +5 -5
- data/spec/app/models/registry.rb +1 -1
- data/spec/app/models/server.rb +1 -1
- data/spec/app/models/service.rb +3 -3
- data/spec/app/models/sound.rb +5 -0
- data/spec/app/models/template.rb +1 -1
- data/spec/app/models/title.rb +0 -1
- data/spec/app/models/track.rb +5 -5
- data/spec/app/models/tree.rb +1 -1
- data/spec/app/models/video.rb +0 -4
- data/spec/app/models/wiki_page.rb +1 -4
- data/spec/app/models/word.rb +3 -0
- data/spec/app/models/word_origin.rb +1 -1
- data/spec/config/mongoid.yml +7 -8
- data/spec/helpers.rb +18 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
- data/spec/mongoid/atomic/paths_spec.rb +19 -19
- data/spec/mongoid/atomic_spec.rb +19 -19
- data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +335 -448
- data/spec/mongoid/attributes/readonly_spec.rb +16 -16
- data/spec/mongoid/attributes_spec.rb +188 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +117 -148
- data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
- data/spec/mongoid/config/environment_spec.rb +3 -3
- data/spec/mongoid/config/options_spec.rb +6 -6
- data/spec/mongoid/config_spec.rb +24 -48
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +46 -38
- data/spec/mongoid/contextual/atomic_spec.rb +60 -56
- data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
- data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
- data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
- data/spec/mongoid/contextual/memory_spec.rb +94 -94
- data/spec/mongoid/contextual/mongo_spec.rb +225 -139
- data/spec/mongoid/contextual/text_search_spec.rb +207 -0
- data/spec/mongoid/copyable_spec.rb +56 -68
- data/spec/mongoid/criteria/findable_spec.rb +991 -0
- data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
- data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1063 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +31 -31
- data/spec/mongoid/criteria_spec.rb +530 -2207
- data/spec/mongoid/document_spec.rb +166 -120
- data/spec/mongoid/equality_spec.rb +22 -22
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
- data/spec/mongoid/errors/callback_spec.rb +3 -3
- data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
- data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
- data/spec/mongoid/errors/eager_load_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_scope_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
- data/spec/mongoid/errors/mongoid_error_spec.rb +7 -7
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
- data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
- data/spec/mongoid/errors/no_parent_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
- data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
- data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
- data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
- data/spec/mongoid/errors/validations_spec.rb +7 -7
- data/spec/mongoid/extensions/array_spec.rb +61 -61
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
- data/spec/mongoid/extensions/binary_spec.rb +12 -12
- data/spec/mongoid/extensions/boolean_spec.rb +18 -18
- data/spec/mongoid/extensions/date_spec.rb +13 -13
- data/spec/mongoid/extensions/date_time_spec.rb +9 -9
- data/spec/mongoid/extensions/false_class_spec.rb +5 -5
- data/spec/mongoid/extensions/float_spec.rb +29 -15
- data/spec/mongoid/extensions/hash_spec.rb +29 -29
- data/spec/mongoid/extensions/integer_spec.rb +15 -15
- data/spec/mongoid/extensions/module_spec.rb +2 -2
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/extensions/object_id_spec.rb +134 -134
- data/spec/mongoid/extensions/object_spec.rb +26 -26
- data/spec/mongoid/extensions/range_spec.rb +61 -12
- data/spec/mongoid/extensions/regexp_spec.rb +4 -4
- data/spec/mongoid/extensions/set_spec.rb +4 -4
- data/spec/mongoid/extensions/string_spec.rb +35 -46
- data/spec/mongoid/extensions/symbol_spec.rb +9 -9
- data/spec/mongoid/extensions/time_spec.rb +49 -49
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
- data/spec/mongoid/extensions/true_class_spec.rb +5 -5
- data/spec/mongoid/extensions_spec.rb +15 -0
- data/spec/mongoid/factory_spec.rb +15 -15
- data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
- data/spec/mongoid/fields/localized_spec.rb +23 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +168 -209
- data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +62 -27
- data/spec/mongoid/indexable/specification_spec.rb +102 -0
- data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
- data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
- data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +105 -105
- data/spec/mongoid/log_subscriber_spec.rb +74 -0
- data/spec/mongoid/loggable_spec.rb +1 -1
- data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
- data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
- data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
- data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
- data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
- data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
- data/spec/mongoid/matchable/in_spec.rb +49 -0
- data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/ne_spec.rb +3 -3
- data/spec/mongoid/matchable/nin_spec.rb +48 -0
- data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
- data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
- data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
- data/spec/mongoid/persistable/creatable_spec.rb +512 -0
- data/spec/mongoid/persistable/deletable_spec.rb +205 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +148 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
- data/spec/mongoid/persistable/logical_spec.rb +143 -0
- data/spec/mongoid/persistable/poppable_spec.rb +115 -0
- data/spec/mongoid/persistable/pullable_spec.rb +228 -0
- data/spec/mongoid/persistable/pushable_spec.rb +258 -0
- data/spec/mongoid/persistable/renamable_spec.rb +135 -0
- data/spec/mongoid/persistable/savable_spec.rb +432 -0
- data/spec/mongoid/persistable/settable_spec.rb +139 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
- data/spec/mongoid/persistable/updatable_spec.rb +558 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
- data/spec/mongoid/persistable_spec.rb +206 -0
- data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +19 -14
- data/spec/mongoid/railties/document_spec.rb +2 -2
- data/spec/mongoid/relations/accessors_spec.rb +53 -145
- data/spec/mongoid/relations/auto_save_spec.rb +36 -16
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +2 -2
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +9 -9
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +22 -33
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +11 -24
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +7 -7
- data/spec/mongoid/relations/cascading/destroy_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/restrict_spec.rb +3 -3
- data/spec/mongoid/relations/cascading_spec.rb +16 -16
- data/spec/mongoid/relations/constraint_spec.rb +8 -7
- data/spec/mongoid/relations/conversions_spec.rb +16 -14
- data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
- data/spec/mongoid/relations/cyclic_spec.rb +18 -18
- data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
- data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +143 -0
- data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
- data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
- data/spec/mongoid/relations/eager_spec.rb +228 -0
- data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
- data/spec/mongoid/relations/embedded/in_spec.rb +55 -56
- data/spec/mongoid/relations/embedded/many_spec.rb +357 -367
- data/spec/mongoid/relations/embedded/one_spec.rb +98 -139
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +147 -241
- data/spec/mongoid/relations/options_spec.rb +1 -1
- data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
- data/spec/mongoid/relations/proxy_spec.rb +2 -2
- data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
- data/spec/mongoid/relations/referenced/many_spec.rb +379 -522
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +345 -417
- data/spec/mongoid/relations/referenced/one_spec.rb +148 -263
- data/spec/mongoid/relations/reflections_spec.rb +6 -6
- data/spec/mongoid/relations/synchronization_spec.rb +46 -50
- data/spec/mongoid/relations/targets/enumerable_spec.rb +116 -116
- data/spec/mongoid/relations/touchable_spec.rb +296 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +74 -126
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +111 -82
- data/spec/mongoid/sessions/factory_spec.rb +49 -28
- data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
- data/spec/mongoid/sessions/options_spec.rb +92 -0
- data/spec/mongoid/sessions_spec.rb +288 -177
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/state_spec.rb +10 -10
- data/spec/mongoid/threaded_spec.rb +17 -70
- data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
- data/spec/mongoid/timestamps/created_spec.rb +5 -5
- data/spec/mongoid/timestamps/updated/short_spec.rb +10 -10
- data/spec/mongoid/timestamps/updated_spec.rb +8 -12
- data/spec/mongoid/timestamps_spec.rb +7 -11
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +18 -18
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +7 -7
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +31 -38
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +126 -183
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +72 -87
- data/spec/spec_helper.rb +19 -17
- metadata +261 -283
- data/lib/mongoid/atomic/positionable.rb +0 -73
- data/lib/mongoid/components.rb +0 -92
- data/lib/mongoid/config/inflections.rb +0 -6
- data/lib/mongoid/contextual/eager.rb +0 -158
- data/lib/mongoid/criterion/findable.rb +0 -179
- data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
- data/lib/mongoid/identity_map.rb +0 -163
- data/lib/mongoid/json.rb +0 -16
- data/lib/mongoid/matchers.rb +0 -32
- data/lib/mongoid/matchers/strategies.rb +0 -97
- data/lib/mongoid/multi_parameter_attributes.rb +0 -105
- data/lib/mongoid/nested_attributes.rb +0 -78
- data/lib/mongoid/observer.rb +0 -192
- data/lib/mongoid/paranoia.rb +0 -136
- data/lib/mongoid/persistence.rb +0 -357
- data/lib/mongoid/persistence/atomic.rb +0 -231
- data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
- data/lib/mongoid/persistence/atomic/bit.rb +0 -35
- data/lib/mongoid/persistence/atomic/inc.rb +0 -45
- data/lib/mongoid/persistence/atomic/operation.rb +0 -154
- data/lib/mongoid/persistence/atomic/pop.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
- data/lib/mongoid/persistence/atomic/push.rb +0 -25
- data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
- data/lib/mongoid/persistence/atomic/rename.rb +0 -30
- data/lib/mongoid/persistence/atomic/sets.rb +0 -28
- data/lib/mongoid/persistence/atomic/unset.rb +0 -27
- data/lib/mongoid/persistence/deletion.rb +0 -31
- data/lib/mongoid/persistence/insertion.rb +0 -38
- data/lib/mongoid/persistence/modification.rb +0 -35
- data/lib/mongoid/persistence/operations.rb +0 -214
- data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
- data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
- data/lib/mongoid/persistence/operations/insert.rb +0 -34
- data/lib/mongoid/persistence/operations/remove.rb +0 -33
- data/lib/mongoid/persistence/operations/update.rb +0 -59
- data/lib/mongoid/persistence/operations/upsert.rb +0 -28
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid.rb +0 -2
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
- data/spec/app/models/actor_observer.rb +0 -15
- data/spec/app/models/callback_recorder.rb +0 -25
- data/spec/app/models/draft.rb +0 -9
- data/spec/app/models/paranoid_phone.rb +0 -25
- data/spec/app/models/paranoid_post.rb +0 -36
- data/spec/app/models/phone_observer.rb +0 -6
- data/spec/mongoid/#atomic_spec.rb# +0 -365
- data/spec/mongoid/attributes/processing_spec.rb +0 -149
- data/spec/mongoid/criterion/destructive_spec.rb +0 -101
- data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
- data/spec/mongoid/criterion/modification_spec.rb +0 -402
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
- data/spec/mongoid/identity_map_spec.rb +0 -564
- data/spec/mongoid/json_spec.rb +0 -33
- data/spec/mongoid/matchers/in_spec.rb +0 -25
- data/spec/mongoid/matchers/nin_spec.rb +0 -25
- data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
- data/spec/mongoid/observer_spec.rb +0 -290
- data/spec/mongoid/paranoia_spec.rb +0 -759
- data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
- data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
- data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
- data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
- data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
- data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
- data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
- data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
- data/spec/mongoid/persistence/atomic_spec.rb +0 -216
- data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
- data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
- data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
- data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
- data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
- data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
- data/spec/mongoid/persistence/operations_spec.rb +0 -313
- data/spec/mongoid/persistence_spec.rb +0 -2279
- data/spec/mongoid/unit_of_work_spec.rb +0 -196
- data/spec/mongoid/versioning_spec.rb +0 -540
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -0,0 +1,140 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid
|
3
|
+
module Sessions
|
4
|
+
module StorageOptions
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
|
9
|
+
cattr_accessor :storage_options, instance_writer: false do
|
10
|
+
storage_options_defaults
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module ClassMethods
|
15
|
+
|
16
|
+
# Give this model specific custom default storage options.
|
17
|
+
#
|
18
|
+
# @example Store this model by default in "artists"
|
19
|
+
# class Band
|
20
|
+
# include Mongoid::Document
|
21
|
+
# store_in collection: "artists"
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# @example Store this model by default in the sharded db.
|
25
|
+
# class Band
|
26
|
+
# include Mongoid::Document
|
27
|
+
# store_in database: "echo_shard"
|
28
|
+
# end
|
29
|
+
#
|
30
|
+
# @example Store this model by default in a different session.
|
31
|
+
# class Band
|
32
|
+
# include Mongoid::Document
|
33
|
+
# store_in session: "secondary"
|
34
|
+
# end
|
35
|
+
#
|
36
|
+
# @example Store this model with a combination of options.
|
37
|
+
# class Band
|
38
|
+
# include Mongoid::Document
|
39
|
+
# store_in collection: "artists", database: "secondary"
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# @param [ Hash ] options The storage options.
|
43
|
+
#
|
44
|
+
# @option options [ String, Symbol ] :collection The collection name.
|
45
|
+
# @option options [ String, Symbol ] :database The database name.
|
46
|
+
# @option options [ String, Symbol ] :session The session name.
|
47
|
+
#
|
48
|
+
# @return [ Class ] The model class.
|
49
|
+
#
|
50
|
+
# @since 3.0.0
|
51
|
+
def store_in(options)
|
52
|
+
Validators::Storage.validate(self, options)
|
53
|
+
storage_options.merge!(options)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Reset the store_in options
|
57
|
+
#
|
58
|
+
# @example Reset the store_in options
|
59
|
+
# Model.reset_storage_options!
|
60
|
+
#
|
61
|
+
# @since 4.0.0
|
62
|
+
def reset_storage_options!
|
63
|
+
self.storage_options = storage_options_defaults.dup
|
64
|
+
end
|
65
|
+
|
66
|
+
# Get the default storage options.
|
67
|
+
#
|
68
|
+
# @example Get the default storage options.
|
69
|
+
# Model.storage_options_defaults
|
70
|
+
#
|
71
|
+
# @return [ Hash ] Default storage options.
|
72
|
+
#
|
73
|
+
# @since 4.0.0
|
74
|
+
def storage_options_defaults
|
75
|
+
{
|
76
|
+
collection: name.collectionize.to_sym,
|
77
|
+
session: :default,
|
78
|
+
database: -> { Mongoid.sessions[session_name][:database] }
|
79
|
+
}
|
80
|
+
end
|
81
|
+
|
82
|
+
# Get the name of the collection this model persists to.
|
83
|
+
#
|
84
|
+
# @example Get the collection name.
|
85
|
+
# Model.collection_name
|
86
|
+
#
|
87
|
+
# @return [ Symbol ] The name of the collection.
|
88
|
+
#
|
89
|
+
# @since 3.0.0
|
90
|
+
def collection_name
|
91
|
+
__evaluate__(storage_options[:collection])
|
92
|
+
end
|
93
|
+
|
94
|
+
# Get the session name for the model.
|
95
|
+
#
|
96
|
+
# @example Get the session name.
|
97
|
+
# Model.session_name
|
98
|
+
#
|
99
|
+
# @return [ Symbol ] The name of the session.
|
100
|
+
#
|
101
|
+
# @since 3.0.0
|
102
|
+
def session_name
|
103
|
+
__evaluate__(storage_options[:session])
|
104
|
+
end
|
105
|
+
|
106
|
+
# Get the database name for the model.
|
107
|
+
#
|
108
|
+
# @example Get the database name.
|
109
|
+
# Model.database_name
|
110
|
+
#
|
111
|
+
# @return [ Symbol ] The name of the session.
|
112
|
+
#
|
113
|
+
# @since 4.0.0
|
114
|
+
def database_name
|
115
|
+
__evaluate__(storage_options[:database])
|
116
|
+
end
|
117
|
+
|
118
|
+
private
|
119
|
+
|
120
|
+
# Eval the provided value, either byt calling it if it responds to call
|
121
|
+
# or returning the value itself.
|
122
|
+
#
|
123
|
+
# @api private
|
124
|
+
#
|
125
|
+
# @example Evaluate the name.
|
126
|
+
# Model.__evaluate__(:name)
|
127
|
+
#
|
128
|
+
# @param [ String, Symbol, Proc ] name The name.
|
129
|
+
#
|
130
|
+
# @return [ Symbol ] The value as a symbol.
|
131
|
+
#
|
132
|
+
# @since 3.1.0
|
133
|
+
def __evaluate__(name)
|
134
|
+
return nil unless name
|
135
|
+
name.respond_to?(:call) ? name.call.to_sym : name.to_sym
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid
|
3
|
+
module Sessions
|
4
|
+
module ThreadOptions
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
|
9
|
+
def session_name
|
10
|
+
Threaded.session_override || super
|
11
|
+
end
|
12
|
+
|
13
|
+
def database_name
|
14
|
+
Threaded.database_override || super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -19,12 +19,25 @@ module Mongoid
|
|
19
19
|
#
|
20
20
|
# @since 3.0.0
|
21
21
|
def validate(klass, options)
|
22
|
-
if !
|
22
|
+
if !valid_keys?(options) || !valid_parent?(klass)
|
23
23
|
raise Errors::InvalidStorageOptions.new(klass, options)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
private
|
28
|
+
# Determine if the current klass is valid to change store_in
|
29
|
+
# options
|
30
|
+
#
|
31
|
+
# @api private
|
32
|
+
#
|
33
|
+
# @param [ Class ] klass
|
34
|
+
#
|
35
|
+
# @return [ true, false ] If the class is valid
|
36
|
+
#
|
37
|
+
# @since 4.0.0
|
38
|
+
def valid_parent?(klass)
|
39
|
+
!klass.superclass.include?(Mongoid::Document)
|
40
|
+
end
|
28
41
|
|
29
42
|
# Determine if all keys in the options hash are valid.
|
30
43
|
#
|
@@ -39,6 +52,7 @@ module Mongoid
|
|
39
52
|
#
|
40
53
|
# @since 3.0.0
|
41
54
|
def valid_keys?(options)
|
55
|
+
return false unless options.is_a?(::Hash)
|
42
56
|
options.keys.all? do |key|
|
43
57
|
VALID_OPTIONS.include?(key)
|
44
58
|
end
|
@@ -2,7 +2,9 @@
|
|
2
2
|
module Mongoid
|
3
3
|
|
4
4
|
# This module contains behaviour for adding shard key fields to updates.
|
5
|
-
|
5
|
+
#
|
6
|
+
# @since 4.0.0
|
7
|
+
module Shardable
|
6
8
|
extend ActiveSupport::Concern
|
7
9
|
|
8
10
|
included do
|
@@ -18,6 +20,8 @@ module Mongoid
|
|
18
20
|
# model.shard_key_fields
|
19
21
|
#
|
20
22
|
# @return [ Array<String> ] The shard key field names.
|
23
|
+
#
|
24
|
+
# @since 1.0.0
|
21
25
|
def shard_key_fields
|
22
26
|
self.class.shard_key_fields
|
23
27
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Mongoid
|
2
|
+
|
3
|
+
class QueryCounter
|
4
|
+
attr_reader :events
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@events = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def instrument
|
11
|
+
subscriber = ActiveSupport::Notifications.subscribe('query.moped') do |*args|
|
12
|
+
@events << ActiveSupport::Notifications::Event.new(*args)
|
13
|
+
end
|
14
|
+
yield
|
15
|
+
ensure
|
16
|
+
ActiveSupport::Notifications.unsubscribe(subscriber)
|
17
|
+
end
|
18
|
+
|
19
|
+
def inspect
|
20
|
+
@events.map { |e| e.payload[:ops].map(&:log_inspect) }.join("\n")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/mongoid/threaded.rb
CHANGED
@@ -126,21 +126,6 @@ module Mongoid
|
|
126
126
|
validations_for(document.class).push(document.id)
|
127
127
|
end
|
128
128
|
|
129
|
-
# Clear out all the persistence options.
|
130
|
-
#
|
131
|
-
# @example Clear out the persistence options.
|
132
|
-
# Threaded.clear_persistence_options(Band)
|
133
|
-
#
|
134
|
-
# @param [ Class ] klass The model class.
|
135
|
-
#
|
136
|
-
# @return [ true ] true.
|
137
|
-
#
|
138
|
-
# @since 2.0.0
|
139
|
-
def clear_persistence_options(klass)
|
140
|
-
Thread.current["[mongoid][#{klass}]:persistence-options"] = nil
|
141
|
-
true
|
142
|
-
end
|
143
|
-
|
144
129
|
# Exit autosaving a document on the current thread.
|
145
130
|
#
|
146
131
|
# @example Exit autosave.
|
@@ -165,101 +150,6 @@ module Mongoid
|
|
165
150
|
validations_for(document.class).delete_one(document.id)
|
166
151
|
end
|
167
152
|
|
168
|
-
# Get the identity map off the current thread.
|
169
|
-
#
|
170
|
-
# @example Get the identity map.
|
171
|
-
# Threaded.identity_map
|
172
|
-
#
|
173
|
-
# @return [ IdentityMap ] The identity map.
|
174
|
-
#
|
175
|
-
# @since 2.1.0
|
176
|
-
def identity_map
|
177
|
-
Thread.current["[mongoid]:identity-map"] ||= IdentityMap.new
|
178
|
-
end
|
179
|
-
|
180
|
-
# Is the identity map enabled on the current thread?
|
181
|
-
#
|
182
|
-
# @example Is the identity map enabled?
|
183
|
-
# Threaded.identity_map_enabled?
|
184
|
-
#
|
185
|
-
# @return [ true, false ] If the identity map is enabled.
|
186
|
-
#
|
187
|
-
# @since 3.0.0
|
188
|
-
def identity_map_enabled?
|
189
|
-
Thread.current["[mongoid]:identity-map-enabled"] != false
|
190
|
-
end
|
191
|
-
|
192
|
-
# Disable the identity map on either the current thread or all threads.
|
193
|
-
#
|
194
|
-
# @example Disable the identity map on all threads.
|
195
|
-
# Threaded.disable_identity_map(:all)
|
196
|
-
#
|
197
|
-
# @example Disable the identity map on the current thread.
|
198
|
-
# Threaded.disable_identity_map(:current)
|
199
|
-
#
|
200
|
-
# @param [ Symbol ] option The disabling option.
|
201
|
-
#
|
202
|
-
# @since 3.0.0
|
203
|
-
def disable_identity_map(option)
|
204
|
-
if option == :all
|
205
|
-
Thread.list.each do |thread|
|
206
|
-
thread["[mongoid]:identity-map-enabled"] = false
|
207
|
-
end
|
208
|
-
else
|
209
|
-
Thread.current["[mongoid]:identity-map-enabled"] = false
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
213
|
-
# Enable the identity map on either the current thread or all threads.
|
214
|
-
#
|
215
|
-
# @example Enable the identity map on all threads.
|
216
|
-
# Threaded.enable_identity_map(:all)
|
217
|
-
#
|
218
|
-
# @example Enable the identity map on the current thread.
|
219
|
-
# Threaded.enable_identity_map(:current)
|
220
|
-
#
|
221
|
-
# @param [ Symbol ] option The disabling option.
|
222
|
-
#
|
223
|
-
# @since 3.0.0
|
224
|
-
def enable_identity_map(option)
|
225
|
-
if option == :all
|
226
|
-
Thread.list.each do |thread|
|
227
|
-
thread["[mongoid]:identity-map-enabled"] = true
|
228
|
-
end
|
229
|
-
else
|
230
|
-
Thread.current["[mongoid]:identity-map-enabled"] = true
|
231
|
-
end
|
232
|
-
end
|
233
|
-
|
234
|
-
# Get the persistence options for the current thread.
|
235
|
-
#
|
236
|
-
# @example Get the persistence options.
|
237
|
-
# Threaded.persistence_options(Band)
|
238
|
-
#
|
239
|
-
# @param [ Class ] klass The model class.
|
240
|
-
#
|
241
|
-
# @return [ Hash ] The current persistence options.
|
242
|
-
#
|
243
|
-
# @since 2.1.0
|
244
|
-
def persistence_options(klass)
|
245
|
-
Thread.current["[mongoid][#{klass}]:persistence-options"]
|
246
|
-
end
|
247
|
-
|
248
|
-
# Set the persistence options on the current thread.
|
249
|
-
#
|
250
|
-
# @example Set the persistence options.
|
251
|
-
# Threaded.set_persistence_options(Band, { safe: { fsync: true }})
|
252
|
-
#
|
253
|
-
# @param [ Class ] klass The model class.
|
254
|
-
# @param [ Hash ] options The persistence options.
|
255
|
-
#
|
256
|
-
# @return [ Hash ] The persistence options.
|
257
|
-
#
|
258
|
-
# @since 2.1.0
|
259
|
-
def set_persistence_options(klass, options)
|
260
|
-
Thread.current["[mongoid][#{klass}]:persistence-options"] = options
|
261
|
-
end
|
262
|
-
|
263
153
|
# Get the field selection options from the current thread.
|
264
154
|
#
|
265
155
|
# @example Get the field selection options.
|
@@ -139,23 +139,6 @@ module Mongoid
|
|
139
139
|
Threaded.executing?("load")
|
140
140
|
end
|
141
141
|
|
142
|
-
# Execute a block in loading revision mode.
|
143
|
-
#
|
144
|
-
# @example Execute in loading revision mode.
|
145
|
-
# _loading_revision do
|
146
|
-
# load_revision
|
147
|
-
# end
|
148
|
-
#
|
149
|
-
# @return [ Object ] The return value of the block.
|
150
|
-
#
|
151
|
-
# @since 2.3.4
|
152
|
-
def _loading_revision
|
153
|
-
Threaded.begin_execution("load_revision")
|
154
|
-
yield
|
155
|
-
ensure
|
156
|
-
Threaded.exit_execution("load_revision")
|
157
|
-
end
|
158
|
-
|
159
142
|
module ClassMethods
|
160
143
|
|
161
144
|
# Execute a block in creating mode.
|
@@ -175,17 +158,6 @@ module Mongoid
|
|
175
158
|
Threaded.exit_execution("create")
|
176
159
|
end
|
177
160
|
|
178
|
-
# Is the current thread in loading revision mode?
|
179
|
-
#
|
180
|
-
# @example Is the current thread in loading revision mode?
|
181
|
-
# proxy._loading_revision?
|
182
|
-
#
|
183
|
-
# @return [ true, false ] If the thread is loading a revision.
|
184
|
-
#
|
185
|
-
# @since 2.3.4
|
186
|
-
def _loading_revision?
|
187
|
-
Threaded.executing?("load_revision")
|
188
|
-
end
|
189
161
|
end
|
190
162
|
end
|
191
163
|
end
|
@@ -3,8 +3,8 @@ module Mongoid
|
|
3
3
|
module Timestamps
|
4
4
|
module Updated
|
5
5
|
|
6
|
-
# Adds
|
7
|
-
# with
|
6
|
+
# Adds an updated_at timestamp to the document, but it is stored as u_at
|
7
|
+
# with an updated_at alias.
|
8
8
|
module Short
|
9
9
|
extend ActiveSupport::Concern
|
10
10
|
|
@@ -1,6 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module Mongoid
|
3
|
-
|
3
|
+
|
4
|
+
# Provides behaviour around traversing the document graph.
|
5
|
+
#
|
6
|
+
# @since 4.0.0
|
7
|
+
module Traversable
|
4
8
|
extend ActiveSupport::Concern
|
5
9
|
|
6
10
|
included do
|
@@ -19,7 +23,7 @@ module Mongoid
|
|
19
23
|
#
|
20
24
|
# @return [ Array<Document> ] All child documents in the hierarchy.
|
21
25
|
def _children
|
22
|
-
@
|
26
|
+
@__children ||= collect_children
|
23
27
|
end
|
24
28
|
|
25
29
|
# Collect all the children of this document.
|
@@ -37,7 +41,7 @@ module Mongoid
|
|
37
41
|
child = send(name)
|
38
42
|
Array.wrap(child).each do |doc|
|
39
43
|
children.push(doc)
|
40
|
-
children.concat(doc._children)
|
44
|
+
children.concat(doc._children)
|
41
45
|
end if child
|
42
46
|
end
|
43
47
|
end
|
@@ -116,6 +120,7 @@ module Mongoid
|
|
116
120
|
child.move_changes
|
117
121
|
child.new_record = false
|
118
122
|
end
|
123
|
+
@__children = nil
|
119
124
|
end
|
120
125
|
|
121
126
|
# Return the root document in the object graph. If the current document
|
@@ -174,7 +179,6 @@ module Mongoid
|
|
174
179
|
subclass.pre_processed_defaults = pre_processed_defaults.dup
|
175
180
|
subclass.post_processed_defaults = post_processed_defaults.dup
|
176
181
|
subclass._declared_scopes = Hash.new { |hash,key| self._declared_scopes[key] }
|
177
|
-
subclass.autosaved_relations = autosaved_relations.dup
|
178
182
|
|
179
183
|
# We only need the _type field if inheritance is in play, but need to
|
180
184
|
# add to the root class as well for backwards compatibility.
|
@@ -182,7 +186,7 @@ module Mongoid
|
|
182
186
|
field(:_type, default: self.name, type: String)
|
183
187
|
end
|
184
188
|
subclass_default = subclass.name || ->{ self.class.name }
|
185
|
-
subclass.field(:_type, default: subclass_default, type: String)
|
189
|
+
subclass.field(:_type, default: subclass_default, type: String, overwrite: true)
|
186
190
|
end
|
187
191
|
end
|
188
192
|
end
|