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
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Persistable
|
|
6
5
|
|
|
7
6
|
# Defines behavior for $pop operations.
|
|
8
|
-
#
|
|
9
|
-
# @since 4.0.0
|
|
10
7
|
module Poppable
|
|
11
8
|
extend ActiveSupport::Concern
|
|
12
9
|
|
|
@@ -24,8 +21,6 @@ module Mongoid
|
|
|
24
21
|
# @param [ Hash ] pops The field/value pop operations.
|
|
25
22
|
#
|
|
26
23
|
# @return [ Document ] The document.
|
|
27
|
-
#
|
|
28
|
-
# @since 4.0.0
|
|
29
24
|
def pop(pops)
|
|
30
25
|
prepare_atomic_operation do |ops|
|
|
31
26
|
process_atomic_operations(pops) do |field, value|
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Persistable
|
|
6
5
|
|
|
7
6
|
# Defines behavior for $pull and $pullAll operations.
|
|
8
|
-
#
|
|
9
|
-
# @since 4.0.0
|
|
10
7
|
module Pullable
|
|
11
8
|
extend ActiveSupport::Concern
|
|
12
9
|
|
|
@@ -20,8 +17,6 @@ module Mongoid
|
|
|
20
17
|
# @param [ Hash ] pulls The field/value pull pairs.
|
|
21
18
|
#
|
|
22
19
|
# @return [ Document ] The document.
|
|
23
|
-
#
|
|
24
|
-
# @since 4.0.0
|
|
25
20
|
def pull(pulls)
|
|
26
21
|
prepare_atomic_operation do |ops|
|
|
27
22
|
process_atomic_operations(pulls) do |field, value|
|
|
@@ -40,8 +35,6 @@ module Mongoid
|
|
|
40
35
|
# @param [ Hash ] pulls The pull all operations.
|
|
41
36
|
#
|
|
42
37
|
# @return [ Document ] The document.
|
|
43
|
-
#
|
|
44
|
-
# @since 4.0.0
|
|
45
38
|
def pull_all(pulls)
|
|
46
39
|
prepare_atomic_operation do |ops|
|
|
47
40
|
process_atomic_operations(pulls) do |field, value|
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Persistable
|
|
6
5
|
|
|
7
6
|
# Defines behavior for $push and $addToSet operations.
|
|
8
|
-
#
|
|
9
|
-
# @since 4.0.0
|
|
10
7
|
module Pushable
|
|
11
8
|
extend ActiveSupport::Concern
|
|
12
9
|
|
|
@@ -19,8 +16,6 @@ module Mongoid
|
|
|
19
16
|
# @param [ Hash ] adds The field/value pairs to add.
|
|
20
17
|
#
|
|
21
18
|
# @return [ Document ] The document.
|
|
22
|
-
#
|
|
23
|
-
# @since 4.0.0
|
|
24
19
|
def add_to_set(adds)
|
|
25
20
|
prepare_atomic_operation do |ops|
|
|
26
21
|
process_atomic_operations(adds) do |field, value|
|
|
@@ -52,8 +47,6 @@ module Mongoid
|
|
|
52
47
|
# @param [ Hash ] pushes The $push operations.
|
|
53
48
|
#
|
|
54
49
|
# @return [ Document ] The document.
|
|
55
|
-
#
|
|
56
|
-
# @since 4.0.0
|
|
57
50
|
def push(pushes)
|
|
58
51
|
prepare_atomic_operation do |ops|
|
|
59
52
|
process_atomic_operations(pushes) do |field, value|
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Persistable
|
|
6
5
|
|
|
7
6
|
# Defines behavior for $rename operations.
|
|
8
|
-
#
|
|
9
|
-
# @since 4.0.0
|
|
10
7
|
module Renamable
|
|
11
8
|
extend ActiveSupport::Concern
|
|
12
9
|
|
|
@@ -20,8 +17,6 @@ module Mongoid
|
|
|
20
17
|
# @param [ Hash ] renames The rename pairs of old name/new name.
|
|
21
18
|
#
|
|
22
19
|
# @return [ Document ] The document.
|
|
23
|
-
#
|
|
24
|
-
# @since 4.0.0
|
|
25
20
|
def rename(renames)
|
|
26
21
|
prepare_atomic_operation do |ops|
|
|
27
22
|
process_atomic_operations(renames) do |old_field, new_field|
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Persistable
|
|
6
5
|
|
|
7
6
|
# Defines behavior for persistence operations that save documents.
|
|
8
|
-
#
|
|
9
|
-
# @since 4.0.0
|
|
10
7
|
module Savable
|
|
11
8
|
|
|
12
9
|
# Save the document - will perform an insert if the document is new, and
|
|
@@ -18,8 +15,6 @@ module Mongoid
|
|
|
18
15
|
# @param [ Hash ] options Options to pass to the save.
|
|
19
16
|
#
|
|
20
17
|
# @return [ true, false ] True is success, false if not.
|
|
21
|
-
#
|
|
22
|
-
# @since 1.0.0
|
|
23
18
|
def save(options = {})
|
|
24
19
|
if new_record?
|
|
25
20
|
!insert(options).new_record?
|
|
@@ -40,8 +35,6 @@ module Mongoid
|
|
|
40
35
|
# @raise [ Errors::Callback ] If a callback returns false.
|
|
41
36
|
#
|
|
42
37
|
# @return [ true, false ] True if validation passed.
|
|
43
|
-
#
|
|
44
|
-
# @since 1.0.0
|
|
45
38
|
def save!(options = {})
|
|
46
39
|
unless save(options)
|
|
47
40
|
fail_due_to_validation! unless errors.empty?
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Persistable
|
|
6
5
|
|
|
7
6
|
# Defines behavior for $set operations.
|
|
8
|
-
#
|
|
9
|
-
# @since 4.0.0
|
|
10
7
|
module Settable
|
|
11
8
|
extend ActiveSupport::Concern
|
|
12
9
|
|
|
@@ -47,8 +44,6 @@ module Mongoid
|
|
|
47
44
|
# @param [ Hash ] setters The field/value pairs to set.
|
|
48
45
|
#
|
|
49
46
|
# @return [ Document ] The document.
|
|
50
|
-
#
|
|
51
|
-
# @since 4.0.0
|
|
52
47
|
def set(setters)
|
|
53
48
|
prepare_atomic_operation do |ops|
|
|
54
49
|
process_atomic_operations(setters) do |field, value|
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Persistable
|
|
6
5
|
|
|
7
6
|
# Defines behavior for $unset operations.
|
|
8
|
-
#
|
|
9
|
-
# @since 4.0.0
|
|
10
7
|
module Unsettable
|
|
11
8
|
extend ActiveSupport::Concern
|
|
12
9
|
|
|
@@ -20,8 +17,6 @@ module Mongoid
|
|
|
20
17
|
# unset.
|
|
21
18
|
#
|
|
22
19
|
# @return [ Document ] The document.
|
|
23
|
-
#
|
|
24
|
-
# @since 4.0.0
|
|
25
20
|
def unset(*fields)
|
|
26
21
|
prepare_atomic_operation do |ops|
|
|
27
22
|
fields.flatten.each do |field|
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Persistable
|
|
6
5
|
|
|
7
6
|
# Defines behavior for persistence operations that update existing
|
|
8
7
|
# documents.
|
|
9
|
-
#
|
|
10
|
-
# @since 4.0.0
|
|
11
8
|
module Updatable
|
|
12
9
|
|
|
13
10
|
# Update a single attribute and persist the entire document.
|
|
@@ -20,11 +17,9 @@ module Mongoid
|
|
|
20
17
|
# @param [ Object ] value The new value of the attribute.a
|
|
21
18
|
#
|
|
22
19
|
# @raise [ Errors::ReadonlyAttribute ] If the field cannot be changed due
|
|
23
|
-
# to being flagged as
|
|
20
|
+
# to being flagged as read-only.
|
|
24
21
|
#
|
|
25
|
-
# @return [ true, false ] True if save was
|
|
26
|
-
#
|
|
27
|
-
# @since 2.0.0
|
|
22
|
+
# @return [ true, false ] True if save was successful, false if not.
|
|
28
23
|
def update_attribute(name, value)
|
|
29
24
|
as_writable_attribute!(name, value) do |access|
|
|
30
25
|
normalized = name.to_s
|
|
@@ -41,8 +36,6 @@ module Mongoid
|
|
|
41
36
|
# @param [ Hash ] attributes The attributes to update.
|
|
42
37
|
#
|
|
43
38
|
# @return [ true, false ] True if validation passed, false if not.
|
|
44
|
-
#
|
|
45
|
-
# @since 1.0.0
|
|
46
39
|
def update(attributes = {})
|
|
47
40
|
assign_attributes(attributes)
|
|
48
41
|
save
|
|
@@ -61,8 +54,6 @@ module Mongoid
|
|
|
61
54
|
# @raise [ Errors::Callbacks ] If a callback returns false.
|
|
62
55
|
#
|
|
63
56
|
# @return [ true, false ] True if validation passed.
|
|
64
|
-
#
|
|
65
|
-
# @since 1.0.0
|
|
66
57
|
def update!(attributes = {})
|
|
67
58
|
result = update_attributes(attributes)
|
|
68
59
|
unless result
|
|
@@ -83,8 +74,6 @@ module Mongoid
|
|
|
83
74
|
# document.init_atomic_updates
|
|
84
75
|
#
|
|
85
76
|
# @return [ Array<Hash> ] The updates and conflicts.
|
|
86
|
-
#
|
|
87
|
-
# @since 4.0.0
|
|
88
77
|
def init_atomic_updates
|
|
89
78
|
updates = atomic_updates
|
|
90
79
|
conflicts = updates.delete(:conflicts) || {}
|
|
@@ -103,8 +92,6 @@ module Mongoid
|
|
|
103
92
|
# @param [ Hash ] options The options.
|
|
104
93
|
#
|
|
105
94
|
# @return [ true, false ] The result of the update.
|
|
106
|
-
#
|
|
107
|
-
# @since 4.0.0
|
|
108
95
|
def prepare_update(options = {})
|
|
109
96
|
return false if performing_validations?(options) &&
|
|
110
97
|
invalid?(options[:context] || :update)
|
|
@@ -128,8 +115,6 @@ module Mongoid
|
|
|
128
115
|
# @option options [ true, false ] :validate Whether or not to validate.
|
|
129
116
|
#
|
|
130
117
|
# @return [ true, false ] True if succeeded, false if not.
|
|
131
|
-
#
|
|
132
|
-
# @since 1.0.0
|
|
133
118
|
def update_document(options = {})
|
|
134
119
|
prepare_update(options) do
|
|
135
120
|
updates, conflicts = init_atomic_updates
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Persistable
|
|
6
5
|
|
|
7
6
|
# Defines behavior for persistence operations that upsert documents.
|
|
8
|
-
#
|
|
9
|
-
# @since 4.0.0
|
|
10
7
|
module Upsertable
|
|
11
8
|
|
|
12
9
|
# Perform an upsert of the document. If the document does not exist in the
|
|
@@ -19,8 +16,6 @@ module Mongoid
|
|
|
19
16
|
# @param [ Hash ] options The validation options.
|
|
20
17
|
#
|
|
21
18
|
# @return [ true ] True.
|
|
22
|
-
#
|
|
23
|
-
# @since 3.0.0
|
|
24
19
|
def upsert(options = {})
|
|
25
20
|
prepare_upsert(options) do
|
|
26
21
|
collection.find(atomic_selector).update_one(
|
|
@@ -42,8 +37,6 @@ module Mongoid
|
|
|
42
37
|
# @param [ Hash ] options The options hash.
|
|
43
38
|
#
|
|
44
39
|
# @return [ true, false ] If the operation succeeded.
|
|
45
|
-
#
|
|
46
|
-
# @since 4.0.0
|
|
47
40
|
def prepare_upsert(options = {})
|
|
48
41
|
return false if performing_validations?(options) && invalid?(:upsert)
|
|
49
42
|
result = run_callbacks(:upsert) do
|
data/lib/mongoid/persistable.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/persistable/creatable"
|
|
5
4
|
require "mongoid/persistable/deletable"
|
|
@@ -19,8 +18,6 @@ require "mongoid/persistable/unsettable"
|
|
|
19
18
|
module Mongoid
|
|
20
19
|
|
|
21
20
|
# Contains general behavior for persistence operations.
|
|
22
|
-
#
|
|
23
|
-
# @since 2.0.0
|
|
24
21
|
module Persistable
|
|
25
22
|
extend ActiveSupport::Concern
|
|
26
23
|
include Creatable
|
|
@@ -40,8 +37,6 @@ module Mongoid
|
|
|
40
37
|
include Unsettable
|
|
41
38
|
|
|
42
39
|
# The atomic operations that deal with arrays or sets in the db.
|
|
43
|
-
#
|
|
44
|
-
# @since 4.0.0
|
|
45
40
|
LIST_OPERATIONS = [ "$addToSet", "$push", "$pull", "$pullAll" ].freeze
|
|
46
41
|
|
|
47
42
|
# Execute operations atomically (in a single database call) for everything
|
|
@@ -89,8 +84,6 @@ module Mongoid
|
|
|
89
84
|
# for the same document, if one exists.
|
|
90
85
|
#
|
|
91
86
|
# @return [ true, false ] If the operation succeeded.
|
|
92
|
-
#
|
|
93
|
-
# @since 4.0.0
|
|
94
87
|
def atomically(join_context: nil)
|
|
95
88
|
join_context = Mongoid.join_contexts if join_context.nil?
|
|
96
89
|
call_depth = @atomic_depth ||= 0
|
|
@@ -128,8 +121,6 @@ module Mongoid
|
|
|
128
121
|
# Person.fail_due_to_validation!(person)
|
|
129
122
|
#
|
|
130
123
|
# @raise [ Errors::Validations ] The validation error.
|
|
131
|
-
#
|
|
132
|
-
# @since 4.0.0
|
|
133
124
|
def fail_due_to_validation!
|
|
134
125
|
raise Errors::Validations.new(self)
|
|
135
126
|
end
|
|
@@ -142,8 +133,6 @@ module Mongoid
|
|
|
142
133
|
# @param [ Symbol ] method The method being called.
|
|
143
134
|
#
|
|
144
135
|
# @raise [ Errors::Callback ] The callback error.
|
|
145
|
-
#
|
|
146
|
-
# @since 4.0.0
|
|
147
136
|
def fail_due_to_callback!(method)
|
|
148
137
|
raise Errors::Callback.new(self.class, method)
|
|
149
138
|
end
|
|
@@ -158,8 +147,6 @@ module Mongoid
|
|
|
158
147
|
# document.executing_atomically?
|
|
159
148
|
#
|
|
160
149
|
# @return [ true, false ] If we are current executing atomically.
|
|
161
|
-
#
|
|
162
|
-
# @since 4.0.0
|
|
163
150
|
def executing_atomically?
|
|
164
151
|
!@atomic_updates_to_execute_stack.nil?
|
|
165
152
|
end
|
|
@@ -175,8 +162,6 @@ module Mongoid
|
|
|
175
162
|
# @param [ Hash ] options The options.
|
|
176
163
|
#
|
|
177
164
|
# @return [ true ] true.
|
|
178
|
-
#
|
|
179
|
-
# @since 4.0.0
|
|
180
165
|
def post_process_persist(result, options = {})
|
|
181
166
|
post_persist unless result == false
|
|
182
167
|
errors.clear unless performing_validations?(options)
|
|
@@ -194,8 +179,6 @@ module Mongoid
|
|
|
194
179
|
# end
|
|
195
180
|
#
|
|
196
181
|
# @return [ Object ] The result of the operation.
|
|
197
|
-
#
|
|
198
|
-
# @since 4.0.0
|
|
199
182
|
def prepare_atomic_operation
|
|
200
183
|
operations = yield({})
|
|
201
184
|
persist_or_delay_atomic_operation(operations)
|
|
@@ -216,8 +199,6 @@ module Mongoid
|
|
|
216
199
|
# @param [ Hash ] operations The atomic operations.
|
|
217
200
|
#
|
|
218
201
|
# @return [ Hash ] The operations.
|
|
219
|
-
#
|
|
220
|
-
# @since 4.0.0
|
|
221
202
|
def process_atomic_operations(operations)
|
|
222
203
|
operations.each do |field, value|
|
|
223
204
|
access = database_field_name(field)
|
|
@@ -295,8 +276,6 @@ module Mongoid
|
|
|
295
276
|
# document.persist_or_delay_atomic_operation(ops)
|
|
296
277
|
#
|
|
297
278
|
# @param [ Hash ] operation The operation.
|
|
298
|
-
#
|
|
299
|
-
# @since 4.0.0
|
|
300
279
|
def persist_or_delay_atomic_operation(operation)
|
|
301
280
|
if executing_atomically?
|
|
302
281
|
operation.each do |(name, hash)|
|
|
@@ -316,8 +295,6 @@ module Mongoid
|
|
|
316
295
|
# persist_atomic_operations(ops)
|
|
317
296
|
#
|
|
318
297
|
# @param [ Hash ] operations The atomic operations.
|
|
319
|
-
#
|
|
320
|
-
# @since 4.0.0
|
|
321
298
|
def persist_atomic_operations(operations)
|
|
322
299
|
if persisted? && operations && !operations.empty?
|
|
323
300
|
selector = atomic_selector
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
|
|
6
5
|
# Object encapsulating logic for setting/getting a collection and database name
|
|
7
6
|
# and a client with particular options to use when persisting models.
|
|
8
|
-
#
|
|
9
|
-
# @since 6.0.0
|
|
10
7
|
class PersistenceContext
|
|
11
8
|
extend Forwardable
|
|
12
9
|
|
|
@@ -19,8 +16,6 @@ module Mongoid
|
|
|
19
16
|
# The options defining this persistence context.
|
|
20
17
|
#
|
|
21
18
|
# @return [ Hash ] The persistence context options.
|
|
22
|
-
#
|
|
23
|
-
# @since 6.0.0
|
|
24
19
|
attr_reader :options
|
|
25
20
|
|
|
26
21
|
# Extra options in addition to driver client options that determine the
|
|
@@ -28,8 +23,6 @@ module Mongoid
|
|
|
28
23
|
#
|
|
29
24
|
# @return [ Array<Symbol> ] The list of extra options besides client options
|
|
30
25
|
# that determine the persistence context.
|
|
31
|
-
#
|
|
32
|
-
# @since 6.0.0
|
|
33
26
|
EXTRA_OPTIONS = [ :client,
|
|
34
27
|
:collection
|
|
35
28
|
].freeze
|
|
@@ -38,8 +31,6 @@ module Mongoid
|
|
|
38
31
|
#
|
|
39
32
|
# @return [ Array<Symbol> ] The full list of options defining the persistence
|
|
40
33
|
# context.
|
|
41
|
-
#
|
|
42
|
-
# @since 6.0.0
|
|
43
34
|
VALID_OPTIONS = ( Mongo::Client::VALID_OPTIONS + EXTRA_OPTIONS ).freeze
|
|
44
35
|
|
|
45
36
|
# Initialize the persistence context object.
|
|
@@ -50,8 +41,6 @@ module Mongoid
|
|
|
50
41
|
# @param [ Object ] object The class or model instance for which a persistence context
|
|
51
42
|
# should be created.
|
|
52
43
|
# @param [ Hash ] opts The persistence context options.
|
|
53
|
-
#
|
|
54
|
-
# @since 6.0.0
|
|
55
44
|
def initialize(object, opts = {})
|
|
56
45
|
@object = object
|
|
57
46
|
set_options!(opts)
|
|
@@ -67,8 +56,6 @@ module Mongoid
|
|
|
67
56
|
#
|
|
68
57
|
# @return [ Mongo::Collection ] The collection for this persistence
|
|
69
58
|
# context.
|
|
70
|
-
#
|
|
71
|
-
# @since 6.0.0
|
|
72
59
|
def collection(parent = nil)
|
|
73
60
|
parent ? parent.collection.with(client_options) : client[collection_name.to_sym]
|
|
74
61
|
end
|
|
@@ -80,8 +67,6 @@ module Mongoid
|
|
|
80
67
|
#
|
|
81
68
|
# @return [ String ] The collection name for this persistence
|
|
82
69
|
# context.
|
|
83
|
-
#
|
|
84
|
-
# @since 6.0.0
|
|
85
70
|
def collection_name
|
|
86
71
|
@collection_name ||= (__evaluate__(options[:collection] ||
|
|
87
72
|
storage_options[:collection]))
|
|
@@ -94,8 +79,6 @@ module Mongoid
|
|
|
94
79
|
#
|
|
95
80
|
# @return [ String ] The database name for this persistence
|
|
96
81
|
# context.
|
|
97
|
-
#
|
|
98
|
-
# @since 6.0.0
|
|
99
82
|
def database_name
|
|
100
83
|
__evaluate__(database_name_option) || client.database.name
|
|
101
84
|
end
|
|
@@ -107,8 +90,6 @@ module Mongoid
|
|
|
107
90
|
#
|
|
108
91
|
# @return [ Mongo::Client ] The client for this persistence
|
|
109
92
|
# context.
|
|
110
|
-
#
|
|
111
|
-
# @since 6.0.0
|
|
112
93
|
def client
|
|
113
94
|
@client ||= begin
|
|
114
95
|
client = Clients.with_name(client_name)
|
|
@@ -136,8 +117,6 @@ module Mongoid
|
|
|
136
117
|
# @param [ Object ] other The object to be compared with this one.
|
|
137
118
|
#
|
|
138
119
|
# @return [ true, false ] Whether the two persistence contexts are equal.
|
|
139
|
-
#
|
|
140
|
-
# @since 6.0.0
|
|
141
120
|
def ==(other)
|
|
142
121
|
return false unless other.is_a?(PersistenceContext)
|
|
143
122
|
options == other.options
|
|
@@ -192,8 +171,6 @@ module Mongoid
|
|
|
192
171
|
# options or a persistence context object.
|
|
193
172
|
#
|
|
194
173
|
# @return [ Mongoid::PersistenceContext ] The persistence context for the object.
|
|
195
|
-
#
|
|
196
|
-
# @since 6.0.0
|
|
197
174
|
def set(object, options_or_context)
|
|
198
175
|
key = "[mongoid][#{object.object_id}]:context"
|
|
199
176
|
existing_context = Thread.current[key]
|
|
@@ -218,8 +195,6 @@ module Mongoid
|
|
|
218
195
|
# @param [ Object ] object The class or model instance.
|
|
219
196
|
#
|
|
220
197
|
# @return [ Mongoid::PersistenceContext ] The persistence context for the object.
|
|
221
|
-
#
|
|
222
|
-
# @since 6.0.0
|
|
223
198
|
def get(object)
|
|
224
199
|
Thread.current["[mongoid][#{object.object_id}]:context"]
|
|
225
200
|
end
|
|
@@ -233,11 +208,11 @@ module Mongoid
|
|
|
233
208
|
# @param [ Mongo::Cluster ] cluster The original cluster before this context was used.
|
|
234
209
|
# @param [ Mongoid::PersistenceContext ] original_context The original persistence
|
|
235
210
|
# context that was set before this context was used.
|
|
236
|
-
#
|
|
237
|
-
# @since 6.0.0
|
|
238
211
|
def clear(object, cluster = nil, original_context = nil)
|
|
239
212
|
if context = get(object)
|
|
240
|
-
|
|
213
|
+
unless cluster.nil? || context.cluster.equal?(cluster)
|
|
214
|
+
context.client.close
|
|
215
|
+
end
|
|
241
216
|
end
|
|
242
217
|
ensure
|
|
243
218
|
Thread.current["[mongoid][#{object.object_id}]:context"] = original_context
|
data/lib/mongoid/positional.rb
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
|
|
6
5
|
# This module is responsible for taking update selectors and switching out
|
|
7
6
|
# the indexes for the $ positional operator where appropriate.
|
|
8
|
-
#
|
|
9
|
-
# @since 4.0.0
|
|
10
7
|
module Positional
|
|
11
8
|
|
|
12
9
|
# Takes the provided selector and atomic operations and replaces the
|
|
@@ -33,8 +30,6 @@ module Mongoid
|
|
|
33
30
|
# @param [ Hash ] processed The processed update operations.
|
|
34
31
|
#
|
|
35
32
|
# @return [ Hash ] The new operations.
|
|
36
|
-
#
|
|
37
|
-
# @since 3.1.0
|
|
38
33
|
def positionally(selector, operations, processed = {})
|
|
39
34
|
if selector.size == 1 || selector.values.any? { |val| val.nil? }
|
|
40
35
|
return operations
|
data/lib/mongoid/query_cache.rb
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
|
|
6
5
|
# A cache of database queries on a per-request basis.
|
|
7
|
-
#
|
|
8
|
-
# @since 4.0.0
|
|
9
6
|
module QueryCache
|
|
10
|
-
|
|
7
|
+
# @api private
|
|
8
|
+
LEGACY_WARNING = <<~DOC
|
|
9
|
+
You are using the legacy Mongoid query cache which has known issues.
|
|
10
|
+
Please upgrade the `mongo' gem to at least 2.14.0 to use the improved driver query cache.
|
|
11
|
+
Refer to: https://docs.mongodb.com/mongoid/current/tutorials/mongoid-queries/#the-improved-driver-query-cache
|
|
12
|
+
DOC
|
|
11
13
|
|
|
14
|
+
class << self
|
|
12
15
|
# Get the cached queries.
|
|
13
16
|
#
|
|
14
17
|
# @example Get the cached queries from the current thread.
|
|
15
18
|
# QueryCache.cache_table
|
|
16
19
|
#
|
|
17
20
|
# @return [ Hash ] The hash of cached queries.
|
|
18
|
-
#
|
|
19
|
-
# @since 4.0.0
|
|
20
21
|
# @api private
|
|
21
22
|
def cache_table
|
|
22
23
|
if defined?(Mongo::QueryCache)
|
|
@@ -32,8 +33,6 @@ module Mongoid
|
|
|
32
33
|
# QueryCache.clear_cache
|
|
33
34
|
#
|
|
34
35
|
# @return [ nil ] Always nil.
|
|
35
|
-
#
|
|
36
|
-
# @since 4.0.0
|
|
37
36
|
def clear_cache
|
|
38
37
|
if defined?(Mongo::QueryCache)
|
|
39
38
|
Mongo::QueryCache.clear
|
|
@@ -48,8 +47,6 @@ module Mongoid
|
|
|
48
47
|
# QueryCache.enabled = true
|
|
49
48
|
#
|
|
50
49
|
# @param [ true, false ] value The enabled value.
|
|
51
|
-
#
|
|
52
|
-
# @since 4.0.0
|
|
53
50
|
def enabled=(value)
|
|
54
51
|
if defined?(Mongo::QueryCache)
|
|
55
52
|
Mongo::QueryCache.enabled = value
|
|
@@ -64,8 +61,6 @@ module Mongoid
|
|
|
64
61
|
# QueryCache.enabled?
|
|
65
62
|
#
|
|
66
63
|
# @return [ true, false ] If the cache is enabled.
|
|
67
|
-
#
|
|
68
|
-
# @since 4.0.0
|
|
69
64
|
def enabled?
|
|
70
65
|
if defined?(Mongo::QueryCache)
|
|
71
66
|
Mongo::QueryCache.enabled?
|
|
@@ -80,12 +75,14 @@ module Mongoid
|
|
|
80
75
|
# QueryCache.cache { collection.find }
|
|
81
76
|
#
|
|
82
77
|
# @return [ Object ] The result of the block.
|
|
83
|
-
#
|
|
84
|
-
# @since 4.0.0
|
|
85
78
|
def cache(&block)
|
|
86
79
|
if defined?(Mongo::QueryCache)
|
|
87
80
|
Mongo::QueryCache.cache(&block)
|
|
88
81
|
else
|
|
82
|
+
@legacy_query_cache_warned ||= begin
|
|
83
|
+
Mongoid.logger.warn(LEGACY_WARNING)
|
|
84
|
+
true
|
|
85
|
+
end
|
|
89
86
|
enabled = QueryCache.enabled?
|
|
90
87
|
QueryCache.enabled = true
|
|
91
88
|
begin
|
|
@@ -122,8 +119,6 @@ module Mongoid
|
|
|
122
119
|
else
|
|
123
120
|
# The middleware to be added to a rack application in order to activate the
|
|
124
121
|
# query cache.
|
|
125
|
-
#
|
|
126
|
-
# @since 4.0.0
|
|
127
122
|
class Middleware
|
|
128
123
|
|
|
129
124
|
# Instantiate the middleware.
|
|
@@ -132,8 +127,6 @@ module Mongoid
|
|
|
132
127
|
# Middleware.new(app)
|
|
133
128
|
#
|
|
134
129
|
# @param [ Object ] app The rack application stack.
|
|
135
|
-
#
|
|
136
|
-
# @since 4.0.0
|
|
137
130
|
def initialize(app)
|
|
138
131
|
@app = app
|
|
139
132
|
end
|
|
@@ -146,8 +139,6 @@ module Mongoid
|
|
|
146
139
|
# @param [ Object ] env The environment.
|
|
147
140
|
#
|
|
148
141
|
# @return [ Object ] The result of the call.
|
|
149
|
-
#
|
|
150
|
-
# @since 4.0.0
|
|
151
142
|
def call(env)
|
|
152
143
|
QueryCache.cache do
|
|
153
144
|
@app.call(env)
|
|
@@ -160,8 +151,6 @@ module Mongoid
|
|
|
160
151
|
|
|
161
152
|
# A Cursor that attempts to load documents from memory first before hitting
|
|
162
153
|
# the database if the same query has already been executed.
|
|
163
|
-
#
|
|
164
|
-
# @since 5.0.0
|
|
165
154
|
# @deprecated This class is only used with driver versions 2.13 and lower.
|
|
166
155
|
class CachedCursor < Mongo::Cursor
|
|
167
156
|
|
|
@@ -172,8 +161,6 @@ module Mongoid
|
|
|
172
161
|
# cursor.each do |doc|
|
|
173
162
|
# # ...
|
|
174
163
|
# end
|
|
175
|
-
#
|
|
176
|
-
# @since 5.0.0
|
|
177
164
|
def each
|
|
178
165
|
if @cached_documents
|
|
179
166
|
@cached_documents.each do |doc|
|
|
@@ -190,8 +177,6 @@ module Mongoid
|
|
|
190
177
|
# cursor.inspect
|
|
191
178
|
#
|
|
192
179
|
# @return [ String ] A string representation of a +Cursor+ instance.
|
|
193
|
-
#
|
|
194
|
-
# @since 2.0.0
|
|
195
180
|
def inspect
|
|
196
181
|
"#<Mongoid::QueryCache::CachedCursor:0x#{object_id} @view=#{@view.inspect}>"
|
|
197
182
|
end
|
|
@@ -211,8 +196,6 @@ module Mongoid
|
|
|
211
196
|
|
|
212
197
|
# Included to add behavior for clearing out the query cache on certain
|
|
213
198
|
# operations.
|
|
214
|
-
#
|
|
215
|
-
# @since 4.0.0
|
|
216
199
|
# @deprecated This module is only used with driver versions 2.13 and lower.
|
|
217
200
|
module Base
|
|
218
201
|
|
|
@@ -231,8 +214,6 @@ module Mongoid
|
|
|
231
214
|
|
|
232
215
|
# Contains enhancements to the Mongo::Collection::View in order to get a
|
|
233
216
|
# cached cursor or a regular cursor on iteration.
|
|
234
|
-
#
|
|
235
|
-
# @since 5.0.0
|
|
236
217
|
# @deprecated This module is only used with driver versions 2.13 and lower.
|
|
237
218
|
module View
|
|
238
219
|
extend ActiveSupport::Concern
|
|
@@ -256,8 +237,6 @@ module Mongoid
|
|
|
256
237
|
# view.each do |doc|
|
|
257
238
|
# # ...
|
|
258
239
|
# end
|
|
259
|
-
#
|
|
260
|
-
# @since 5.0.0
|
|
261
240
|
def each
|
|
262
241
|
if system_collection? || !QueryCache.enabled? || (respond_to?(:write?, true) && write?)
|
|
263
242
|
super
|
|
@@ -311,8 +290,6 @@ module Mongoid
|
|
|
311
290
|
end
|
|
312
291
|
|
|
313
292
|
# Adds behavior to the query cache for collections.
|
|
314
|
-
#
|
|
315
|
-
# @since 5.0.0
|
|
316
293
|
# @deprecated This module is only used with driver versions 2.13 and lower.
|
|
317
294
|
module Collection
|
|
318
295
|
extend ActiveSupport::Concern
|