mongoid 7.3.2 → 7.4.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +17 -17
- data/README.md +2 -2
- data/lib/config/locales/en.yml +30 -16
- data/lib/mongoid/association/accessors.rb +0 -27
- data/lib/mongoid/association/bindable.rb +0 -21
- data/lib/mongoid/association/builders.rb +0 -9
- data/lib/mongoid/association/constrainable.rb +0 -3
- data/lib/mongoid/association/depending.rb +0 -7
- data/lib/mongoid/association/eager_loadable.rb +0 -3
- data/lib/mongoid/association/embedded/batchable.rb +11 -39
- data/lib/mongoid/association/embedded/cyclic.rb +2 -11
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +0 -13
- data/lib/mongoid/association/embedded/embedded_in.rb +0 -23
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +31 -44
- data/lib/mongoid/association/embedded/embeds_many.rb +0 -31
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +26 -14
- data/lib/mongoid/association/embedded/embeds_one.rb +0 -27
- data/lib/mongoid/association/embedded.rb +0 -1
- data/lib/mongoid/association/macros.rb +6 -5
- data/lib/mongoid/association/many.rb +0 -17
- data/lib/mongoid/association/marshalable.rb +0 -5
- data/lib/mongoid/association/nested/many.rb +0 -11
- data/lib/mongoid/association/nested/nested_buildable.rb +0 -9
- data/lib/mongoid/association/nested/one.rb +1 -16
- data/lib/mongoid/association/nested.rb +0 -3
- data/lib/mongoid/association/one.rb +1 -10
- data/lib/mongoid/association/options.rb +0 -33
- data/lib/mongoid/association/proxy.rb +0 -21
- data/lib/mongoid/association/referenced/auto_save.rb +0 -9
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +0 -7
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +4 -5
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +0 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +0 -13
- data/lib/mongoid/association/referenced/belongs_to.rb +9 -34
- data/lib/mongoid/association/referenced/counter_cache.rb +2 -15
- data/lib/mongoid/association/referenced/eager.rb +3 -24
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -5
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +0 -3
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +12 -39
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +11 -38
- data/lib/mongoid/association/referenced/has_many/binding.rb +0 -5
- data/lib/mongoid/association/referenced/has_many/buildable.rb +0 -3
- data/lib/mongoid/association/referenced/has_many/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +11 -63
- data/lib/mongoid/association/referenced/has_many/proxy.rb +18 -61
- data/lib/mongoid/association/referenced/has_many.rb +12 -39
- data/lib/mongoid/association/referenced/has_one/binding.rb +0 -7
- data/lib/mongoid/association/referenced/has_one/buildable.rb +3 -4
- data/lib/mongoid/association/referenced/has_one/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -15
- data/lib/mongoid/association/referenced/has_one/proxy.rb +0 -9
- data/lib/mongoid/association/referenced/has_one.rb +9 -32
- data/lib/mongoid/association/referenced/syncable.rb +0 -17
- data/lib/mongoid/association/referenced.rb +0 -1
- data/lib/mongoid/association/reflections.rb +0 -1
- data/lib/mongoid/association/relatable.rb +2 -61
- data/lib/mongoid/association.rb +0 -17
- data/lib/mongoid/atomic/modifiers.rb +4 -51
- data/lib/mongoid/atomic/paths/embedded/many.rb +0 -5
- data/lib/mongoid/atomic/paths/embedded/one.rb +0 -5
- data/lib/mongoid/atomic/paths/embedded.rb +0 -3
- data/lib/mongoid/atomic/paths/root.rb +0 -5
- data/lib/mongoid/atomic/paths.rb +0 -1
- data/lib/mongoid/atomic.rb +27 -44
- data/lib/mongoid/attributes/dynamic.rb +0 -17
- data/lib/mongoid/attributes/nested.rb +0 -5
- data/lib/mongoid/attributes/processing.rb +1 -18
- data/lib/mongoid/attributes/projector.rb +0 -1
- data/lib/mongoid/attributes/readonly.rb +0 -5
- data/lib/mongoid/attributes.rb +0 -33
- data/lib/mongoid/cacheable.rb +1 -6
- data/lib/mongoid/changeable.rb +3 -59
- data/lib/mongoid/clients/factory.rb +0 -7
- data/lib/mongoid/clients/options.rb +0 -5
- data/lib/mongoid/clients/sessions.rb +0 -7
- data/lib/mongoid/clients/storage_options.rb +0 -7
- data/lib/mongoid/clients/validators/storage.rb +0 -9
- data/lib/mongoid/clients/validators.rb +0 -1
- data/lib/mongoid/clients.rb +0 -9
- data/lib/mongoid/composable.rb +0 -7
- data/lib/mongoid/config/environment.rb +13 -6
- data/lib/mongoid/config/options.rb +0 -11
- data/lib/mongoid/config/validators/client.rb +0 -17
- data/lib/mongoid/config/validators/option.rb +0 -3
- data/lib/mongoid/config/validators.rb +0 -1
- data/lib/mongoid/config.rb +37 -29
- data/lib/mongoid/contextual/aggregable/memory.rb +14 -11
- data/lib/mongoid/contextual/aggregable/mongo.rb +15 -20
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +7 -27
- data/lib/mongoid/contextual/command.rb +0 -5
- data/lib/mongoid/contextual/geo_near.rb +1 -34
- data/lib/mongoid/contextual/map_reduce.rb +0 -31
- data/lib/mongoid/contextual/memory.rb +4 -59
- data/lib/mongoid/contextual/mongo.rb +132 -78
- data/lib/mongoid/contextual/none.rb +42 -28
- data/lib/mongoid/contextual/queryable.rb +0 -3
- data/lib/mongoid/contextual.rb +0 -5
- data/lib/mongoid/copyable.rb +0 -5
- data/lib/mongoid/criteria/findable.rb +0 -13
- data/lib/mongoid/criteria/includable.rb +0 -9
- data/lib/mongoid/criteria/inspectable.rb +0 -3
- data/lib/mongoid/criteria/marshalable.rb +0 -5
- data/lib/mongoid/criteria/modifiable.rb +0 -19
- data/lib/mongoid/criteria/options.rb +0 -3
- data/lib/mongoid/criteria/permission.rb +0 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +0 -13
- data/lib/mongoid/criteria/queryable/expandable.rb +0 -1
- data/lib/mongoid/criteria/queryable/extensions/array.rb +1 -26
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/date.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +0 -5
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -25
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +0 -13
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +0 -11
- data/lib/mongoid/criteria/queryable/extensions/object.rb +1 -28
- data/lib/mongoid/criteria/queryable/extensions/range.rb +38 -16
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +0 -9
- data/lib/mongoid/criteria/queryable/extensions/set.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/string.rb +0 -17
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +0 -9
- data/lib/mongoid/criteria/queryable/extensions/time.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions.rb +0 -1
- data/lib/mongoid/criteria/queryable/key.rb +1 -14
- data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -30
- data/lib/mongoid/criteria/queryable/optional.rb +0 -45
- data/lib/mongoid/criteria/queryable/options.rb +0 -19
- data/lib/mongoid/criteria/queryable/pipeline.rb +0 -13
- data/lib/mongoid/criteria/queryable/selectable.rb +22 -69
- data/lib/mongoid/criteria/queryable/selector.rb +0 -17
- data/lib/mongoid/criteria/queryable/smash.rb +0 -11
- data/lib/mongoid/criteria/queryable/storable.rb +11 -7
- data/lib/mongoid/criteria/queryable.rb +0 -7
- data/lib/mongoid/criteria/scopable.rb +25 -19
- data/lib/mongoid/criteria.rb +0 -57
- data/lib/mongoid/document.rb +3 -53
- data/lib/mongoid/equality.rb +26 -10
- data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
- data/lib/mongoid/errors/callback.rb +0 -3
- data/lib/mongoid/errors/criteria_argument_required.rb +0 -1
- data/lib/mongoid/errors/delete_restriction.rb +0 -3
- data/lib/mongoid/errors/document_not_destroyed.rb +2 -7
- data/lib/mongoid/errors/document_not_found.rb +0 -9
- data/lib/mongoid/errors/eager_load.rb +0 -3
- data/lib/mongoid/errors/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +0 -3
- data/lib/mongoid/errors/invalid_collection.rb +0 -1
- data/lib/mongoid/errors/invalid_config_file.rb +25 -0
- data/lib/mongoid/errors/invalid_config_option.rb +0 -3
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +0 -3
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +0 -1
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +0 -1
- data/lib/mongoid/errors/invalid_expression_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_field.rb +0 -5
- data/lib/mongoid/errors/invalid_field_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_field_option.rb +0 -3
- data/lib/mongoid/errors/invalid_find.rb +0 -3
- data/lib/mongoid/errors/invalid_includes.rb +0 -3
- data/lib/mongoid/errors/invalid_index.rb +0 -3
- data/lib/mongoid/errors/invalid_options.rb +0 -3
- data/lib/mongoid/errors/invalid_path.rb +0 -3
- data/lib/mongoid/errors/invalid_persistence_option.rb +0 -5
- data/lib/mongoid/errors/invalid_query.rb +0 -1
- data/lib/mongoid/errors/invalid_relation.rb +0 -7
- data/lib/mongoid/errors/invalid_relation_option.rb +0 -3
- data/lib/mongoid/errors/invalid_scope.rb +0 -3
- data/lib/mongoid/errors/invalid_session_use.rb +1 -6
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +0 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +0 -3
- data/lib/mongoid/errors/invalid_storage_parent.rb +0 -3
- data/lib/mongoid/errors/invalid_time.rb +0 -3
- data/lib/mongoid/errors/invalid_value.rb +0 -1
- data/lib/mongoid/errors/inverse_not_found.rb +0 -3
- data/lib/mongoid/errors/mixed_client_configuration.rb +0 -3
- data/lib/mongoid/errors/mixed_relations.rb +0 -3
- data/lib/mongoid/errors/mongoid_error.rb +0 -9
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +0 -3
- data/lib/mongoid/errors/no_client_config.rb +0 -3
- data/lib/mongoid/errors/no_client_database.rb +0 -3
- data/lib/mongoid/errors/no_client_hosts.rb +0 -3
- data/lib/mongoid/errors/no_clients_config.rb +0 -3
- data/lib/mongoid/errors/no_default_client.rb +0 -3
- data/lib/mongoid/errors/no_environment.rb +0 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +0 -3
- data/lib/mongoid/errors/no_metadata.rb +0 -3
- data/lib/mongoid/errors/no_parent.rb +0 -3
- data/lib/mongoid/errors/readonly_attribute.rb +0 -3
- data/lib/mongoid/errors/readonly_document.rb +1 -6
- data/lib/mongoid/errors/scope_overwrite.rb +0 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +0 -1
- data/lib/mongoid/errors/unknown_attribute.rb +0 -3
- data/lib/mongoid/errors/unknown_model.rb +0 -3
- data/lib/mongoid/errors/unsaved_document.rb +1 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +0 -3
- data/lib/mongoid/errors/validations.rb +0 -1
- data/lib/mongoid/errors.rb +2 -1
- data/lib/mongoid/evolvable.rb +0 -3
- data/lib/mongoid/extensions/array.rb +3 -29
- data/lib/mongoid/extensions/big_decimal.rb +0 -11
- data/lib/mongoid/extensions/boolean.rb +0 -3
- data/lib/mongoid/extensions/date.rb +0 -9
- data/lib/mongoid/extensions/date_time.rb +0 -9
- data/lib/mongoid/extensions/decimal128.rb +0 -5
- data/lib/mongoid/extensions/false_class.rb +1 -6
- data/lib/mongoid/extensions/float.rb +0 -7
- data/lib/mongoid/extensions/hash.rb +0 -27
- data/lib/mongoid/extensions/integer.rb +0 -9
- data/lib/mongoid/extensions/module.rb +0 -3
- data/lib/mongoid/extensions/nil_class.rb +0 -5
- data/lib/mongoid/extensions/object.rb +1 -40
- data/lib/mongoid/extensions/object_id.rb +0 -7
- data/lib/mongoid/extensions/range.rb +0 -11
- data/lib/mongoid/extensions/regexp.rb +0 -3
- data/lib/mongoid/extensions/set.rb +0 -7
- data/lib/mongoid/extensions/string.rb +1 -30
- data/lib/mongoid/extensions/symbol.rb +0 -7
- data/lib/mongoid/extensions/time.rb +0 -11
- data/lib/mongoid/extensions/time_with_zone.rb +13 -9
- data/lib/mongoid/extensions/true_class.rb +1 -6
- data/lib/mongoid/extensions.rb +15 -3
- data/lib/mongoid/factory.rb +1 -2
- data/lib/mongoid/fields/foreign_key.rb +0 -21
- data/lib/mongoid/fields/localized.rb +0 -11
- data/lib/mongoid/fields/standard.rb +0 -33
- data/lib/mongoid/fields/validators/macro.rb +0 -9
- data/lib/mongoid/fields/validators.rb +0 -1
- data/lib/mongoid/fields.rb +64 -57
- data/lib/mongoid/findable.rb +0 -5
- data/lib/mongoid/indexable/specification.rb +0 -15
- data/lib/mongoid/indexable/validators/options.rb +0 -7
- data/lib/mongoid/indexable.rb +1 -18
- data/lib/mongoid/inspectable.rb +1 -10
- data/lib/mongoid/interceptable.rb +0 -25
- data/lib/mongoid/loggable.rb +0 -9
- data/lib/mongoid/matchable.rb +0 -5
- data/lib/mongoid/matcher/eq_impl.rb +37 -2
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +6 -1
- data/lib/mongoid/persistable/creatable.rb +1 -20
- data/lib/mongoid/persistable/deletable.rb +0 -17
- data/lib/mongoid/persistable/destroyable.rb +0 -7
- data/lib/mongoid/persistable/incrementable.rb +0 -5
- data/lib/mongoid/persistable/logical.rb +0 -5
- data/lib/mongoid/persistable/poppable.rb +0 -5
- data/lib/mongoid/persistable/pullable.rb +0 -7
- data/lib/mongoid/persistable/pushable.rb +0 -7
- data/lib/mongoid/persistable/renamable.rb +0 -5
- data/lib/mongoid/persistable/savable.rb +0 -7
- data/lib/mongoid/persistable/settable.rb +0 -5
- data/lib/mongoid/persistable/unsettable.rb +0 -5
- data/lib/mongoid/persistable/updatable.rb +2 -17
- data/lib/mongoid/persistable/upsertable.rb +0 -7
- data/lib/mongoid/persistable.rb +0 -23
- data/lib/mongoid/persistence_context.rb +3 -28
- data/lib/mongoid/positional.rb +0 -5
- data/lib/mongoid/query_cache.rb +11 -34
- data/lib/mongoid/railtie.rb +0 -15
- data/lib/mongoid/railties/controller_runtime.rb +0 -1
- data/lib/mongoid/reloadable.rb +4 -16
- data/lib/mongoid/scopable.rb +6 -34
- data/lib/mongoid/selectable.rb +0 -9
- data/lib/mongoid/serializable.rb +0 -15
- data/lib/mongoid/shardable.rb +0 -7
- data/lib/mongoid/stateful.rb +0 -9
- data/lib/mongoid/stringified_symbol.rb +2 -3
- data/lib/mongoid/tasks/database.rb +1 -6
- data/lib/mongoid/threaded/lifecycle.rb +0 -21
- data/lib/mongoid/threaded.rb +0 -55
- data/lib/mongoid/timestamps/created/short.rb +0 -1
- data/lib/mongoid/timestamps/created.rb +0 -1
- data/lib/mongoid/timestamps/short.rb +0 -1
- data/lib/mongoid/timestamps/timeless.rb +0 -7
- data/lib/mongoid/timestamps/updated/short.rb +0 -1
- data/lib/mongoid/timestamps/updated.rb +0 -3
- data/lib/mongoid/timestamps.rb +0 -1
- data/lib/mongoid/touchable.rb +10 -7
- data/lib/mongoid/traversable.rb +64 -53
- data/lib/mongoid/validatable/associated.rb +0 -3
- data/lib/mongoid/validatable/format.rb +0 -1
- data/lib/mongoid/validatable/length.rb +0 -1
- data/lib/mongoid/validatable/localizable.rb +0 -3
- data/lib/mongoid/validatable/macros.rb +0 -7
- data/lib/mongoid/validatable/presence.rb +1 -8
- data/lib/mongoid/validatable/queryable.rb +0 -3
- data/lib/mongoid/validatable/uniqueness.rb +15 -30
- data/lib/mongoid/validatable.rb +1 -22
- data/lib/mongoid/version.rb +1 -2
- data/lib/mongoid.rb +0 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid_generator.rb +0 -1
- data/lib/rails/mongoid.rb +0 -3
- data/spec/integration/app_spec.rb +0 -1
- data/spec/integration/associations/belongs_to_spec.rb +0 -1
- data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
- data/spec/integration/associations/embedded_spec.rb +0 -1
- data/spec/integration/associations/embeds_many_spec.rb +139 -1
- data/spec/integration/associations/embeds_one_spec.rb +0 -1
- data/spec/integration/associations/foreign_key_spec.rb +0 -1
- data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
- data/spec/integration/associations/has_many_spec.rb +0 -1
- data/spec/integration/associations/has_one_spec.rb +0 -1
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
- data/spec/integration/associations/reverse_population_spec.rb +0 -1
- data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
- data/spec/integration/associations/scope_option_spec.rb +101 -0
- data/spec/integration/atomic/modifiers_spec.rb +0 -1
- data/spec/integration/bson_regexp_raw_spec.rb +0 -1
- data/spec/integration/callbacks_models.rb +12 -0
- data/spec/integration/callbacks_spec.rb +18 -6
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +0 -1
- data/spec/integration/criteria/default_scope_spec.rb +51 -0
- data/spec/integration/criteria/logical_spec.rb +30 -0
- data/spec/integration/criteria/range_spec.rb +265 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
- data/spec/integration/discriminator_key_spec.rb +0 -1
- data/spec/integration/discriminator_value_spec.rb +0 -1
- data/spec/integration/document_spec.rb +0 -1
- data/spec/integration/i18n_fallbacks_spec.rb +0 -1
- data/spec/integration/matcher_examples_spec.rb +0 -1
- data/spec/integration/matcher_operator_spec.rb +27 -3
- data/spec/integration/matcher_spec.rb +95 -1
- data/spec/integration/server_query_spec.rb +0 -1
- data/spec/integration/shardable_spec.rb +0 -1
- data/spec/integration/stringified_symbol_field_spec.rb +16 -3
- data/spec/lite_spec_helper.rb +8 -2
- data/spec/mongoid/association/accessors_spec.rb +44 -15
- data/spec/mongoid/association/auto_save_spec.rb +72 -34
- data/spec/mongoid/association/builders_spec.rb +1 -2
- data/spec/mongoid/association/constrainable_spec.rb +0 -1
- data/spec/mongoid/association/counter_cache_spec.rb +32 -33
- data/spec/mongoid/association/depending_spec.rb +12 -13
- data/spec/mongoid/association/eager_spec.rb +4 -5
- data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
- data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +384 -135
- data/spec/mongoid/association/embedded/embeds_many_models.rb +16 -1
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
- data/spec/mongoid/association/macros_spec.rb +9 -10
- data/spec/mongoid/association/nested/many_spec.rb +0 -1
- data/spec/mongoid/association/nested/one_spec.rb +0 -1
- data/spec/mongoid/association/options_spec.rb +0 -1
- data/spec/mongoid/association/polymorphic_spec.rb +0 -1
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +20 -1
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +179 -154
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +303 -125
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +227 -164
- data/spec/mongoid/association/referenced/has_many_models.rb +35 -1
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
- data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
- data/spec/mongoid/association/reflections_spec.rb +0 -1
- data/spec/mongoid/association/syncable_spec.rb +31 -32
- data/spec/mongoid/association_spec.rb +0 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
- data/spec/mongoid/atomic/paths_spec.rb +0 -1
- data/spec/mongoid/atomic_spec.rb +6 -7
- data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
- data/spec/mongoid/attributes/nested_spec.rb +66 -67
- data/spec/mongoid/attributes/projector_spec.rb +5 -2
- data/spec/mongoid/attributes/readonly_spec.rb +22 -23
- data/spec/mongoid/attributes_spec.rb +32 -33
- data/spec/mongoid/cacheable_spec.rb +1 -2
- data/spec/mongoid/changeable_spec.rb +35 -36
- data/spec/mongoid/clients/factory_spec.rb +9 -4
- data/spec/mongoid/clients/options_spec.rb +15 -10
- data/spec/mongoid/clients/sessions_spec.rb +22 -23
- data/spec/mongoid/clients/transactions_spec.rb +49 -27
- data/spec/mongoid/clients_spec.rb +6 -7
- data/spec/mongoid/composable_spec.rb +0 -1
- data/spec/mongoid/config/environment_spec.rb +86 -9
- data/spec/mongoid/config/options_spec.rb +0 -1
- data/spec/mongoid/config_spec.rb +194 -17
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
- data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
- data/spec/mongoid/contextual/atomic_spec.rb +109 -71
- data/spec/mongoid/contextual/geo_near_spec.rb +18 -19
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
- data/spec/mongoid/contextual/memory_spec.rb +23 -24
- data/spec/mongoid/contextual/mongo_spec.rb +339 -77
- data/spec/mongoid/contextual/none_spec.rb +7 -82
- data/spec/mongoid/copyable_spec.rb +11 -12
- data/spec/mongoid/copyable_spec_models.rb +0 -1
- data/spec/mongoid/criteria/findable_spec.rb +23 -24
- data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
- data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
- data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
- data/spec/mongoid/criteria/options_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
- data/spec/mongoid/criteria/scopable_spec.rb +127 -1
- data/spec/mongoid/criteria_projection_spec.rb +3 -4
- data/spec/mongoid/criteria_spec.rb +546 -186
- data/spec/mongoid/document_fields_spec.rb +0 -1
- data/spec/mongoid/document_persistence_context_spec.rb +0 -1
- data/spec/mongoid/document_query_spec.rb +0 -1
- data/spec/mongoid/document_spec.rb +32 -34
- data/spec/mongoid/equality_spec.rb +142 -41
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
- data/spec/mongoid/errors/callback_spec.rb +0 -1
- data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
- data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/eager_load_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
- data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
- data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
- data/spec/mongoid/errors/mongoid_error_spec.rb +0 -1
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
- data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
- data/spec/mongoid/errors/no_environment_spec.rb +0 -1
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
- data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
- data/spec/mongoid/errors/no_parent_spec.rb +0 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
- data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
- data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
- data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
- data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
- data/spec/mongoid/errors/validations_spec.rb +0 -1
- data/spec/mongoid/extensions/array_spec.rb +0 -1
- data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
- data/spec/mongoid/extensions/binary_spec.rb +0 -1
- data/spec/mongoid/extensions/boolean_spec.rb +0 -1
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
- data/spec/mongoid/extensions/date_spec.rb +0 -1
- data/spec/mongoid/extensions/date_time_spec.rb +0 -1
- data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
- data/spec/mongoid/extensions/false_class_spec.rb +0 -1
- data/spec/mongoid/extensions/float_spec.rb +0 -1
- data/spec/mongoid/extensions/hash_spec.rb +0 -1
- data/spec/mongoid/extensions/integer_spec.rb +0 -1
- data/spec/mongoid/extensions/module_spec.rb +0 -1
- data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
- data/spec/mongoid/extensions/object_id_spec.rb +0 -1
- data/spec/mongoid/extensions/object_spec.rb +0 -1
- data/spec/mongoid/extensions/range_spec.rb +0 -1
- data/spec/mongoid/extensions/regexp_spec.rb +0 -1
- data/spec/mongoid/extensions/set_spec.rb +0 -1
- data/spec/mongoid/extensions/string_spec.rb +2 -3
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
- data/spec/mongoid/extensions/symbol_spec.rb +0 -1
- data/spec/mongoid/extensions/time_spec.rb +0 -1
- data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
- data/spec/mongoid/extensions/true_class_spec.rb +0 -1
- data/spec/mongoid/extensions_spec.rb +14 -3
- data/spec/mongoid/factory_spec.rb +1 -1
- data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
- data/spec/mongoid/fields/localized_spec.rb +0 -1
- data/spec/mongoid/fields/standard_spec.rb +0 -1
- data/spec/mongoid/fields_spec.rb +326 -31
- data/spec/mongoid/findable_spec.rb +21 -22
- data/spec/mongoid/indexable/specification_spec.rb +0 -1
- data/spec/mongoid/indexable_spec.rb +0 -1
- data/spec/mongoid/inspectable_spec.rb +0 -1
- data/spec/mongoid/interceptable_spec.rb +102 -95
- data/spec/mongoid/loggable_spec.rb +0 -1
- data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
- data/spec/mongoid/persistable/creatable_spec.rb +2 -3
- data/spec/mongoid/persistable/deletable_spec.rb +18 -19
- data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
- data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
- data/spec/mongoid/persistable/logical_spec.rb +4 -5
- data/spec/mongoid/persistable/poppable_spec.rb +4 -5
- data/spec/mongoid/persistable/pullable_spec.rb +8 -9
- data/spec/mongoid/persistable/pushable_spec.rb +8 -9
- data/spec/mongoid/persistable/renamable_spec.rb +3 -4
- data/spec/mongoid/persistable/savable_spec.rb +15 -11
- data/spec/mongoid/persistable/settable_spec.rb +9 -10
- data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
- data/spec/mongoid/persistable/updatable_spec.rb +43 -24
- data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
- data/spec/mongoid/persistable_spec.rb +1 -2
- data/spec/mongoid/persistence_context_spec.rb +0 -1
- data/spec/mongoid/positional_spec.rb +0 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
- data/spec/mongoid/query_cache_spec.rb +56 -10
- data/spec/mongoid/relations/proxy_spec.rb +6 -7
- data/spec/mongoid/reloadable_spec.rb +209 -23
- data/spec/mongoid/scopable_spec.rb +65 -22
- data/spec/mongoid/selectable_spec.rb +6 -7
- data/spec/mongoid/serializable_spec.rb +9 -10
- data/spec/mongoid/shardable_spec.rb +2 -3
- data/spec/mongoid/stateful_spec.rb +1 -2
- data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
- data/spec/mongoid/tasks/database_spec.rb +0 -1
- data/spec/mongoid/threaded_spec.rb +2 -3
- data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
- data/spec/mongoid/timestamps/created_spec.rb +1 -2
- data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
- data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
- data/spec/mongoid/timestamps/updated_spec.rb +3 -4
- data/spec/mongoid/timestamps_spec.rb +6 -7
- data/spec/mongoid/touchable_spec.rb +33 -20
- data/spec/mongoid/touchable_spec_models.rb +2 -1
- data/spec/mongoid/traversable_spec.rb +65 -2
- data/spec/mongoid/validatable/associated_spec.rb +0 -1
- data/spec/mongoid/validatable/format_spec.rb +0 -1
- data/spec/mongoid/validatable/length_spec.rb +0 -1
- data/spec/mongoid/validatable/numericality_spec.rb +0 -1
- data/spec/mongoid/validatable/presence_spec.rb +26 -23
- data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
- data/spec/mongoid/validatable_spec.rb +2 -3
- data/spec/mongoid_spec.rb +0 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
- data/spec/rails/mongoid_spec.rb +0 -1
- data/spec/shared/lib/mrss/cluster_config.rb +6 -1
- data/spec/shared/lib/mrss/constraints.rb +23 -5
- data/spec/shared/lib/mrss/docker_runner.rb +1 -1
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +17 -12
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/share/Dockerfile.erb +27 -10
- data/spec/shared/shlib/distro.sh +2 -1
- data/spec/shared/shlib/server.sh +85 -23
- data/spec/shared/shlib/set_env.sh +6 -5
- data/spec/spec_helper.rb +12 -22
- data/spec/support/authorization.rb +0 -1
- data/spec/support/constraints.rb +0 -1
- data/spec/support/expectations.rb +0 -1
- data/spec/support/macros.rb +22 -1
- data/spec/support/models/account.rb +1 -2
- data/spec/support/models/acolyte.rb +0 -1
- data/spec/support/models/actor.rb +0 -1
- data/spec/support/models/actress.rb +0 -1
- data/spec/support/models/address.rb +0 -1
- data/spec/support/models/address_component.rb +0 -1
- data/spec/support/models/address_number.rb +0 -1
- data/spec/support/models/agency.rb +0 -1
- data/spec/support/models/agent.rb +0 -1
- data/spec/support/models/album.rb +0 -1
- data/spec/support/models/alert.rb +0 -1
- data/spec/support/models/animal.rb +0 -1
- data/spec/support/models/answer.rb +0 -1
- data/spec/support/models/appointment.rb +0 -1
- data/spec/support/models/armrest.rb +0 -1
- data/spec/support/models/array_field.rb +0 -1
- data/spec/support/models/article.rb +0 -1
- data/spec/support/models/artist.rb +2 -1
- data/spec/support/models/artwork.rb +0 -1
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/support/models/audio.rb +0 -1
- data/spec/support/models/augmentation.rb +0 -1
- data/spec/support/models/author.rb +0 -1
- data/spec/support/models/baby.rb +0 -1
- data/spec/support/models/band.rb +4 -1
- data/spec/support/models/bar.rb +0 -1
- data/spec/support/models/basic.rb +0 -1
- data/spec/support/models/bed.rb +0 -1
- data/spec/support/models/big_palette.rb +0 -1
- data/spec/support/models/birthday.rb +0 -1
- data/spec/support/models/bolt.rb +0 -1
- data/spec/support/models/bomb.rb +0 -1
- data/spec/support/models/book.rb +0 -1
- data/spec/support/models/breed.rb +0 -1
- data/spec/support/models/browser.rb +0 -1
- data/spec/support/models/building.rb +0 -1
- data/spec/support/models/building_address.rb +0 -1
- data/spec/support/models/bus.rb +0 -1
- data/spec/support/models/business.rb +0 -1
- data/spec/support/models/callback_test.rb +0 -1
- data/spec/support/models/canvas.rb +0 -1
- data/spec/support/models/car.rb +0 -1
- data/spec/support/models/cat.rb +0 -1
- data/spec/support/models/category.rb +0 -1
- data/spec/support/models/child.rb +0 -1
- data/spec/support/models/child_doc.rb +3 -4
- data/spec/support/models/church.rb +0 -1
- data/spec/support/models/circle.rb +0 -1
- data/spec/support/models/circuit.rb +0 -1
- data/spec/support/models/circus.rb +0 -1
- data/spec/support/models/code.rb +0 -1
- data/spec/support/models/coding/pull_request.rb +0 -1
- data/spec/support/models/coding.rb +0 -1
- data/spec/support/models/comment.rb +0 -1
- data/spec/support/models/company.rb +0 -1
- data/spec/support/models/consumption_period.rb +0 -1
- data/spec/support/models/contextable_item.rb +0 -1
- data/spec/support/models/contractor.rb +0 -1
- data/spec/support/models/cookie.rb +0 -1
- data/spec/support/models/country_code.rb +2 -1
- data/spec/support/models/courier_job.rb +0 -1
- data/spec/support/models/crate.rb +0 -1
- data/spec/support/models/customer.rb +0 -1
- data/spec/support/models/customer_address.rb +0 -1
- data/spec/support/models/deed.rb +0 -1
- data/spec/support/models/definition.rb +0 -1
- data/spec/support/models/delegating_patient.rb +0 -1
- data/spec/support/models/description.rb +0 -1
- data/spec/support/models/dictionary.rb +0 -1
- data/spec/support/models/division.rb +0 -1
- data/spec/support/models/doctor.rb +0 -1
- data/spec/support/models/dog.rb +0 -1
- data/spec/support/models/dokument.rb +0 -1
- data/spec/support/models/draft.rb +0 -1
- data/spec/support/models/dragon.rb +0 -1
- data/spec/support/models/driver.rb +0 -1
- data/spec/support/models/drug.rb +0 -1
- data/spec/support/models/dungeon.rb +0 -1
- data/spec/support/models/edit.rb +0 -1
- data/spec/support/models/email.rb +0 -1
- data/spec/support/models/employer.rb +0 -1
- data/spec/support/models/entry.rb +0 -1
- data/spec/support/models/eraser.rb +0 -1
- data/spec/support/models/even.rb +0 -1
- data/spec/support/models/event.rb +0 -1
- data/spec/support/models/exhibition.rb +0 -1
- data/spec/support/models/exhibitor.rb +0 -1
- data/spec/support/models/explosion.rb +0 -1
- data/spec/support/models/eye.rb +0 -1
- data/spec/support/models/eye_bowl.rb +0 -1
- data/spec/support/models/face.rb +0 -1
- data/spec/support/models/favorite.rb +0 -1
- data/spec/support/models/filesystem.rb +0 -1
- data/spec/support/models/fire_hydrant.rb +0 -1
- data/spec/support/models/firefox.rb +0 -1
- data/spec/support/models/fish.rb +0 -1
- data/spec/support/models/folder.rb +0 -1
- data/spec/support/models/folder_item.rb +0 -1
- data/spec/support/models/fruits.rb +0 -1
- data/spec/support/models/game.rb +0 -1
- data/spec/support/models/ghost.rb +0 -1
- data/spec/support/models/guitar.rb +0 -1
- data/spec/support/models/hole.rb +0 -1
- data/spec/support/models/home.rb +0 -1
- data/spec/support/models/house.rb +0 -1
- data/spec/support/models/html_writer.rb +0 -1
- data/spec/support/models/id_key.rb +0 -1
- data/spec/support/models/idnodef.rb +0 -1
- data/spec/support/models/image.rb +0 -1
- data/spec/support/models/implant.rb +0 -1
- data/spec/support/models/instrument.rb +0 -1
- data/spec/support/models/item.rb +0 -1
- data/spec/support/models/jar.rb +0 -1
- data/spec/support/models/kaleidoscope.rb +0 -1
- data/spec/support/models/kangaroo.rb +0 -1
- data/spec/support/models/label.rb +2 -2
- data/spec/support/models/language.rb +0 -1
- data/spec/support/models/lat_lng.rb +0 -1
- data/spec/support/models/league.rb +0 -1
- data/spec/support/models/learner.rb +0 -1
- data/spec/support/models/line_item.rb +0 -1
- data/spec/support/models/location.rb +0 -1
- data/spec/support/models/login.rb +0 -1
- data/spec/support/models/manufacturer.rb +0 -1
- data/spec/support/models/meat.rb +0 -1
- data/spec/support/models/membership.rb +0 -1
- data/spec/support/models/message.rb +0 -1
- data/spec/support/models/minim.rb +0 -1
- data/spec/support/models/mixed_drink.rb +0 -1
- data/spec/support/models/mop.rb +0 -1
- data/spec/support/models/movie.rb +0 -1
- data/spec/support/models/my_hash.rb +0 -1
- data/spec/support/models/name.rb +0 -1
- data/spec/support/models/name_only.rb +0 -1
- data/spec/support/models/node.rb +0 -1
- data/spec/support/models/note.rb +0 -1
- data/spec/support/models/nut.rb +0 -1
- data/spec/support/models/odd.rb +0 -1
- data/spec/support/models/order.rb +2 -1
- data/spec/support/models/ordered_post.rb +1 -2
- data/spec/support/models/ordered_preference.rb +0 -1
- data/spec/support/models/oscar.rb +0 -1
- data/spec/support/models/other_owner_object.rb +0 -1
- data/spec/support/models/override.rb +0 -1
- data/spec/support/models/ownable.rb +0 -1
- data/spec/support/models/owner.rb +0 -1
- data/spec/support/models/pack.rb +0 -1
- data/spec/support/models/page.rb +0 -1
- data/spec/support/models/page_question.rb +0 -1
- data/spec/support/models/palette.rb +0 -1
- data/spec/support/models/parent.rb +0 -1
- data/spec/support/models/parent_doc.rb +0 -1
- data/spec/support/models/passport.rb +5 -1
- data/spec/support/models/patient.rb +0 -1
- data/spec/support/models/pdf_writer.rb +0 -1
- data/spec/support/models/pencil.rb +0 -1
- data/spec/support/models/person.rb +1 -1
- data/spec/support/models/pet.rb +0 -1
- data/spec/support/models/pet_owner.rb +0 -1
- data/spec/support/models/phone.rb +2 -2
- data/spec/support/models/piano.rb +0 -1
- data/spec/support/models/pizza.rb +0 -1
- data/spec/support/models/player.rb +0 -1
- data/spec/support/models/post.rb +0 -1
- data/spec/support/models/post_genre.rb +0 -1
- data/spec/support/models/powerup.rb +0 -1
- data/spec/support/models/preference.rb +0 -1
- data/spec/support/models/princess.rb +0 -1
- data/spec/support/models/product.rb +0 -1
- data/spec/support/models/profile.rb +0 -1
- data/spec/support/models/pronunciation.rb +0 -1
- data/spec/support/models/pub.rb +0 -1
- data/spec/support/models/publication/encyclopedia.rb +0 -1
- data/spec/support/models/publication/review.rb +0 -1
- data/spec/support/models/publication.rb +0 -1
- data/spec/support/models/purchase.rb +0 -1
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/support/models/question.rb +0 -1
- data/spec/support/models/quiz.rb +0 -1
- data/spec/support/models/rating.rb +0 -1
- data/spec/support/models/record.rb +0 -1
- data/spec/support/models/registry.rb +0 -1
- data/spec/support/models/role.rb +0 -1
- data/spec/support/models/root_category.rb +0 -1
- data/spec/support/models/sandwich.rb +0 -1
- data/spec/support/models/scheduler.rb +0 -1
- data/spec/support/models/scribe.rb +0 -1
- data/spec/support/models/sealer.rb +0 -1
- data/spec/support/models/seat.rb +0 -1
- data/spec/support/models/seo.rb +0 -1
- data/spec/support/models/series.rb +0 -1
- data/spec/support/models/server.rb +0 -1
- data/spec/support/models/service.rb +0 -1
- data/spec/support/models/shape.rb +0 -1
- data/spec/support/models/shelf.rb +0 -1
- data/spec/support/models/shipment_address.rb +0 -1
- data/spec/support/models/shipping_container.rb +0 -1
- data/spec/support/models/shipping_pack.rb +0 -1
- data/spec/support/models/shirt.rb +0 -1
- data/spec/support/models/shop.rb +0 -1
- data/spec/support/models/short_agent.rb +0 -1
- data/spec/support/models/short_quiz.rb +0 -1
- data/spec/support/models/simple.rb +0 -1
- data/spec/support/models/slave.rb +0 -1
- data/spec/support/models/song.rb +0 -1
- data/spec/support/models/sound.rb +0 -1
- data/spec/support/models/spacer.rb +0 -1
- data/spec/support/models/square.rb +0 -1
- data/spec/support/models/staff.rb +0 -1
- data/spec/support/models/store_as_dup_test1.rb +0 -1
- data/spec/support/models/store_as_dup_test2.rb +0 -1
- data/spec/support/models/store_as_dup_test3.rb +0 -1
- data/spec/support/models/store_as_dup_test4.rb +0 -1
- data/spec/support/models/strategy.rb +0 -1
- data/spec/support/models/sub_item.rb +0 -1
- data/spec/support/models/subscription.rb +0 -1
- data/spec/support/models/survey.rb +0 -1
- data/spec/support/models/symptom.rb +0 -1
- data/spec/support/models/tag.rb +0 -1
- data/spec/support/models/target.rb +0 -1
- data/spec/support/models/template.rb +0 -1
- data/spec/support/models/thing.rb +0 -1
- data/spec/support/models/threadlocker.rb +0 -1
- data/spec/support/models/title.rb +0 -1
- data/spec/support/models/tool.rb +0 -1
- data/spec/support/models/topping.rb +0 -1
- data/spec/support/models/toy.rb +0 -1
- data/spec/support/models/track.rb +0 -1
- data/spec/support/models/translation.rb +0 -1
- data/spec/support/models/tree.rb +0 -1
- data/spec/support/models/truck.rb +0 -1
- data/spec/support/models/updatable.rb +0 -1
- data/spec/support/models/user.rb +0 -1
- data/spec/support/models/user_account.rb +0 -1
- data/spec/support/models/validation_callback.rb +0 -1
- data/spec/support/models/vehicle.rb +0 -1
- data/spec/support/models/version.rb +0 -1
- data/spec/support/models/vertex.rb +0 -1
- data/spec/support/models/vet_visit.rb +0 -1
- data/spec/support/models/video.rb +0 -1
- data/spec/support/models/video_game.rb +0 -1
- data/spec/support/models/washer.rb +0 -1
- data/spec/support/models/weapon.rb +0 -1
- data/spec/support/models/wiki_page.rb +0 -1
- data/spec/support/models/word.rb +0 -1
- data/spec/support/models/word_origin.rb +0 -1
- data/spec/support/models/writer.rb +0 -1
- data/spec/support/shared/time.rb +0 -1
- data/spec/support/spec_config.rb +3 -1
- data.tar.gz.sig +0 -0
- metadata +642 -610
- metadata.gz.sig +0 -0
- data/lib/support/ruby_version.rb +0 -29
- data/spec/support/session_registry.rb +0 -50
data/lib/mongoid/threaded.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/threaded/lifecycle"
|
|
5
4
|
|
|
@@ -12,18 +11,12 @@ module Mongoid
|
|
|
12
11
|
DATABASE_OVERRIDE_KEY = "[mongoid]:db-override"
|
|
13
12
|
|
|
14
13
|
# Constant for the key to store clients.
|
|
15
|
-
#
|
|
16
|
-
# @since 5.0.0
|
|
17
14
|
CLIENTS_KEY = "[mongoid]:clients"
|
|
18
15
|
|
|
19
16
|
# The key to override the client.
|
|
20
|
-
#
|
|
21
|
-
# @since 5.0.0
|
|
22
17
|
CLIENT_OVERRIDE_KEY = "[mongoid]:client-override"
|
|
23
18
|
|
|
24
19
|
# The key for the current thread's scope stack.
|
|
25
|
-
#
|
|
26
|
-
# @since 2.0.0
|
|
27
20
|
CURRENT_SCOPE_KEY = "[mongoid]:current-scope"
|
|
28
21
|
|
|
29
22
|
AUTOSAVES_KEY = "[mongoid]:autosaves"
|
|
@@ -43,8 +36,6 @@ module Mongoid
|
|
|
43
36
|
# @param [ String ] name The name of the stack
|
|
44
37
|
#
|
|
45
38
|
# @return [ true ] True.
|
|
46
|
-
#
|
|
47
|
-
# @since 2.4.0
|
|
48
39
|
def begin_execution(name)
|
|
49
40
|
stack(name).push(true)
|
|
50
41
|
end
|
|
@@ -55,8 +46,6 @@ module Mongoid
|
|
|
55
46
|
# Threaded.database_override
|
|
56
47
|
#
|
|
57
48
|
# @return [ String, Symbol ] The override.
|
|
58
|
-
#
|
|
59
|
-
# @since 3.0.0
|
|
60
49
|
def database_override
|
|
61
50
|
Thread.current[DATABASE_OVERRIDE_KEY]
|
|
62
51
|
end
|
|
@@ -69,8 +58,6 @@ module Mongoid
|
|
|
69
58
|
# @param [ String, Symbol ] name The global override name.
|
|
70
59
|
#
|
|
71
60
|
# @return [ String, Symbol ] The override.
|
|
72
|
-
#
|
|
73
|
-
# @since 3.0.0
|
|
74
61
|
def database_override=(name)
|
|
75
62
|
Thread.current[DATABASE_OVERRIDE_KEY] = name
|
|
76
63
|
end
|
|
@@ -83,8 +70,6 @@ module Mongoid
|
|
|
83
70
|
# @param [ Symbol ] name The name of the stack
|
|
84
71
|
#
|
|
85
72
|
# @return [ true ] If the stack is being executed.
|
|
86
|
-
#
|
|
87
|
-
# @since 2.4.0
|
|
88
73
|
def executing?(name)
|
|
89
74
|
!stack(name).empty?
|
|
90
75
|
end
|
|
@@ -97,8 +82,6 @@ module Mongoid
|
|
|
97
82
|
# @param [ Symbol ] name The name of the stack
|
|
98
83
|
#
|
|
99
84
|
# @return [ true ] True.
|
|
100
|
-
#
|
|
101
|
-
# @since 2.4.0
|
|
102
85
|
def exit_execution(name)
|
|
103
86
|
stack(name).pop
|
|
104
87
|
end
|
|
@@ -111,8 +94,6 @@ module Mongoid
|
|
|
111
94
|
# @param [ Symbol ] name The name of the stack
|
|
112
95
|
#
|
|
113
96
|
# @return [ Array ] The stack.
|
|
114
|
-
#
|
|
115
|
-
# @since 2.4.0
|
|
116
97
|
def stack(name)
|
|
117
98
|
Thread.current[STACK_KEYS[name]] ||= []
|
|
118
99
|
end
|
|
@@ -123,8 +104,6 @@ module Mongoid
|
|
|
123
104
|
# Threaded.begin_autosave(doc)
|
|
124
105
|
#
|
|
125
106
|
# @param [ Document ] document The document to autosave.
|
|
126
|
-
#
|
|
127
|
-
# @since 3.0.0
|
|
128
107
|
def begin_autosave(document)
|
|
129
108
|
autosaves_for(document.class).push(document._id)
|
|
130
109
|
end
|
|
@@ -135,8 +114,6 @@ module Mongoid
|
|
|
135
114
|
# Threaded.begin_validate(doc)
|
|
136
115
|
#
|
|
137
116
|
# @param [ Document ] document The document to validate.
|
|
138
|
-
#
|
|
139
|
-
# @since 2.1.9
|
|
140
117
|
def begin_validate(document)
|
|
141
118
|
validations_for(document.class).push(document._id)
|
|
142
119
|
end
|
|
@@ -147,8 +124,6 @@ module Mongoid
|
|
|
147
124
|
# Threaded.exit_autosave(doc)
|
|
148
125
|
#
|
|
149
126
|
# @param [ Document ] document The document to autosave.
|
|
150
|
-
#
|
|
151
|
-
# @since 3.0.0
|
|
152
127
|
def exit_autosave(document)
|
|
153
128
|
autosaves_for(document.class).delete_one(document._id)
|
|
154
129
|
end
|
|
@@ -159,8 +134,6 @@ module Mongoid
|
|
|
159
134
|
# Threaded.exit_validate(doc)
|
|
160
135
|
#
|
|
161
136
|
# @param [ Document ] document The document to validate.
|
|
162
|
-
#
|
|
163
|
-
# @since 2.1.9
|
|
164
137
|
def exit_validate(document)
|
|
165
138
|
validations_for(document.class).delete_one(document._id)
|
|
166
139
|
end
|
|
@@ -195,8 +168,6 @@ module Mongoid
|
|
|
195
168
|
# Threaded.client_override
|
|
196
169
|
#
|
|
197
170
|
# @return [ String, Symbol ] The override.
|
|
198
|
-
#
|
|
199
|
-
# @since 5.0.0
|
|
200
171
|
def client_override
|
|
201
172
|
Thread.current[CLIENT_OVERRIDE_KEY]
|
|
202
173
|
end
|
|
@@ -209,8 +180,6 @@ module Mongoid
|
|
|
209
180
|
# @param [ String, Symbol ] name The global override name.
|
|
210
181
|
#
|
|
211
182
|
# @return [ String, Symbol ] The override.
|
|
212
|
-
#
|
|
213
|
-
# @since 3.0.0
|
|
214
183
|
def client_override=(name)
|
|
215
184
|
Thread.current[CLIENT_OVERRIDE_KEY] = name
|
|
216
185
|
end
|
|
@@ -224,8 +193,6 @@ module Mongoid
|
|
|
224
193
|
# @param [ Klass ] klass The class type of the scope.
|
|
225
194
|
#
|
|
226
195
|
# @return [ Criteria ] The scope.
|
|
227
|
-
#
|
|
228
|
-
# @since 5.0.0
|
|
229
196
|
def current_scope(klass = nil)
|
|
230
197
|
if klass && Thread.current[CURRENT_SCOPE_KEY].respond_to?(:keys)
|
|
231
198
|
Thread.current[CURRENT_SCOPE_KEY][
|
|
@@ -244,8 +211,6 @@ module Mongoid
|
|
|
244
211
|
# @param [ Criteria ] scope The current scope.
|
|
245
212
|
#
|
|
246
213
|
# @return [ Criteria ] The scope.
|
|
247
|
-
#
|
|
248
|
-
# @since 5.0.0
|
|
249
214
|
def current_scope=(scope)
|
|
250
215
|
Thread.current[CURRENT_SCOPE_KEY] = scope
|
|
251
216
|
end
|
|
@@ -259,8 +224,6 @@ module Mongoid
|
|
|
259
224
|
# @param [ Class ] klass The current model class.
|
|
260
225
|
#
|
|
261
226
|
# @return [ Criteria ] The scope.
|
|
262
|
-
#
|
|
263
|
-
# @since 5.0.1
|
|
264
227
|
def set_current_scope(scope, klass)
|
|
265
228
|
if scope.nil?
|
|
266
229
|
if Thread.current[CURRENT_SCOPE_KEY]
|
|
@@ -293,8 +256,6 @@ module Mongoid
|
|
|
293
256
|
# @param [ Document ] document The document to check.
|
|
294
257
|
#
|
|
295
258
|
# @return [ true, false ] If the document is autosaved.
|
|
296
|
-
#
|
|
297
|
-
# @since 2.1.9
|
|
298
259
|
def autosaved?(document)
|
|
299
260
|
autosaves_for(document.class).include?(document._id)
|
|
300
261
|
end
|
|
@@ -307,8 +268,6 @@ module Mongoid
|
|
|
307
268
|
# @param [ Document ] document The document to check.
|
|
308
269
|
#
|
|
309
270
|
# @return [ true, false ] If the document is validated.
|
|
310
|
-
#
|
|
311
|
-
# @since 2.1.9
|
|
312
271
|
def validated?(document)
|
|
313
272
|
validations_for(document.class).include?(document._id)
|
|
314
273
|
end
|
|
@@ -319,8 +278,6 @@ module Mongoid
|
|
|
319
278
|
# Threaded.autosaves
|
|
320
279
|
#
|
|
321
280
|
# @return [ Hash ] The current autosaves.
|
|
322
|
-
#
|
|
323
|
-
# @since 3.0.0
|
|
324
281
|
def autosaves
|
|
325
282
|
Thread.current[AUTOSAVES_KEY] ||= {}
|
|
326
283
|
end
|
|
@@ -331,8 +288,6 @@ module Mongoid
|
|
|
331
288
|
# Threaded.validations
|
|
332
289
|
#
|
|
333
290
|
# @return [ Hash ] The current validations.
|
|
334
|
-
#
|
|
335
|
-
# @since 2.1.9
|
|
336
291
|
def validations
|
|
337
292
|
Thread.current[VALIDATIONS_KEY] ||= {}
|
|
338
293
|
end
|
|
@@ -345,8 +300,6 @@ module Mongoid
|
|
|
345
300
|
# @param [ Class ] klass The class to check.
|
|
346
301
|
#
|
|
347
302
|
# @return [ Array ] The current autosaves.
|
|
348
|
-
#
|
|
349
|
-
# @since 3.0.0
|
|
350
303
|
def autosaves_for(klass)
|
|
351
304
|
autosaves[klass] ||= []
|
|
352
305
|
end
|
|
@@ -358,8 +311,6 @@ module Mongoid
|
|
|
358
311
|
# @param [ Class ] klass The class to check.
|
|
359
312
|
#
|
|
360
313
|
# @return [ Array ] The current validations.
|
|
361
|
-
#
|
|
362
|
-
# @since 2.1.9
|
|
363
314
|
def validations_for(klass)
|
|
364
315
|
validations[klass] ||= []
|
|
365
316
|
end
|
|
@@ -370,8 +321,6 @@ module Mongoid
|
|
|
370
321
|
# Threaded.set_session(session)
|
|
371
322
|
#
|
|
372
323
|
# @param [ Mongo::Session ] session The session to save.
|
|
373
|
-
#
|
|
374
|
-
# @since 6.4.0
|
|
375
324
|
def set_session(session)
|
|
376
325
|
Thread.current[:session] = session
|
|
377
326
|
end
|
|
@@ -382,8 +331,6 @@ module Mongoid
|
|
|
382
331
|
# Threaded.get_session
|
|
383
332
|
#
|
|
384
333
|
# @return [ Mongo::Session, nil ] The session cached on this thread or nil.
|
|
385
|
-
#
|
|
386
|
-
# @since 6.4.0
|
|
387
334
|
def get_session
|
|
388
335
|
Thread.current[:session]
|
|
389
336
|
end
|
|
@@ -394,8 +341,6 @@ module Mongoid
|
|
|
394
341
|
# Threaded.clear_session
|
|
395
342
|
#
|
|
396
343
|
# @return [ nil ]
|
|
397
|
-
#
|
|
398
|
-
# @since 6.4.0
|
|
399
344
|
def clear_session
|
|
400
345
|
session = get_session
|
|
401
346
|
session.end_session if session
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Timestamps
|
|
@@ -15,8 +14,6 @@ module Mongoid
|
|
|
15
14
|
# document.clear_timeless_option
|
|
16
15
|
#
|
|
17
16
|
# @return [ true ] True.
|
|
18
|
-
#
|
|
19
|
-
# @since 3.1.4
|
|
20
17
|
def clear_timeless_option
|
|
21
18
|
if self.persisted?
|
|
22
19
|
self.class.clear_timeless_option_on_update
|
|
@@ -32,8 +29,6 @@ module Mongoid
|
|
|
32
29
|
# person.timeless.save
|
|
33
30
|
#
|
|
34
31
|
# @return [ Document ] The document this was called on.
|
|
35
|
-
#
|
|
36
|
-
# @since 2.3.0
|
|
37
32
|
def timeless
|
|
38
33
|
self.class.timeless
|
|
39
34
|
self
|
|
@@ -63,8 +58,6 @@ module Mongoid
|
|
|
63
58
|
# Person.timeless.create(:title => "Sir")
|
|
64
59
|
#
|
|
65
60
|
# @return [ Class ] The class this was called on.
|
|
66
|
-
#
|
|
67
|
-
# @since 2.3.0
|
|
68
61
|
def timeless
|
|
69
62
|
counter = 0
|
|
70
63
|
counter += 1 if self < Mongoid::Timestamps::Created
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/timestamps/updated/short"
|
|
5
4
|
|
|
@@ -37,8 +36,6 @@ module Mongoid
|
|
|
37
36
|
# document.able_to_set_updated_at?
|
|
38
37
|
#
|
|
39
38
|
# @return [ true, false ] If the timestamp can be set.
|
|
40
|
-
#
|
|
41
|
-
# @since 2.4.0
|
|
42
39
|
def able_to_set_updated_at?
|
|
43
40
|
!frozen? && !timeless? && (new_record? || changed?)
|
|
44
41
|
end
|
data/lib/mongoid/timestamps.rb
CHANGED
data/lib/mongoid/touchable.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Touchable
|
|
@@ -21,8 +20,6 @@ module Mongoid
|
|
|
21
20
|
# @param [ Symbol ] field The name of an additional field to update.
|
|
22
21
|
#
|
|
23
22
|
# @return [ true/false ] false if record is new_record otherwise true.
|
|
24
|
-
#
|
|
25
|
-
# @since 3.0.0
|
|
26
23
|
def touch(field = nil)
|
|
27
24
|
return false if _root.new_record?
|
|
28
25
|
current = Time.now
|
|
@@ -41,6 +38,16 @@ module Mongoid
|
|
|
41
38
|
# _association.inverse_association.options but inverse_association
|
|
42
39
|
# seems to not always/ever be set here. See MONGOID-5014.
|
|
43
40
|
_parent.touch
|
|
41
|
+
|
|
42
|
+
if field
|
|
43
|
+
# If we are told to also touch a field, perform a separate write
|
|
44
|
+
# for that field. See MONGOID-5136.
|
|
45
|
+
# In theory we should combine the writes, which would require
|
|
46
|
+
# passing the fields to be updated to the parents - MONGOID-5142.
|
|
47
|
+
sets = set_field_atomic_updates(field)
|
|
48
|
+
selector = atomic_selector
|
|
49
|
+
_root.collection.find(selector).update_one(positionally(selector, sets), session: _session)
|
|
50
|
+
end
|
|
44
51
|
else
|
|
45
52
|
# If the current document is not embedded, it is composition root
|
|
46
53
|
# and we need to persist the write here.
|
|
@@ -70,8 +77,6 @@ module Mongoid
|
|
|
70
77
|
# @param [ Association ] association The association metadata.
|
|
71
78
|
#
|
|
72
79
|
# @return [ Class ] The model class.
|
|
73
|
-
#
|
|
74
|
-
# @since 3.0.0
|
|
75
80
|
def define_touchable!(association)
|
|
76
81
|
name = association.name
|
|
77
82
|
method_name = define_relation_touch_method(name, association)
|
|
@@ -96,8 +101,6 @@ module Mongoid
|
|
|
96
101
|
# @param [ Symbol ] name The name of the association.
|
|
97
102
|
# @param [ Association ] association The association metadata.
|
|
98
103
|
#
|
|
99
|
-
# @since 3.1.0
|
|
100
|
-
#
|
|
101
104
|
# @return [ Symbol ] The method name.
|
|
102
105
|
def define_relation_touch_method(name, association)
|
|
103
106
|
relation_classes = if association.polymorphic?
|
data/lib/mongoid/traversable.rb
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/fields/validators/macro"
|
|
5
4
|
|
|
6
5
|
module Mongoid
|
|
7
6
|
|
|
8
7
|
# Provides behavior around traversing the document graph.
|
|
9
|
-
#
|
|
10
|
-
# @since 4.0.0
|
|
11
8
|
module Traversable
|
|
12
9
|
extend ActiveSupport::Concern
|
|
13
10
|
|
|
@@ -66,7 +63,7 @@ module Mongoid
|
|
|
66
63
|
# A separate module was needed because the subclasses of this class
|
|
67
64
|
# need to be manually prepended with the discriminator_value and can't
|
|
68
65
|
# rely on being a class_attribute because the .discriminator_value
|
|
69
|
-
# method is
|
|
66
|
+
# method is overridden by every subclass in the inherited method.
|
|
70
67
|
#
|
|
71
68
|
# @api private
|
|
72
69
|
module DiscriminatorRetrieval
|
|
@@ -118,53 +115,82 @@ module Mongoid
|
|
|
118
115
|
end
|
|
119
116
|
end
|
|
120
117
|
|
|
121
|
-
# Get all child +Documents+ to this +Document
|
|
122
|
-
#
|
|
118
|
+
# Get all child +Documents+ to this +Document+
|
|
119
|
+
#
|
|
120
|
+
# @return [ Array<Document> ] All child documents in the hierarchy.
|
|
121
|
+
#
|
|
122
|
+
# @api private
|
|
123
|
+
def _children
|
|
124
|
+
@__children ||= collect_children
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Get all descendant +Documents+ of this +Document+ recursively.
|
|
128
|
+
# This is used when calling update persistence operations from
|
|
123
129
|
# the root document, where changes in the entire tree need to be
|
|
124
130
|
# determined. Note that persistence from the embedded documents will
|
|
125
131
|
# always be preferred, since they are optimized calls... This operation
|
|
126
132
|
# can get expensive in domains with large hierarchies.
|
|
127
133
|
#
|
|
128
|
-
# @
|
|
129
|
-
# person._children
|
|
134
|
+
# @return [ Array<Document> ] All descendant documents in the hierarchy.
|
|
130
135
|
#
|
|
131
|
-
# @
|
|
132
|
-
def
|
|
133
|
-
@
|
|
136
|
+
# @api private
|
|
137
|
+
def _descendants
|
|
138
|
+
@__descendants ||= collect_descendants
|
|
134
139
|
end
|
|
135
140
|
|
|
136
141
|
# Collect all the children of this document.
|
|
137
142
|
#
|
|
138
|
-
# @example Collect all the children.
|
|
139
|
-
# document.collect_children
|
|
140
|
-
#
|
|
141
143
|
# @return [ Array<Document> ] The children.
|
|
142
144
|
#
|
|
143
|
-
# @
|
|
145
|
+
# @api private
|
|
144
146
|
def collect_children
|
|
145
147
|
children = []
|
|
146
148
|
embedded_relations.each_pair do |name, association|
|
|
147
149
|
without_autobuild do
|
|
148
150
|
child = send(name)
|
|
149
|
-
|
|
150
|
-
children.
|
|
151
|
-
|
|
152
|
-
end if child
|
|
151
|
+
if child
|
|
152
|
+
children += Array.wrap(child)
|
|
153
|
+
end
|
|
153
154
|
end
|
|
154
155
|
end
|
|
155
156
|
children
|
|
156
157
|
end
|
|
157
158
|
|
|
158
|
-
#
|
|
159
|
+
# Collect all the descendants of this document.
|
|
159
160
|
#
|
|
160
|
-
# @
|
|
161
|
-
# document.flag_children_persisted
|
|
161
|
+
# @return [ Array<Document> ] The descendants.
|
|
162
162
|
#
|
|
163
|
-
# @
|
|
163
|
+
# @api private
|
|
164
|
+
def collect_descendants
|
|
165
|
+
children = []
|
|
166
|
+
to_expand = []
|
|
167
|
+
expanded = {}
|
|
168
|
+
embedded_relations.each_pair do |name, association|
|
|
169
|
+
without_autobuild do
|
|
170
|
+
child = send(name)
|
|
171
|
+
if child
|
|
172
|
+
to_expand += Array.wrap(child)
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
until to_expand.empty?
|
|
177
|
+
expanding = to_expand
|
|
178
|
+
to_expand = []
|
|
179
|
+
expanding.each do |child|
|
|
180
|
+
next if expanded[child]
|
|
181
|
+
expanded[child] = true
|
|
182
|
+
children << child
|
|
183
|
+
to_expand += child._children
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
children
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
# Marks all descendants as being persisted.
|
|
164
190
|
#
|
|
165
|
-
# @
|
|
166
|
-
def
|
|
167
|
-
|
|
191
|
+
# @return [ Array<Document> ] The flagged descendants.
|
|
192
|
+
def flag_descendants_persisted
|
|
193
|
+
_descendants.each do |child|
|
|
168
194
|
child.new_record = false
|
|
169
195
|
end
|
|
170
196
|
end
|
|
@@ -201,8 +227,6 @@ module Mongoid
|
|
|
201
227
|
# document.remove_child(child)
|
|
202
228
|
#
|
|
203
229
|
# @param [ Document ] child The child (embedded) document to remove.
|
|
204
|
-
#
|
|
205
|
-
# @since 2.0.0.beta.1
|
|
206
230
|
def remove_child(child)
|
|
207
231
|
name = child.association_name
|
|
208
232
|
if child.embedded_one?
|
|
@@ -213,37 +237,28 @@ module Mongoid
|
|
|
213
237
|
end
|
|
214
238
|
end
|
|
215
239
|
|
|
216
|
-
# After
|
|
217
|
-
# and flag them as persisted in one call.
|
|
218
|
-
#
|
|
219
|
-
# @example Reset the children.
|
|
220
|
-
# document.reset_persisted_children
|
|
240
|
+
# After descendants are persisted we can call this to move all their
|
|
241
|
+
# changes and flag them as persisted in one call.
|
|
221
242
|
#
|
|
222
|
-
# @return [ Array<Document> ] The
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
def reset_persisted_children
|
|
226
|
-
_children.each do |child|
|
|
243
|
+
# @return [ Array<Document> ] The descendants.
|
|
244
|
+
def reset_persisted_descendants
|
|
245
|
+
_descendants.each do |child|
|
|
227
246
|
child.move_changes
|
|
228
247
|
child.new_record = false
|
|
229
248
|
end
|
|
230
|
-
|
|
249
|
+
_reset_memoized_descendants!
|
|
231
250
|
end
|
|
232
251
|
|
|
233
|
-
# Resets the memoized
|
|
252
|
+
# Resets the memoized descendants on the object. Called internally when an
|
|
234
253
|
# embedded array changes size.
|
|
235
254
|
#
|
|
236
|
-
# @api semiprivate
|
|
237
|
-
#
|
|
238
|
-
# @example Reset the memoized children.
|
|
239
|
-
# document._reset_memoized_children!
|
|
240
|
-
#
|
|
241
255
|
# @return [ nil ] nil.
|
|
242
256
|
#
|
|
243
|
-
# @
|
|
244
|
-
def
|
|
245
|
-
_parent.
|
|
257
|
+
# @api private
|
|
258
|
+
def _reset_memoized_descendants!
|
|
259
|
+
_parent._reset_memoized_descendants! if _parent
|
|
246
260
|
@__children = nil
|
|
261
|
+
@__descendants = nil
|
|
247
262
|
end
|
|
248
263
|
|
|
249
264
|
# Return the root document in the object graph. If the current document
|
|
@@ -265,8 +280,6 @@ module Mongoid
|
|
|
265
280
|
# document._root?
|
|
266
281
|
#
|
|
267
282
|
# @return [ true, false ] If the document is the root.
|
|
268
|
-
#
|
|
269
|
-
# @since 3.1.0
|
|
270
283
|
def _root?
|
|
271
284
|
_parent ? false : true
|
|
272
285
|
end
|
|
@@ -291,8 +304,6 @@ module Mongoid
|
|
|
291
304
|
# Person.inherited(Doctor)
|
|
292
305
|
#
|
|
293
306
|
# @param [ Class ] subclass The inheriting class.
|
|
294
|
-
#
|
|
295
|
-
# @since 2.0.0.rc.6
|
|
296
307
|
def inherited(subclass)
|
|
297
308
|
super
|
|
298
309
|
@_type = nil
|
|
@@ -305,7 +316,7 @@ module Mongoid
|
|
|
305
316
|
subclass.discriminator_value = subclass.name
|
|
306
317
|
|
|
307
318
|
# We need to do this here because the discriminator_value method is
|
|
308
|
-
#
|
|
319
|
+
# overridden in the subclass above.
|
|
309
320
|
class << subclass
|
|
310
321
|
include DiscriminatorRetrieval
|
|
311
322
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Validatable
|
|
@@ -28,8 +27,6 @@ module Mongoid
|
|
|
28
27
|
# @param [ Document ] document The document to validate.
|
|
29
28
|
# @param [ Symbol ] attribute The association to validate.
|
|
30
29
|
# @param [ Object ] value The value of the association.
|
|
31
|
-
#
|
|
32
|
-
# @since 2.0.0
|
|
33
30
|
def validate_each(document, attribute, value)
|
|
34
31
|
begin
|
|
35
32
|
document.begin_validate
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Validatable
|
|
@@ -15,8 +14,6 @@ module Mongoid
|
|
|
15
14
|
# @param [ Document ] document The document.
|
|
16
15
|
# @param [ Symbol, String ] attribute The attribute to validate.
|
|
17
16
|
# @param [ Object ] value The attribute value.
|
|
18
|
-
#
|
|
19
|
-
# @since 2.4.2
|
|
20
17
|
def validate_each(document, attribute, value)
|
|
21
18
|
field = document.fields[document.database_field_name(attribute)]
|
|
22
19
|
if field.try(:localized?) && !value.blank?
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Validatable
|
|
@@ -54,8 +53,6 @@ module Mongoid
|
|
|
54
53
|
# end
|
|
55
54
|
#
|
|
56
55
|
# @param [ Array ] args The names of the fields to validate.
|
|
57
|
-
#
|
|
58
|
-
# @since 2.4.0
|
|
59
56
|
def validates_format_of(*args)
|
|
60
57
|
validates_with(FormatValidator, _merge_attributes(args))
|
|
61
58
|
end
|
|
@@ -71,8 +68,6 @@ module Mongoid
|
|
|
71
68
|
# end
|
|
72
69
|
#
|
|
73
70
|
# @param [ Array ] args The names of the fields to validate.
|
|
74
|
-
#
|
|
75
|
-
# @since 2.4.0
|
|
76
71
|
def validates_length_of(*args)
|
|
77
72
|
validates_with(LengthValidator, _merge_attributes(args))
|
|
78
73
|
end
|
|
@@ -88,8 +83,6 @@ module Mongoid
|
|
|
88
83
|
# end
|
|
89
84
|
#
|
|
90
85
|
# @param [ Array ] args The names of the fields to validate.
|
|
91
|
-
#
|
|
92
|
-
# @since 2.4.0
|
|
93
86
|
def validates_presence_of(*args)
|
|
94
87
|
validates_with(PresenceValidator, _merge_attributes(args))
|
|
95
88
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Validatable
|
|
@@ -25,8 +24,6 @@ module Mongoid
|
|
|
25
24
|
# @param [ Document ] document The document to validate.
|
|
26
25
|
# @param [ Symbol ] attribute The attribute name.
|
|
27
26
|
# @param [ Object ] value The current value of the field.
|
|
28
|
-
#
|
|
29
|
-
# @since 2.4.0
|
|
30
27
|
def validate_each(document, attribute, value)
|
|
31
28
|
field = document.fields[document.database_field_name(attribute)]
|
|
32
29
|
if field.try(:localized?) && !value.blank?
|
|
@@ -53,15 +50,13 @@ module Mongoid
|
|
|
53
50
|
# @api private
|
|
54
51
|
#
|
|
55
52
|
# @example Check is the association or fk is blank.
|
|
56
|
-
# validator.
|
|
53
|
+
# validator.relation_or_fk_missing(doc, :name, "")
|
|
57
54
|
#
|
|
58
55
|
# @param [ Document ] doc The document.
|
|
59
56
|
# @param [ Symbol ] attr The attribute.
|
|
60
57
|
# @param [ Object ] value The value.
|
|
61
58
|
#
|
|
62
59
|
# @return [ true, false ] If the doc is missing.
|
|
63
|
-
#
|
|
64
|
-
# @since 3.0.0
|
|
65
60
|
def relation_or_fk_missing?(doc, attr, value)
|
|
66
61
|
return true if value.blank? && doc.send(attr).blank?
|
|
67
62
|
association = doc.relations[attr.to_s]
|
|
@@ -78,8 +73,6 @@ module Mongoid
|
|
|
78
73
|
# @param [ Object ] value The value.
|
|
79
74
|
#
|
|
80
75
|
# @return [ true, false ] If the value is not present.
|
|
81
|
-
#
|
|
82
|
-
# @since 3.0.5
|
|
83
76
|
def not_present?(value)
|
|
84
77
|
value.blank? && value != false
|
|
85
78
|
end
|