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,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/contextual/atomic"
|
|
5
4
|
require "mongoid/contextual/aggregable/mongo"
|
|
@@ -19,8 +18,6 @@ module Mongoid
|
|
|
19
18
|
include Queryable
|
|
20
19
|
|
|
21
20
|
# Options constant.
|
|
22
|
-
#
|
|
23
|
-
# @since 5.0.0
|
|
24
21
|
OPTIONS = [ :hint,
|
|
25
22
|
:limit,
|
|
26
23
|
:skip,
|
|
@@ -44,8 +41,6 @@ module Mongoid
|
|
|
44
41
|
# context.cached?
|
|
45
42
|
#
|
|
46
43
|
# @return [ true, false ] If the context is cached.
|
|
47
|
-
#
|
|
48
|
-
# @since 3.0.0
|
|
49
44
|
def cached?
|
|
50
45
|
!!@cache
|
|
51
46
|
end
|
|
@@ -67,8 +62,6 @@ module Mongoid
|
|
|
67
62
|
# into the count.
|
|
68
63
|
#
|
|
69
64
|
# @return [ Integer ] The number of matches.
|
|
70
|
-
#
|
|
71
|
-
# @since 3.0.0
|
|
72
65
|
def count(options = {}, &block)
|
|
73
66
|
return super(&block) if block_given?
|
|
74
67
|
try_cache(:count) { view.count_documents(options) }
|
|
@@ -99,8 +92,6 @@ module Mongoid
|
|
|
99
92
|
# context.delete
|
|
100
93
|
#
|
|
101
94
|
# @return [ nil ] Nil.
|
|
102
|
-
#
|
|
103
|
-
# @since 3.0.0
|
|
104
95
|
def delete
|
|
105
96
|
view.delete_many.deleted_count
|
|
106
97
|
end
|
|
@@ -112,8 +103,6 @@ module Mongoid
|
|
|
112
103
|
# context.destroy
|
|
113
104
|
#
|
|
114
105
|
# @return [ nil ] Nil.
|
|
115
|
-
#
|
|
116
|
-
# @since 3.0.0
|
|
117
106
|
def destroy
|
|
118
107
|
each.inject(0) do |count, doc|
|
|
119
108
|
doc.destroy
|
|
@@ -131,11 +120,20 @@ module Mongoid
|
|
|
131
120
|
# @param [ String, Symbol ] field The name of the field.
|
|
132
121
|
#
|
|
133
122
|
# @return [ Array<Object> ] The distinct values for the field.
|
|
134
|
-
#
|
|
135
|
-
# @since 3.0.0
|
|
136
123
|
def distinct(field)
|
|
137
|
-
|
|
138
|
-
|
|
124
|
+
name = if Mongoid.legacy_pluck_distinct
|
|
125
|
+
klass.database_field_name(field)
|
|
126
|
+
else
|
|
127
|
+
klass.cleanse_localized_field_names(field)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
view.distinct(name).map do |value|
|
|
131
|
+
if Mongoid.legacy_pluck_distinct
|
|
132
|
+
value.class.demongoize(value)
|
|
133
|
+
else
|
|
134
|
+
is_translation = "#{name}_translations" == field.to_s
|
|
135
|
+
recursive_demongoize(name, value, is_translation)
|
|
136
|
+
end
|
|
139
137
|
end
|
|
140
138
|
end
|
|
141
139
|
|
|
@@ -148,8 +146,6 @@ module Mongoid
|
|
|
148
146
|
# end
|
|
149
147
|
#
|
|
150
148
|
# @return [ Enumerator ] The enumerator.
|
|
151
|
-
#
|
|
152
|
-
# @since 3.0.0
|
|
153
149
|
def each(&block)
|
|
154
150
|
if block_given?
|
|
155
151
|
documents_for_iteration.each do |doc|
|
|
@@ -172,8 +168,6 @@ module Mongoid
|
|
|
172
168
|
# used to determine the value.
|
|
173
169
|
#
|
|
174
170
|
# @return [ true, false ] If the count is more than zero.
|
|
175
|
-
#
|
|
176
|
-
# @since 3.0.0
|
|
177
171
|
def exists?
|
|
178
172
|
return !documents.empty? if cached? && cache_loaded?
|
|
179
173
|
return @count > 0 if instance_variable_defined?(:@count)
|
|
@@ -189,8 +183,6 @@ module Mongoid
|
|
|
189
183
|
# Band.where(name: "Depeche Mode").explain
|
|
190
184
|
#
|
|
191
185
|
# @return [ Hash ] The explain result.
|
|
192
|
-
#
|
|
193
|
-
# @since 3.0.0
|
|
194
186
|
def explain
|
|
195
187
|
view.explain
|
|
196
188
|
end
|
|
@@ -209,8 +201,6 @@ module Mongoid
|
|
|
209
201
|
# @option options [ true, false ] :upsert Create the document if it doesn't exist.
|
|
210
202
|
#
|
|
211
203
|
# @return [ Document ] The result of the command.
|
|
212
|
-
#
|
|
213
|
-
# @since 5.0.0
|
|
214
204
|
def find_one_and_update(update, options = {})
|
|
215
205
|
if doc = view.find_one_and_update(update, options)
|
|
216
206
|
Factory.from_db(klass, doc)
|
|
@@ -231,8 +221,6 @@ module Mongoid
|
|
|
231
221
|
# @option options [ true, false ] :upsert Create the document if it doesn't exist.
|
|
232
222
|
#
|
|
233
223
|
# @return [ Document ] The result of the command.
|
|
234
|
-
#
|
|
235
|
-
# @since 5.0.0
|
|
236
224
|
def find_one_and_replace(replacement, options = {})
|
|
237
225
|
if doc = view.find_one_and_replace(replacement, options)
|
|
238
226
|
Factory.from_db(klass, doc)
|
|
@@ -246,8 +234,6 @@ module Mongoid
|
|
|
246
234
|
# context.find_one_and_delete
|
|
247
235
|
#
|
|
248
236
|
# @return [ Document ] The result of the command.
|
|
249
|
-
#
|
|
250
|
-
# @since 5.0.0
|
|
251
237
|
def find_one_and_delete
|
|
252
238
|
if doc = view.find_one_and_delete
|
|
253
239
|
Factory.from_db(klass, doc)
|
|
@@ -271,8 +257,6 @@ module Mongoid
|
|
|
271
257
|
# is defined on the criteria.
|
|
272
258
|
#
|
|
273
259
|
# @return [ Document ] The first document.
|
|
274
|
-
#
|
|
275
|
-
# @since 3.0.0
|
|
276
260
|
def first(opts = {})
|
|
277
261
|
return documents.first if cached? && cache_loaded?
|
|
278
262
|
try_cache(:first) do
|
|
@@ -294,8 +278,6 @@ module Mongoid
|
|
|
294
278
|
# Return the first result without applying sort
|
|
295
279
|
#
|
|
296
280
|
# @api private
|
|
297
|
-
#
|
|
298
|
-
# @since 4.0.2
|
|
299
281
|
def find_first
|
|
300
282
|
return documents.first if cached? && cache_loaded?
|
|
301
283
|
if raw_doc = view.first
|
|
@@ -323,8 +305,6 @@ module Mongoid
|
|
|
323
305
|
# @return [ GeoNear ] The GeoNear command.
|
|
324
306
|
#
|
|
325
307
|
# @deprecated
|
|
326
|
-
#
|
|
327
|
-
# @since 3.1.0
|
|
328
308
|
def geo_near(coordinates)
|
|
329
309
|
GeoNear.new(collection, criteria, coordinates)
|
|
330
310
|
end
|
|
@@ -359,8 +339,6 @@ module Mongoid
|
|
|
359
339
|
# Mongo.new(criteria)
|
|
360
340
|
#
|
|
361
341
|
# @param [ Criteria ] criteria The criteria.
|
|
362
|
-
#
|
|
363
|
-
# @since 3.0.0
|
|
364
342
|
def initialize(criteria)
|
|
365
343
|
@criteria, @klass, @cache = criteria, criteria.klass, criteria.options[:cache]
|
|
366
344
|
@collection = @klass.collection
|
|
@@ -386,8 +364,6 @@ module Mongoid
|
|
|
386
364
|
#
|
|
387
365
|
# @option opts [ :none ] :id_sort Don't apply a sort on _id if no other sort
|
|
388
366
|
# is defined on the criteria.
|
|
389
|
-
#
|
|
390
|
-
# @since 3.0.0
|
|
391
367
|
def last(opts = {})
|
|
392
368
|
try_cache(:last) do
|
|
393
369
|
with_inverse_sorting(opts) do
|
|
@@ -405,8 +381,6 @@ module Mongoid
|
|
|
405
381
|
# context.length
|
|
406
382
|
#
|
|
407
383
|
# @return [ Integer ] The number of documents.
|
|
408
|
-
#
|
|
409
|
-
# @since 3.0.0
|
|
410
384
|
def length
|
|
411
385
|
@length ||= self.count
|
|
412
386
|
end
|
|
@@ -420,8 +394,6 @@ module Mongoid
|
|
|
420
394
|
# @param [ Integer ] value The number of documents to return.
|
|
421
395
|
#
|
|
422
396
|
# @return [ Mongo ] The context.
|
|
423
|
-
#
|
|
424
|
-
# @since 3.0.0
|
|
425
397
|
def limit(value)
|
|
426
398
|
@view = view.limit(value) and self
|
|
427
399
|
end
|
|
@@ -435,8 +407,6 @@ module Mongoid
|
|
|
435
407
|
# @param [ String ] reduce The reduce js function.
|
|
436
408
|
#
|
|
437
409
|
# @return [ MapReduce ] The map/reduce lazy wrapper.
|
|
438
|
-
#
|
|
439
|
-
# @since 3.0.0
|
|
440
410
|
def map_reduce(map, reduce)
|
|
441
411
|
MapReduce.new(collection, criteria, map, reduce)
|
|
442
412
|
end
|
|
@@ -453,17 +423,30 @@ module Mongoid
|
|
|
453
423
|
# @param [ String, Symbol, Array ] fields Fields to pluck.
|
|
454
424
|
#
|
|
455
425
|
# @return [ Array<Object, Array> ] The plucked values.
|
|
456
|
-
#
|
|
457
|
-
# @since 3.1.0
|
|
458
426
|
def pluck(*fields)
|
|
427
|
+
# Multiple fields can map to the same field name. For example, plucking
|
|
428
|
+
# a field and its _translations field map to the same field in the database.
|
|
429
|
+
# because of this, we need to keep track of the fields requested.
|
|
430
|
+
normalized_field_names = []
|
|
459
431
|
normalized_select = fields.inject({}) do |hash, f|
|
|
460
|
-
|
|
432
|
+
db_fn = klass.database_field_name(f)
|
|
433
|
+
normalized_field_names.push(db_fn)
|
|
434
|
+
|
|
435
|
+
if Mongoid.legacy_pluck_distinct
|
|
436
|
+
hash[db_fn] = true
|
|
437
|
+
else
|
|
438
|
+
hash[klass.cleanse_localized_field_names(f)] = true
|
|
439
|
+
end
|
|
461
440
|
hash
|
|
462
441
|
end
|
|
463
442
|
|
|
464
443
|
view.projection(normalized_select).reduce([]) do |plucked, doc|
|
|
465
|
-
values =
|
|
466
|
-
|
|
444
|
+
values = normalized_field_names.map do |n|
|
|
445
|
+
if Mongoid.legacy_pluck_distinct
|
|
446
|
+
n.include?('.') ? doc[n.partition('.')[0]] : doc[n]
|
|
447
|
+
else
|
|
448
|
+
extract_value(doc, n)
|
|
449
|
+
end
|
|
467
450
|
end
|
|
468
451
|
plucked << (values.size == 1 ? values.first : values)
|
|
469
452
|
end
|
|
@@ -477,8 +460,6 @@ module Mongoid
|
|
|
477
460
|
# @param [ Integer ] value The number of documents to skip.
|
|
478
461
|
#
|
|
479
462
|
# @return [ Mongo ] The context.
|
|
480
|
-
#
|
|
481
|
-
# @since 3.0.0
|
|
482
463
|
def skip(value)
|
|
483
464
|
@view = view.skip(value) and self
|
|
484
465
|
end
|
|
@@ -492,8 +473,6 @@ module Mongoid
|
|
|
492
473
|
# pairs.
|
|
493
474
|
#
|
|
494
475
|
# @return [ Mongo ] The context.
|
|
495
|
-
#
|
|
496
|
-
# @since 3.0.0
|
|
497
476
|
def sort(values = nil, &block)
|
|
498
477
|
if block_given?
|
|
499
478
|
super(&block)
|
|
@@ -517,8 +496,6 @@ module Mongoid
|
|
|
517
496
|
# an update should apply.
|
|
518
497
|
#
|
|
519
498
|
# @return [ nil, false ] False if no attributes were provided.
|
|
520
|
-
#
|
|
521
|
-
# @since 3.0.0
|
|
522
499
|
def update(attributes = nil, opts = {})
|
|
523
500
|
update_documents(attributes, :update_one, opts)
|
|
524
501
|
end
|
|
@@ -535,8 +512,6 @@ module Mongoid
|
|
|
535
512
|
# an update should apply.
|
|
536
513
|
#
|
|
537
514
|
# @return [ nil, false ] False if no attributes were provided.
|
|
538
|
-
#
|
|
539
|
-
# @since 3.0.0
|
|
540
515
|
def update_all(attributes = nil, opts = {})
|
|
541
516
|
update_documents(attributes, :update_many, opts)
|
|
542
517
|
end
|
|
@@ -548,8 +523,6 @@ module Mongoid
|
|
|
548
523
|
# @param [ String, Symbol ] key The instance variable name
|
|
549
524
|
#
|
|
550
525
|
# @return the result of the block
|
|
551
|
-
#
|
|
552
|
-
# @since 3.1.4
|
|
553
526
|
def try_cache(key, &block)
|
|
554
527
|
unless cached?
|
|
555
528
|
yield
|
|
@@ -572,8 +545,6 @@ module Mongoid
|
|
|
572
545
|
# @param [ Symbol ] method The method to use.
|
|
573
546
|
#
|
|
574
547
|
# @return [ true, false ] If the update succeeded.
|
|
575
|
-
#
|
|
576
|
-
# @since 3.0.4
|
|
577
548
|
def update_documents(attributes, method = :update_one, opts = {})
|
|
578
549
|
return false unless attributes
|
|
579
550
|
attributes = Hash[attributes.map { |k, v| [klass.database_field_name(k.to_s), v] }]
|
|
@@ -586,8 +557,6 @@ module Mongoid
|
|
|
586
557
|
#
|
|
587
558
|
# @example Apply the field limitations.
|
|
588
559
|
# context.apply_fields
|
|
589
|
-
#
|
|
590
|
-
# @since 3.0.0
|
|
591
560
|
def apply_fields
|
|
592
561
|
if spec = criteria.options[:fields]
|
|
593
562
|
@view = view.projection(spec)
|
|
@@ -600,8 +569,6 @@ module Mongoid
|
|
|
600
569
|
#
|
|
601
570
|
# @example Apply all options.
|
|
602
571
|
# context.apply_options
|
|
603
|
-
#
|
|
604
|
-
# @since 3.1.0
|
|
605
572
|
def apply_options
|
|
606
573
|
apply_fields
|
|
607
574
|
OPTIONS.each do |name|
|
|
@@ -618,8 +585,6 @@ module Mongoid
|
|
|
618
585
|
#
|
|
619
586
|
# @example Apply the skip option.
|
|
620
587
|
# context.apply_option(:skip)
|
|
621
|
-
#
|
|
622
|
-
# @since 3.1.0
|
|
623
588
|
def apply_option(name)
|
|
624
589
|
if spec = criteria.options[name]
|
|
625
590
|
@view = view.send(name, spec)
|
|
@@ -632,8 +597,6 @@ module Mongoid
|
|
|
632
597
|
#
|
|
633
598
|
# @example Apply the inverse sorting params to the given block
|
|
634
599
|
# context.with_inverse_sorting
|
|
635
|
-
#
|
|
636
|
-
# @since 3.0.0
|
|
637
600
|
def with_inverse_sorting(opts = {})
|
|
638
601
|
begin
|
|
639
602
|
if sort = criteria.options[:sort] || ( { _id: 1 } unless opts[:id_sort] == :none )
|
|
@@ -653,8 +616,6 @@ module Mongoid
|
|
|
653
616
|
# context.cacheable?
|
|
654
617
|
#
|
|
655
618
|
# @return [ true, false ] If caching, and the cache isn't loaded.
|
|
656
|
-
#
|
|
657
|
-
# @since 3.0.0
|
|
658
619
|
def cacheable?
|
|
659
620
|
cached? && !cache_loaded?
|
|
660
621
|
end
|
|
@@ -668,8 +629,6 @@ module Mongoid
|
|
|
668
629
|
# context.cache_loaded?
|
|
669
630
|
#
|
|
670
631
|
# @return [ true, false ] If the cache is loaded.
|
|
671
|
-
#
|
|
672
|
-
# @since 3.0.0
|
|
673
632
|
def cache_loaded?
|
|
674
633
|
!!@cache_loaded
|
|
675
634
|
end
|
|
@@ -682,8 +641,6 @@ module Mongoid
|
|
|
682
641
|
# context.documents
|
|
683
642
|
#
|
|
684
643
|
# @return [ Array<Document> ] The documents.
|
|
685
|
-
#
|
|
686
|
-
# @since 3.0.0
|
|
687
644
|
def documents
|
|
688
645
|
@documents ||= []
|
|
689
646
|
end
|
|
@@ -702,8 +659,6 @@ module Mongoid
|
|
|
702
659
|
# context.documents_for_iteration
|
|
703
660
|
#
|
|
704
661
|
# @return [ Array<Document>, Mongo::Collection::View ] The docs to iterate.
|
|
705
|
-
#
|
|
706
|
-
# @since 3.0.0
|
|
707
662
|
def documents_for_iteration
|
|
708
663
|
return documents if cached? && !documents.empty?
|
|
709
664
|
return view unless eager_loadable?
|
|
@@ -721,8 +676,6 @@ module Mongoid
|
|
|
721
676
|
# end
|
|
722
677
|
#
|
|
723
678
|
# @param [ Document ] document The document to yield to.
|
|
724
|
-
#
|
|
725
|
-
# @since 3.0.0
|
|
726
679
|
def yield_document(document, &block)
|
|
727
680
|
doc = document.respond_to?(:_id) ?
|
|
728
681
|
document : Factory.from_db(klass, document, criteria)
|
|
@@ -739,6 +692,107 @@ module Mongoid
|
|
|
739
692
|
def acknowledged_write?
|
|
740
693
|
collection.write_concern.nil? || collection.write_concern.acknowledged?
|
|
741
694
|
end
|
|
695
|
+
|
|
696
|
+
# Extracts the value for the given field name from the given attribute
|
|
697
|
+
# hash.
|
|
698
|
+
#
|
|
699
|
+
# @param [ Hash ] attrs The attributes hash.
|
|
700
|
+
# @param [ String ] field_name The name of the field to extract.
|
|
701
|
+
#
|
|
702
|
+
# @param [ Object ] The value for the given field name
|
|
703
|
+
def extract_value(attrs, field_name)
|
|
704
|
+
def fetch_and_demongoize(d, meth, klass)
|
|
705
|
+
res = d.try(:fetch, meth, nil)
|
|
706
|
+
if field = klass.fields[meth]
|
|
707
|
+
field.demongoize(res)
|
|
708
|
+
else
|
|
709
|
+
res.class.demongoize(res)
|
|
710
|
+
end
|
|
711
|
+
end
|
|
712
|
+
|
|
713
|
+
k = klass
|
|
714
|
+
meths = field_name.split('.')
|
|
715
|
+
meths.each_with_index.inject(attrs) do |curr, (meth, i)|
|
|
716
|
+
is_translation = false
|
|
717
|
+
if !k.fields.key?(meth) && !k.relations.key?(meth)
|
|
718
|
+
if tr = meth.match(/(.*)_translations\z/)&.captures&.first
|
|
719
|
+
is_translation = true
|
|
720
|
+
meth = tr
|
|
721
|
+
end
|
|
722
|
+
end
|
|
723
|
+
|
|
724
|
+
# 1. If curr is an array fetch from all elements in the array.
|
|
725
|
+
# 2. If the field is localized, and is not an _translations field
|
|
726
|
+
# (_translations fields don't show up in the fields hash).
|
|
727
|
+
# - If this is the end of the methods, return the translation for
|
|
728
|
+
# the current locale.
|
|
729
|
+
# - Otherwise, return the whole translations hash so the next method
|
|
730
|
+
# can select the language it wants.
|
|
731
|
+
# 3. If the meth is an _translations field, do not demongoize the
|
|
732
|
+
# value so the full hash is returned.
|
|
733
|
+
# 4. Otherwise, fetch and demongoize the value for the key meth.
|
|
734
|
+
if curr.is_a? Array
|
|
735
|
+
res = curr.map { |x| fetch_and_demongoize(x, meth, k) }
|
|
736
|
+
res.empty? ? nil : res
|
|
737
|
+
elsif !is_translation && k.fields[meth]&.localized?
|
|
738
|
+
if i < meths.length-1
|
|
739
|
+
curr.try(:fetch, meth, nil)
|
|
740
|
+
else
|
|
741
|
+
fetch_and_demongoize(curr, meth, k)
|
|
742
|
+
end
|
|
743
|
+
elsif is_translation
|
|
744
|
+
curr.try(:fetch, meth, nil)
|
|
745
|
+
else
|
|
746
|
+
fetch_and_demongoize(curr, meth, k)
|
|
747
|
+
end.tap do
|
|
748
|
+
if as = k.try(:aliased_associations)
|
|
749
|
+
if a = as.fetch(meth, nil)
|
|
750
|
+
meth = a
|
|
751
|
+
end
|
|
752
|
+
end
|
|
753
|
+
|
|
754
|
+
if relation = k.relations[meth]
|
|
755
|
+
k = relation.klass
|
|
756
|
+
end
|
|
757
|
+
end
|
|
758
|
+
end
|
|
759
|
+
end
|
|
760
|
+
|
|
761
|
+
# Recursively demongoize the given value. This method recursively traverses
|
|
762
|
+
# the class tree to find the correct field to use to demongoize the value.
|
|
763
|
+
#
|
|
764
|
+
# @param [ String ] field_name The name of the field to demongoize.
|
|
765
|
+
# @param [ Object ] value The value to demongoize.
|
|
766
|
+
# @param [ Boolean ] is_translation The field we are retrieving is an
|
|
767
|
+
# _translations field.
|
|
768
|
+
#
|
|
769
|
+
# @return [ Object ] The demongoized value.
|
|
770
|
+
def recursive_demongoize(field_name, value, is_translation)
|
|
771
|
+
k = klass
|
|
772
|
+
field_name.split('.').each do |meth|
|
|
773
|
+
if as = k.try(:aliased_associations)
|
|
774
|
+
if a = as.fetch(meth, nil)
|
|
775
|
+
meth = a.to_s
|
|
776
|
+
end
|
|
777
|
+
end
|
|
778
|
+
|
|
779
|
+
if relation = k.relations[meth]
|
|
780
|
+
k = relation.klass
|
|
781
|
+
elsif field = k.fields[meth]
|
|
782
|
+
# If it's a localized field that's not a hash, don't demongoize
|
|
783
|
+
# again, we already have the translation. If it's an _translation
|
|
784
|
+
# field, don't demongoize, we want the full hash not just a
|
|
785
|
+
# specific translation.
|
|
786
|
+
if field.localized? && (!value.is_a?(Hash) || is_translation)
|
|
787
|
+
return value.class.demongoize(value)
|
|
788
|
+
else
|
|
789
|
+
return field.demongoize(value)
|
|
790
|
+
end
|
|
791
|
+
else
|
|
792
|
+
return value.class.demongoize(value)
|
|
793
|
+
end
|
|
794
|
+
end
|
|
795
|
+
end
|
|
742
796
|
end
|
|
743
797
|
end
|
|
744
798
|
end
|
|
@@ -1,14 +1,38 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
require "mongoid/contextual/aggregable/none"
|
|
3
4
|
|
|
4
5
|
module Mongoid
|
|
5
6
|
module Contextual
|
|
6
7
|
class None
|
|
7
8
|
include Enumerable
|
|
9
|
+
alias :old_sum :sum
|
|
10
|
+
|
|
11
|
+
include Aggregable::None
|
|
8
12
|
include Queryable
|
|
9
13
|
|
|
10
14
|
attr_reader :criteria, :klass
|
|
11
15
|
|
|
16
|
+
alias :new_sum :sum
|
|
17
|
+
|
|
18
|
+
# Get the sum in the null context.
|
|
19
|
+
#
|
|
20
|
+
# @example Get the sum of null context.
|
|
21
|
+
# context.sum(_field)
|
|
22
|
+
#
|
|
23
|
+
# @param [ Symbol ] _field The field to sum.
|
|
24
|
+
#
|
|
25
|
+
# @return [ Integer | Symbol ] If Mongoid.broken_aggregables is
|
|
26
|
+
# set to false, this will always be zero. Otherwise, it will return the
|
|
27
|
+
# field name as a symbol.
|
|
28
|
+
def sum(_field = nil)
|
|
29
|
+
if Mongoid.broken_aggregables
|
|
30
|
+
old_sum(_field)
|
|
31
|
+
else
|
|
32
|
+
new_sum(_field)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
12
36
|
# Check if the context is equal to the other object.
|
|
13
37
|
#
|
|
14
38
|
# @example Check equality.
|
|
@@ -17,35 +41,31 @@ module Mongoid
|
|
|
17
41
|
# @param [ Array ] other The other array.
|
|
18
42
|
#
|
|
19
43
|
# @return [ true, false ] If the objects are equal.
|
|
20
|
-
#
|
|
21
|
-
# @since 4.0.0
|
|
22
44
|
def ==(other)
|
|
23
45
|
other.is_a?(None)
|
|
24
46
|
end
|
|
25
47
|
|
|
26
|
-
#
|
|
48
|
+
# Get the distinct field values in null context.
|
|
27
49
|
#
|
|
28
|
-
# @example Get the distinct values.
|
|
50
|
+
# @example Get the distinct values in null context.
|
|
29
51
|
# context.distinct(:name)
|
|
30
52
|
#
|
|
31
|
-
# @param [ String, Symbol ]
|
|
53
|
+
# @param [ String, Symbol ] _field The name of the field.
|
|
32
54
|
#
|
|
33
|
-
# @return [ Array ]
|
|
34
|
-
def distinct(
|
|
55
|
+
# @return [ Array ] An empty Array.
|
|
56
|
+
def distinct(_field)
|
|
35
57
|
[]
|
|
36
58
|
end
|
|
37
59
|
|
|
38
60
|
# Iterate over the null context. There are no documents to iterate over
|
|
39
61
|
# in this case.
|
|
40
62
|
#
|
|
41
|
-
# @example Iterate over the context.
|
|
63
|
+
# @example Iterate over the null context.
|
|
42
64
|
# context.each do |doc|
|
|
43
65
|
# puts doc.name
|
|
44
66
|
# end
|
|
45
67
|
#
|
|
46
68
|
# @return [ Enumerator ] The enumerator.
|
|
47
|
-
#
|
|
48
|
-
# @since 4.0.0
|
|
49
69
|
def each
|
|
50
70
|
if block_given?
|
|
51
71
|
[].each { |doc| yield(doc) }
|
|
@@ -57,23 +77,20 @@ module Mongoid
|
|
|
57
77
|
|
|
58
78
|
# Do any documents exist for the context.
|
|
59
79
|
#
|
|
60
|
-
# @example Do any documents exist
|
|
80
|
+
# @example Do any documents exist in the null context.
|
|
61
81
|
# context.exists?
|
|
62
82
|
#
|
|
63
|
-
# @return [
|
|
64
|
-
#
|
|
65
|
-
# @since 4.0.0
|
|
83
|
+
# @return [ false ] Always false.
|
|
66
84
|
def exists?; false; end
|
|
67
85
|
|
|
68
|
-
|
|
69
|
-
# Allow pluck for null context.
|
|
86
|
+
# Pluck the field values in null context.
|
|
70
87
|
#
|
|
71
|
-
# @example
|
|
88
|
+
# @example Get the values for null context.
|
|
72
89
|
# context.pluck(:name)
|
|
73
90
|
#
|
|
74
91
|
# @param [ String, Symbol, Array ] args Field or fields to pluck.
|
|
75
92
|
#
|
|
76
|
-
# @return [ Array ]
|
|
93
|
+
# @return [ Array ] An empty Array.
|
|
77
94
|
def pluck(*args)
|
|
78
95
|
[]
|
|
79
96
|
end
|
|
@@ -84,34 +101,31 @@ module Mongoid
|
|
|
84
101
|
# Null.new(criteria)
|
|
85
102
|
#
|
|
86
103
|
# @param [ Criteria ] criteria The criteria.
|
|
87
|
-
#
|
|
88
|
-
# @since 4.0.0
|
|
89
104
|
def initialize(criteria)
|
|
90
105
|
@criteria, @klass = criteria, criteria.klass
|
|
91
106
|
end
|
|
92
107
|
|
|
93
108
|
# Always returns nil.
|
|
94
109
|
#
|
|
95
|
-
# @example Get the last document.
|
|
110
|
+
# @example Get the last document in null context.
|
|
96
111
|
# context.last
|
|
97
112
|
#
|
|
98
113
|
# @return [ nil ] Always nil.
|
|
99
|
-
#
|
|
100
|
-
# @since 4.0.0
|
|
101
114
|
def last; nil; end
|
|
102
115
|
|
|
103
116
|
# Always returns zero.
|
|
104
117
|
#
|
|
105
|
-
# @example Get the length of
|
|
118
|
+
# @example Get the length of null context.
|
|
106
119
|
# context.length
|
|
107
120
|
#
|
|
108
121
|
# @return [ Integer ] Always zero.
|
|
109
|
-
#
|
|
110
|
-
# @since 4.0.0
|
|
111
122
|
def length
|
|
112
|
-
entries.length
|
|
123
|
+
Mongoid.broken_aggregables ? 0 : entries.length
|
|
113
124
|
end
|
|
114
125
|
alias :size :length
|
|
126
|
+
|
|
127
|
+
alias :find_first :first
|
|
128
|
+
alias :one :first
|
|
115
129
|
end
|
|
116
130
|
end
|
|
117
131
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Contextual
|
|
@@ -16,8 +15,6 @@ module Mongoid
|
|
|
16
15
|
# context.blank?
|
|
17
16
|
#
|
|
18
17
|
# @return [ true, false ] If the context is empty.
|
|
19
|
-
#
|
|
20
|
-
# @since 3.0.0
|
|
21
18
|
def blank?
|
|
22
19
|
!exists?
|
|
23
20
|
end
|
data/lib/mongoid/contextual.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/contextual/queryable"
|
|
5
4
|
require "mongoid/contextual/mongo"
|
|
@@ -32,8 +31,6 @@ module Mongoid
|
|
|
32
31
|
# criteria.context
|
|
33
32
|
#
|
|
34
33
|
# @return [ Memory, Mongo ] The context.
|
|
35
|
-
#
|
|
36
|
-
# @since 3.0.0
|
|
37
34
|
def context
|
|
38
35
|
@context ||= create_context
|
|
39
36
|
end
|
|
@@ -49,8 +46,6 @@ module Mongoid
|
|
|
49
46
|
# contextual.create_context
|
|
50
47
|
#
|
|
51
48
|
# @return [ Mongo, Memory ] The context.
|
|
52
|
-
#
|
|
53
|
-
# @since 3.0.0
|
|
54
49
|
def create_context
|
|
55
50
|
return None.new(self) if empty_and_chainable?
|
|
56
51
|
embedded ? Memory.new(self) : Mongo.new(self)
|
data/lib/mongoid/copyable.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
|
|
@@ -50,8 +49,6 @@ module Mongoid
|
|
|
50
49
|
#
|
|
51
50
|
# @example clone document
|
|
52
51
|
# model.clone_document
|
|
53
|
-
#
|
|
54
|
-
# @since 3.0.22
|
|
55
52
|
def clone_document
|
|
56
53
|
attrs = as_attributes.__deep_copy__
|
|
57
54
|
process_localized_attributes(self, attrs)
|
|
@@ -67,8 +64,6 @@ module Mongoid
|
|
|
67
64
|
# model.process_localized_attributes(attributes)
|
|
68
65
|
#
|
|
69
66
|
# @param [ Hash ] attrs The attributes.
|
|
70
|
-
#
|
|
71
|
-
# @since 3.0.20
|
|
72
67
|
def process_localized_attributes(klass, attrs)
|
|
73
68
|
klass.localized_fields.keys.each do |name|
|
|
74
69
|
if value = attrs.delete(name)
|