mongoid 9.0.12 → 9.1.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
- data/CHANGELOG.md +8 -8
- data/README.md +5 -11
- data/Rakefile +35 -38
- data/lib/config/locales/en.yml +11 -45
- data/lib/mongoid/association/accessors.rb +19 -26
- data/lib/mongoid/association/bindable.rb +43 -45
- data/lib/mongoid/association/builders.rb +18 -15
- data/lib/mongoid/association/constrainable.rb +3 -5
- data/lib/mongoid/association/depending.rb +38 -46
- data/lib/mongoid/association/eager.rb +47 -13
- data/lib/mongoid/association/eager_loadable.rb +152 -24
- data/lib/mongoid/association/embedded/batchable.rb +28 -30
- data/lib/mongoid/association/embedded/cyclic.rb +8 -11
- data/lib/mongoid/association/embedded/eager.rb +1 -6
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +6 -9
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +2 -3
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +2 -0
- data/lib/mongoid/association/embedded/embedded_in.rb +25 -22
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -2
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +2 -3
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_many.rb +24 -21
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +2 -6
- data/lib/mongoid/association/embedded/embeds_one.rb +20 -18
- data/lib/mongoid/association/embedded.rb +0 -1
- data/lib/mongoid/association/macros.rb +3 -7
- data/lib/mongoid/association/many.rb +75 -3
- data/lib/mongoid/association/marshalable.rb +0 -3
- data/lib/mongoid/association/nested/many.rb +23 -47
- data/lib/mongoid/association/nested/nested_buildable.rb +6 -23
- data/lib/mongoid/association/nested/one.rb +4 -7
- data/lib/mongoid/association/nested.rb +1 -3
- data/lib/mongoid/association/one.rb +0 -3
- data/lib/mongoid/association/options.rb +8 -7
- data/lib/mongoid/association/referenced/auto_save.rb +0 -2
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +11 -15
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +23 -5
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +1 -3
- data/lib/mongoid/association/referenced/belongs_to.rb +48 -43
- data/lib/mongoid/association/referenced/counter_cache.rb +5 -10
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +8 -4
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -3
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +52 -47
- data/lib/mongoid/association/referenced/has_many/binding.rb +0 -2
- data/lib/mongoid/association/referenced/has_many/buildable.rb +11 -5
- data/lib/mongoid/association/referenced/has_many/eager.rb +0 -3
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +107 -38
- data/lib/mongoid/association/referenced/has_many/proxy.rb +11 -106
- data/lib/mongoid/association/referenced/has_many.rb +30 -24
- data/lib/mongoid/association/referenced/has_one/binding.rb +0 -2
- data/lib/mongoid/association/referenced/has_one/buildable.rb +11 -9
- data/lib/mongoid/association/referenced/has_one/eager.rb +0 -3
- data/lib/mongoid/association/referenced/has_one.rb +26 -21
- data/lib/mongoid/association/referenced/syncable.rb +30 -34
- data/lib/mongoid/association/referenced.rb +0 -1
- data/lib/mongoid/association/reflections.rb +0 -3
- data/lib/mongoid/association/relatable.rb +69 -83
- data/lib/mongoid/association.rb +12 -15
- data/lib/mongoid/atomic/modifiers.rb +65 -25
- data/lib/mongoid/atomic/paths/embedded/many.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded/one.rb +2 -4
- data/lib/mongoid/atomic/paths/embedded.rb +3 -6
- data/lib/mongoid/atomic/paths/root.rb +1 -4
- data/lib/mongoid/atomic/paths.rb +2 -3
- data/lib/mongoid/atomic.rb +0 -3
- data/lib/mongoid/attributes/dynamic.rb +6 -7
- data/lib/mongoid/attributes/nested.rb +8 -10
- data/lib/mongoid/attributes/projector.rb +7 -20
- data/lib/mongoid/attributes/readonly.rb +6 -11
- data/lib/mongoid/attributes.rb +18 -34
- data/lib/mongoid/cacheable.rb +24 -6
- data/lib/mongoid/clients/factory.rb +12 -15
- data/lib/mongoid/clients/options.rb +2 -5
- data/lib/mongoid/clients/sessions.rb +50 -60
- data/lib/mongoid/clients/storage_options.rb +1 -4
- data/lib/mongoid/clients/validators/storage.rb +2 -3
- data/lib/mongoid/clients/validators.rb +1 -2
- data/lib/mongoid/clients.rb +8 -11
- data/lib/mongoid/collection_configurable.rb +10 -22
- data/lib/mongoid/composable.rb +30 -34
- data/lib/mongoid/config/defaults.rb +7 -4
- data/lib/mongoid/config/encryption.rb +19 -39
- data/lib/mongoid/config/environment.rb +7 -16
- data/lib/mongoid/config/introspection.rb +14 -16
- data/lib/mongoid/config/options.rb +16 -10
- data/lib/mongoid/config/validators/async_query_executor.rb +3 -6
- data/lib/mongoid/config/validators/client.rb +12 -15
- data/lib/mongoid/config/validators/option.rb +3 -5
- data/lib/mongoid/config/validators.rb +3 -4
- data/lib/mongoid/config.rb +127 -84
- data/lib/mongoid/contextual/aggregable/memory.rb +4 -9
- data/lib/mongoid/contextual/aggregable/mongo.rb +20 -22
- data/lib/mongoid/contextual/aggregable/none.rb +2 -4
- data/lib/mongoid/contextual/aggregable.rb +5 -7
- data/lib/mongoid/contextual/atomic.rb +20 -24
- data/lib/mongoid/contextual/command.rb +0 -3
- data/lib/mongoid/contextual/map_reduce.rb +12 -16
- data/lib/mongoid/contextual/memory.rb +76 -80
- data/lib/mongoid/contextual/mongo/documents_loader.rb +2 -3
- data/lib/mongoid/contextual/mongo.rb +169 -85
- data/lib/mongoid/contextual/none.rb +9 -9
- data/lib/mongoid/contextual/queryable.rb +1 -4
- data/lib/mongoid/contextual.rb +18 -7
- data/lib/mongoid/copyable.rb +7 -9
- data/lib/mongoid/criteria/findable.rb +5 -7
- data/lib/mongoid/criteria/includable.rb +37 -8
- data/lib/mongoid/criteria/inspectable.rb +2 -5
- data/lib/mongoid/criteria/marshalable.rb +4 -8
- data/lib/mongoid/criteria/modifiable.rb +3 -11
- data/lib/mongoid/criteria/options.rb +0 -3
- data/lib/mongoid/criteria/permission.rb +34 -37
- data/lib/mongoid/criteria/queryable/aggregable.rb +9 -10
- data/lib/mongoid/criteria/queryable/expandable.rb +4 -9
- data/lib/mongoid/criteria/queryable/extensions/array.rb +7 -10
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -5
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +1 -4
- data/lib/mongoid/criteria/queryable/extensions/date.rb +2 -6
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +3 -7
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +1 -4
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +20 -11
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +15 -11
- data/lib/mongoid/criteria/queryable/extensions/object.rb +7 -8
- data/lib/mongoid/criteria/queryable/extensions/range.rb +6 -9
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +10 -12
- data/lib/mongoid/criteria/queryable/extensions/set.rb +4 -6
- data/lib/mongoid/criteria/queryable/extensions/string.rb +5 -9
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -7
- data/lib/mongoid/criteria/queryable/extensions/time.rb +2 -6
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +2 -12
- data/lib/mongoid/criteria/queryable/extensions.rb +18 -21
- data/lib/mongoid/criteria/queryable/key.rb +12 -18
- data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
- data/lib/mongoid/criteria/queryable/mergeable.rb +31 -43
- data/lib/mongoid/criteria/queryable/optional.rb +17 -18
- data/lib/mongoid/criteria/queryable/options.rb +20 -9
- data/lib/mongoid/criteria/queryable/pipeline.rb +6 -9
- data/lib/mongoid/criteria/queryable/selectable.rb +130 -301
- data/lib/mongoid/criteria/queryable/selector.rb +20 -29
- data/lib/mongoid/criteria/queryable/smash.rb +1 -6
- data/lib/mongoid/criteria/queryable/storable.rb +20 -39
- data/lib/mongoid/criteria/queryable.rb +25 -15
- data/lib/mongoid/criteria/scopable.rb +5 -11
- data/lib/mongoid/criteria/translator.rb +5 -8
- data/lib/mongoid/criteria.rb +109 -54
- data/lib/mongoid/deprecable.rb +1 -4
- data/lib/mongoid/deprecation.rb +2 -6
- data/lib/mongoid/document.rb +1 -1
- data/lib/mongoid/encryptable.rb +1 -48
- data/lib/mongoid/equality.rb +4 -5
- data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
- data/lib/mongoid/errors/attribute_not_loaded.rb +1 -4
- data/lib/mongoid/errors/callback.rb +1 -4
- data/lib/mongoid/errors/create_collection_failure.rb +8 -11
- data/lib/mongoid/errors/criteria_argument_required.rb +2 -5
- data/lib/mongoid/errors/delete_restriction.rb +1 -4
- data/lib/mongoid/errors/document_not_destroyed.rb +1 -4
- data/lib/mongoid/errors/document_not_found.rb +16 -21
- data/lib/mongoid/errors/drop_collection_failure.rb +7 -10
- data/lib/mongoid/errors/empty_config_file.rb +1 -4
- data/lib/mongoid/errors/immutable_attribute.rb +1 -4
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +1 -4
- data/lib/mongoid/errors/invalid_async_query_executor.rb +2 -5
- data/lib/mongoid/errors/invalid_auto_encryption_configuration.rb +2 -5
- data/lib/mongoid/errors/invalid_collection.rb +1 -3
- data/lib/mongoid/errors/invalid_config_file.rb +1 -4
- data/lib/mongoid/errors/invalid_config_option.rb +2 -5
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +6 -10
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +2 -4
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +1 -4
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +5 -9
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +1 -4
- data/lib/mongoid/errors/invalid_estimated_count_scoping.rb +1 -4
- data/lib/mongoid/errors/invalid_expression_operator.rb +3 -7
- data/lib/mongoid/errors/invalid_field.rb +2 -5
- data/lib/mongoid/errors/invalid_field_operator.rb +5 -9
- data/lib/mongoid/errors/invalid_field_option.rb +2 -5
- data/lib/mongoid/errors/invalid_field_type.rb +1 -4
- data/lib/mongoid/errors/invalid_find.rb +1 -4
- data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +1 -4
- data/lib/mongoid/errors/invalid_includes.rb +3 -6
- data/lib/mongoid/errors/invalid_index.rb +1 -4
- data/lib/mongoid/errors/invalid_options.rb +1 -4
- data/lib/mongoid/errors/invalid_path.rb +1 -4
- data/lib/mongoid/errors/invalid_persistence_option.rb +4 -7
- data/lib/mongoid/errors/invalid_query.rb +6 -11
- data/lib/mongoid/errors/invalid_relation.rb +10 -13
- data/lib/mongoid/errors/invalid_relation_option.rb +4 -7
- data/lib/mongoid/errors/invalid_scope.rb +1 -4
- data/lib/mongoid/errors/invalid_session_nesting.rb +0 -3
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +2 -4
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -4
- data/lib/mongoid/errors/invalid_time.rb +1 -4
- data/lib/mongoid/errors/invalid_transaction_nesting.rb +0 -3
- data/lib/mongoid/errors/inverse_not_found.rb +1 -4
- data/lib/mongoid/errors/mixed_client_configuration.rb +1 -4
- data/lib/mongoid/errors/mixed_relations.rb +1 -3
- data/lib/mongoid/errors/mongoid_error.rb +7 -11
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -4
- data/lib/mongoid/errors/no_client_config.rb +1 -4
- data/lib/mongoid/errors/no_client_database.rb +1 -4
- data/lib/mongoid/errors/no_client_hosts.rb +1 -4
- data/lib/mongoid/errors/no_clients_config.rb +1 -4
- data/lib/mongoid/errors/no_default_client.rb +1 -4
- data/lib/mongoid/errors/no_environment.rb +1 -4
- data/lib/mongoid/errors/no_map_reduce_output.rb +1 -4
- data/lib/mongoid/errors/no_metadata.rb +1 -4
- data/lib/mongoid/errors/no_parent.rb +1 -4
- data/lib/mongoid/errors/readonly_attribute.rb +1 -4
- data/lib/mongoid/errors/readonly_document.rb +1 -4
- data/lib/mongoid/errors/rollback.rb +0 -2
- data/lib/mongoid/errors/scope_overwrite.rb +2 -4
- data/lib/mongoid/errors/sessions_not_supported.rb +0 -3
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -3
- data/lib/mongoid/errors/transaction_error.rb +0 -3
- data/lib/mongoid/errors/transactions_not_supported.rb +0 -3
- data/lib/mongoid/errors/unknown_attribute.rb +1 -4
- data/lib/mongoid/errors/unknown_model.rb +1 -4
- data/lib/mongoid/errors/unregistered_class.rb +1 -1
- data/lib/mongoid/errors/unsaved_document.rb +1 -3
- data/lib/mongoid/errors/unsupported_isolation_level.rb +22 -0
- data/lib/mongoid/errors/unsupported_javascript.rb +1 -4
- data/lib/mongoid/errors/validations.rb +3 -5
- data/lib/mongoid/errors.rb +72 -74
- data/lib/mongoid/evolvable.rb +0 -3
- data/lib/mongoid/extensions/array.rb +5 -7
- data/lib/mongoid/extensions/big_decimal.rb +6 -7
- data/lib/mongoid/extensions/binary.rb +3 -6
- data/lib/mongoid/extensions/boolean.rb +4 -7
- data/lib/mongoid/extensions/bson_document.rb +28 -0
- data/lib/mongoid/extensions/date.rb +10 -14
- data/lib/mongoid/extensions/date_time.rb +2 -6
- data/lib/mongoid/extensions/decimal128.rb +1 -5
- data/lib/mongoid/extensions/false_class.rb +3 -5
- data/lib/mongoid/extensions/float.rb +5 -10
- data/lib/mongoid/extensions/hash.rb +5 -10
- data/lib/mongoid/extensions/integer.rb +5 -10
- data/lib/mongoid/extensions/module.rb +1 -4
- data/lib/mongoid/extensions/nil_class.rb +0 -1
- data/lib/mongoid/extensions/object.rb +9 -14
- data/lib/mongoid/extensions/object_id.rb +2 -6
- data/lib/mongoid/extensions/range.rb +14 -15
- data/lib/mongoid/extensions/raw_value.rb +0 -3
- data/lib/mongoid/extensions/regexp.rb +3 -6
- data/lib/mongoid/extensions/set.rb +3 -4
- data/lib/mongoid/extensions/string.rb +8 -12
- data/lib/mongoid/extensions/symbol.rb +3 -7
- data/lib/mongoid/extensions/time.rb +24 -26
- data/lib/mongoid/extensions/time_with_zone.rb +4 -7
- data/lib/mongoid/extensions/true_class.rb +3 -5
- data/lib/mongoid/extensions.rb +26 -26
- data/lib/mongoid/factory.rb +5 -9
- data/lib/mongoid/fields/encrypted.rb +0 -1
- data/lib/mongoid/fields/foreign_key.rb +9 -10
- data/lib/mongoid/fields/localized.rb +12 -12
- data/lib/mongoid/fields/standard.rb +5 -7
- data/lib/mongoid/fields/validators/macro.rb +23 -34
- data/lib/mongoid/fields/validators.rb +1 -2
- data/lib/mongoid/fields.rb +151 -58
- data/lib/mongoid/findable.rb +82 -53
- data/lib/mongoid/indexable/specification.rb +20 -6
- data/lib/mongoid/indexable/validators/options.rb +33 -40
- data/lib/mongoid/indexable.rb +41 -52
- data/lib/mongoid/inspectable.rb +4 -7
- data/lib/mongoid/interceptable.rb +41 -40
- data/lib/mongoid/loadable.rb +17 -18
- data/lib/mongoid/loggable.rb +4 -8
- data/lib/mongoid/matchable.rb +1 -8
- data/lib/mongoid/matcher/all.rb +2 -5
- data/lib/mongoid/matcher/and.rb +0 -3
- data/lib/mongoid/matcher/bits.rb +13 -8
- data/lib/mongoid/matcher/bits_all_clear.rb +1 -3
- data/lib/mongoid/matcher/bits_all_set.rb +1 -3
- data/lib/mongoid/matcher/bits_any_clear.rb +1 -3
- data/lib/mongoid/matcher/bits_any_set.rb +1 -3
- data/lib/mongoid/matcher/elem_match.rb +13 -15
- data/lib/mongoid/matcher/elem_match_expression.rb +0 -3
- data/lib/mongoid/matcher/eq.rb +0 -3
- data/lib/mongoid/matcher/eq_impl.rb +12 -17
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +4 -2
- data/lib/mongoid/matcher/exists.rb +1 -4
- data/lib/mongoid/matcher/expression.rb +5 -10
- data/lib/mongoid/matcher/expression_operator.rb +1 -3
- data/lib/mongoid/matcher/field_expression.rb +10 -13
- data/lib/mongoid/matcher/field_operator.rb +4 -6
- data/lib/mongoid/matcher/gt.rb +0 -3
- data/lib/mongoid/matcher/gte.rb +0 -3
- data/lib/mongoid/matcher/in.rb +9 -12
- data/lib/mongoid/matcher/lt.rb +0 -3
- data/lib/mongoid/matcher/lte.rb +0 -3
- data/lib/mongoid/matcher/mod.rb +4 -8
- data/lib/mongoid/matcher/ne.rb +0 -3
- data/lib/mongoid/matcher/nin.rb +0 -3
- data/lib/mongoid/matcher/nor.rb +1 -6
- data/lib/mongoid/matcher/not.rb +0 -3
- data/lib/mongoid/matcher/or.rb +0 -3
- data/lib/mongoid/matcher/regex.rb +12 -11
- data/lib/mongoid/matcher/size.rb +2 -5
- data/lib/mongoid/matcher/type.rb +32 -37
- data/lib/mongoid/matcher.rb +7 -16
- data/lib/mongoid/model_resolver.rb +1 -0
- data/lib/mongoid/persistable/creatable.rb +23 -7
- data/lib/mongoid/persistable/deletable.rb +6 -7
- data/lib/mongoid/persistable/destroyable.rb +2 -6
- data/lib/mongoid/persistable/incrementable.rb +1 -3
- data/lib/mongoid/persistable/logical.rb +3 -5
- data/lib/mongoid/persistable/maxable.rb +2 -4
- data/lib/mongoid/persistable/minable.rb +2 -4
- data/lib/mongoid/persistable/multipliable.rb +1 -3
- data/lib/mongoid/persistable/poppable.rb +2 -4
- data/lib/mongoid/persistable/pullable.rb +3 -5
- data/lib/mongoid/persistable/pushable.rb +5 -7
- data/lib/mongoid/persistable/renamable.rb +1 -3
- data/lib/mongoid/persistable/savable.rb +0 -3
- data/lib/mongoid/persistable/settable.rb +4 -13
- data/lib/mongoid/persistable/unsettable.rb +1 -3
- data/lib/mongoid/persistable/updatable.rb +16 -24
- data/lib/mongoid/persistable/upsertable.rb +8 -10
- data/lib/mongoid/persistable.rb +28 -27
- data/lib/mongoid/persistence_context.rb +34 -76
- data/lib/mongoid/pluckable.rb +0 -2
- data/lib/mongoid/positional.rb +5 -11
- data/lib/mongoid/railtie.rb +16 -22
- data/lib/mongoid/railties/console_sandbox.rb +6 -8
- data/lib/mongoid/railties/controller_runtime.rb +7 -11
- data/lib/mongoid/railties/database.rake +42 -44
- data/lib/mongoid/scopable.rb +23 -31
- data/lib/mongoid/search_indexable.rb +337 -14
- data/lib/mongoid/selectable.rb +1 -3
- data/lib/mongoid/serializable.rb +6 -8
- data/lib/mongoid/shardable.rb +8 -17
- data/lib/mongoid/stateful.rb +5 -10
- data/lib/mongoid/stringified_symbol.rb +5 -9
- data/lib/mongoid/tasks/database.rake +31 -32
- data/lib/mongoid/tasks/database.rb +37 -53
- data/lib/mongoid/tasks/encryption.rb +10 -15
- data/lib/mongoid/threaded/lifecycle.rb +6 -9
- data/lib/mongoid/threaded.rb +132 -69
- data/lib/mongoid/timestamps/created/short.rb +2 -3
- data/lib/mongoid/timestamps/created.rb +1 -2
- data/lib/mongoid/timestamps/short.rb +0 -1
- data/lib/mongoid/timestamps/timeless.rb +8 -13
- data/lib/mongoid/timestamps/updated/short.rb +2 -3
- data/lib/mongoid/timestamps/updated.rb +2 -5
- data/lib/mongoid/timestamps.rb +4 -6
- data/lib/mongoid/touchable.rb +19 -11
- data/lib/mongoid/traversable.rb +3 -2
- data/lib/mongoid/validatable/associated.rb +1 -5
- data/lib/mongoid/validatable/format.rb +0 -2
- data/lib/mongoid/validatable/length.rb +0 -2
- data/lib/mongoid/validatable/localizable.rb +0 -3
- data/lib/mongoid/validatable/macros.rb +0 -2
- data/lib/mongoid/validatable/numericality.rb +24 -3
- data/lib/mongoid/validatable/presence.rb +8 -10
- data/lib/mongoid/validatable/queryable.rb +0 -3
- data/lib/mongoid/validatable/uniqueness.rb +12 -14
- data/lib/mongoid/validatable.rb +15 -20
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +10 -11
- data/lib/mongoid.rb +30 -34
- data/lib/rails/generators/mongoid/config/config_generator.rb +2 -4
- data/lib/rails/generators/mongoid/config/templates/mongoid.rb +4 -5
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +2 -2
- data/lib/rails/generators/mongoid/model/model_generator.rb +5 -8
- data/lib/rails/generators/mongoid_generator.rb +6 -10
- data/lib/rails/mongoid.rb +1 -3
- data/spec/integration/active_job_spec.rb +1 -2
- data/spec/integration/app_spec.rb +142 -185
- data/spec/integration/associations/belongs_to_spec.rb +30 -28
- data/spec/integration/associations/embedded_dirty_spec.rb +0 -1
- data/spec/integration/associations/embedded_spec.rb +41 -43
- data/spec/integration/associations/embeds_many_spec.rb +46 -29
- data/spec/integration/associations/embeds_one_spec.rb +2 -1
- data/spec/integration/associations/foreign_key_spec.rb +10 -11
- data/spec/integration/associations/foreign_key_spec_models.rb +8 -9
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +18 -30
- data/spec/integration/associations/has_many_spec.rb +17 -18
- data/spec/integration/associations/has_one_spec.rb +42 -45
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +36 -39
- data/spec/integration/associations/reverse_population_spec.rb +4 -5
- data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
- data/spec/integration/associations/scope_option_spec.rb +18 -20
- data/spec/integration/atomic/modifiers_spec.rb +72 -52
- data/spec/integration/bson_regexp_raw_spec.rb +2 -3
- data/spec/integration/caching_spec.rb +68 -0
- data/spec/integration/callbacks_models.rb +11 -9
- data/spec/integration/callbacks_spec.rb +78 -80
- data/spec/integration/contextual/empty_spec.rb +19 -20
- data/spec/integration/criteria/alias_query_spec.rb +12 -19
- data/spec/integration/criteria/date_field_spec.rb +1 -2
- data/spec/integration/criteria/default_scope_spec.rb +23 -18
- data/spec/integration/criteria/logical_spec.rb +18 -19
- data/spec/integration/criteria/range_spec.rb +77 -86
- data/spec/integration/criteria/raw_value_spec.rb +122 -109
- data/spec/integration/criteria/time_with_zone_spec.rb +33 -24
- data/spec/integration/discriminator_key_spec.rb +85 -85
- data/spec/integration/discriminator_value_spec.rb +70 -73
- data/spec/integration/document_spec.rb +9 -10
- data/spec/integration/dots_and_dollars_spec.rb +105 -130
- data/spec/integration/encryption_spec.rb +8 -160
- data/spec/integration/i18n_fallbacks_spec.rb +7 -8
- data/spec/integration/isolation_state_spec.rb +241 -0
- data/spec/integration/matcher_examples_spec.rb +145 -168
- data/spec/integration/matcher_operator_data/in.yml +6 -6
- data/spec/integration/matcher_operator_data/regex.yml +0 -21
- data/spec/integration/matcher_operator_spec.rb +16 -26
- data/spec/integration/matcher_spec.rb +31 -32
- data/spec/integration/persistence/collection_options_spec.rb +0 -2
- data/spec/integration/persistence/range_field_spec.rb +24 -2
- data/spec/integration/server_query_spec.rb +43 -37
- data/spec/integration/shardable_spec.rb +10 -11
- data/spec/integration/stringified_symbol_field_spec.rb +28 -43
- data/spec/lite_spec_helper.rb +11 -12
- data/spec/mongoid/association/accessors_spec.rb +197 -285
- data/spec/mongoid/association/auto_save_spec.rb +62 -93
- data/spec/mongoid/association/builders_spec.rb +121 -74
- data/spec/mongoid/association/constrainable_spec.rb +9 -22
- data/spec/mongoid/association/counter_cache_spec.rb +71 -104
- data/spec/mongoid/association/depending_spec.rb +166 -208
- data/spec/mongoid/association/eager_spec.rb +416 -80
- data/spec/mongoid/association/embedded/cyclic_spec.rb +36 -48
- data/spec/mongoid/association/embedded/dirty_spec.rb +15 -20
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +36 -54
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +8 -15
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +135 -175
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +25 -127
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +9 -14
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +38 -51
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +1151 -1340
- data/spec/mongoid/association/embedded/embeds_many_models.rb +17 -17
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +11 -11
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +25 -138
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +15 -23
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +18 -26
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +204 -273
- 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 +5 -6
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -143
- data/spec/mongoid/association/macros_spec.rb +213 -300
- data/spec/mongoid/association/nested/many_spec.rb +51 -73
- data/spec/mongoid/association/nested/one_spec.rb +56 -80
- data/spec/mongoid/association/options_spec.rb +187 -310
- data/spec/mongoid/association/polymorphic_spec.rb +35 -53
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +55 -76
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +36 -41
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +81 -101
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +258 -345
- data/spec/mongoid/association/referenced/belongs_to_models.rb +4 -3
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +3 -4
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +91 -294
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +42 -56
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +41 -32
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +36 -42
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +8 -9
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +771 -1023
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +9 -9
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +5 -6
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +59 -177
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +29 -43
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +53 -53
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +104 -67
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +431 -675
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +1 -2
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +173 -156
- data/spec/mongoid/association/referenced/has_many_models.rb +1 -2
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +3 -4
- data/spec/mongoid/association/referenced/has_many_spec.rb +44 -188
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +26 -38
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +28 -29
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +29 -42
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +270 -332
- data/spec/mongoid/association/referenced/has_one_models.rb +1 -2
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +3 -4
- data/spec/mongoid/association/referenced/has_one_spec.rb +40 -188
- data/spec/mongoid/association/reflections_spec.rb +14 -24
- data/spec/mongoid/association/syncable_spec.rb +102 -125
- data/spec/mongoid/association_spec.rb +47 -70
- data/spec/mongoid/atomic/modifiers_spec.rb +184 -197
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +39 -52
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +35 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +9 -15
- data/spec/mongoid/atomic/paths_spec.rb +81 -117
- data/spec/mongoid/atomic_spec.rb +156 -171
- data/spec/mongoid/attributes/dynamic_spec.rb +5 -6
- data/spec/mongoid/attributes/nested_spec.rb +1221 -1888
- data/spec/mongoid/attributes/nested_spec_models.rb +8 -9
- data/spec/mongoid/attributes/projector_spec.rb +2 -6
- data/spec/mongoid/attributes/readonly_spec.rb +73 -97
- data/spec/mongoid/attributes_spec.rb +669 -826
- data/spec/mongoid/cacheable_spec.rb +74 -44
- data/spec/mongoid/changeable_spec.rb +591 -733
- data/spec/mongoid/clients/factory_spec.rb +122 -154
- data/spec/mongoid/clients/options_spec.rb +40 -59
- data/spec/mongoid/clients/sessions_spec.rb +25 -44
- data/spec/mongoid/clients/transactions_spec.rb +33 -50
- data/spec/mongoid/clients/transactions_spec_models.rb +3 -4
- data/spec/mongoid/clients_spec.rb +265 -355
- data/spec/mongoid/collection_configurable_spec.rb +9 -12
- data/spec/mongoid/composable_spec.rb +2 -9
- data/spec/mongoid/config/defaults_spec.rb +24 -49
- data/spec/mongoid/config/encryption_spec.rb +53 -284
- data/spec/mongoid/config/environment_spec.rb +30 -40
- data/spec/mongoid/config/introspection_spec.rb +42 -37
- data/spec/mongoid/config/options_spec.rb +14 -21
- data/spec/mongoid/config_spec.rb +145 -195
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +98 -226
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +4 -7
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +149 -187
- data/spec/mongoid/contextual/aggregable/none_spec.rb +14 -16
- data/spec/mongoid/contextual/atomic_spec.rb +223 -271
- data/spec/mongoid/contextual/map_reduce_spec.rb +110 -138
- data/spec/mongoid/contextual/memory_spec.rb +706 -1031
- data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +12 -13
- data/spec/mongoid/contextual/mongo_spec.rb +1008 -1213
- data/spec/mongoid/contextual/none_spec.rb +54 -59
- data/spec/mongoid/contextual/short_circuit_spec.rb +139 -0
- data/spec/mongoid/copyable_spec.rb +254 -300
- data/spec/mongoid/copyable_spec_models.rb +0 -1
- data/spec/mongoid/criteria/findable_spec.rb +322 -387
- data/spec/mongoid/criteria/includable_spec.rb +421 -372
- data/spec/mongoid/criteria/includable_spec_models.rb +16 -7
- data/spec/mongoid/criteria/inspectable_spec.rb +11 -14
- data/spec/mongoid/criteria/marshalable_spec.rb +11 -14
- data/spec/mongoid/criteria/modifiable_spec.rb +366 -512
- data/spec/mongoid/criteria/options_spec.rb +2 -7
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +112 -141
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +8 -11
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +127 -184
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +123 -60
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +84 -117
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +44 -65
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +86 -108
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +94 -33
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +103 -138
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +95 -34
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +25 -38
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +26 -28
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +32 -54
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +136 -130
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +16 -24
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +15 -24
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +12 -19
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +46 -63
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +28 -42
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +73 -96
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +71 -92
- data/spec/mongoid/criteria/queryable/key_spec.rb +32 -36
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +44 -49
- data/spec/mongoid/criteria/queryable/optional_spec.rb +373 -486
- data/spec/mongoid/criteria/queryable/options_spec.rb +172 -123
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +65 -87
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +41 -53
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +576 -682
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +7 -11
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +807 -998
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +154 -391
- data/spec/mongoid/criteria/queryable/selector_spec.rb +294 -390
- data/spec/mongoid/criteria/queryable/smash_spec.rb +6 -11
- data/spec/mongoid/criteria/queryable/storable_spec.rb +54 -81
- data/spec/mongoid/criteria/queryable_mql_spec.rb +92 -0
- data/spec/mongoid/criteria/scopable_spec.rb +102 -138
- data/spec/mongoid/criteria/translator_spec.rb +59 -60
- data/spec/mongoid/criteria_projection_spec.rb +81 -99
- data/spec/mongoid/criteria_spec.rb +935 -952
- data/spec/mongoid/document_fields_spec.rb +28 -30
- data/spec/mongoid/document_persistence_context_spec.rb +13 -15
- data/spec/mongoid/document_query_spec.rb +9 -12
- data/spec/mongoid/document_spec.rb +317 -409
- data/spec/mongoid/equality_spec.rb +69 -102
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +8 -11
- data/spec/mongoid/errors/attribute_not_loaded_spec.rb +7 -10
- data/spec/mongoid/errors/callback_spec.rb +8 -11
- data/spec/mongoid/errors/delete_restriction_spec.rb +5 -8
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +7 -10
- data/spec/mongoid/errors/document_not_found_spec.rb +51 -61
- data/spec/mongoid/errors/invalid_collection_spec.rb +9 -13
- data/spec/mongoid/errors/invalid_config_file_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_config_option_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_field_option_spec.rb +7 -10
- data/spec/mongoid/errors/invalid_field_spec.rb +10 -11
- data/spec/mongoid/errors/invalid_field_type_spec.rb +9 -12
- data/spec/mongoid/errors/invalid_find_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_includes_spec.rb +9 -13
- data/spec/mongoid/errors/invalid_index_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_options_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_path_spec.rb +7 -10
- data/spec/mongoid/errors/invalid_relation_spec.rb +15 -16
- data/spec/mongoid/errors/invalid_scope_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -6
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_time_spec.rb +8 -11
- data/spec/mongoid/errors/inverse_not_found_spec.rb +9 -12
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +9 -12
- data/spec/mongoid/errors/mixed_relations_spec.rb +8 -11
- data/spec/mongoid/errors/mongoid_error_spec.rb +21 -24
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +6 -9
- data/spec/mongoid/errors/no_client_config_spec.rb +7 -10
- data/spec/mongoid/errors/no_client_database_spec.rb +9 -12
- data/spec/mongoid/errors/no_client_hosts_spec.rb +9 -12
- data/spec/mongoid/errors/no_clients_config_spec.rb +7 -10
- data/spec/mongoid/errors/no_environment_spec.rb +8 -11
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +8 -11
- data/spec/mongoid/errors/no_metadata_spec.rb +7 -10
- data/spec/mongoid/errors/no_parent_spec.rb +7 -10
- data/spec/mongoid/errors/readonly_attribute_spec.rb +7 -10
- data/spec/mongoid/errors/readonly_document_spec.rb +6 -9
- data/spec/mongoid/errors/scope_overwrite_spec.rb +9 -12
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +9 -12
- data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -8
- data/spec/mongoid/errors/unsaved_document_spec.rb +8 -11
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +9 -12
- data/spec/mongoid/errors/validations_spec.rb +11 -14
- data/spec/mongoid/extensions/array_spec.rb +70 -92
- data/spec/mongoid/extensions/big_decimal_spec.rb +233 -313
- data/spec/mongoid/extensions/binary_spec.rb +21 -32
- data/spec/mongoid/extensions/boolean_spec.rb +52 -75
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +43 -54
- data/spec/mongoid/extensions/date_spec.rb +26 -38
- data/spec/mongoid/extensions/date_time_spec.rb +22 -32
- data/spec/mongoid/extensions/decimal128_spec.rb +12 -18
- data/spec/mongoid/extensions/false_class_spec.rb +10 -17
- data/spec/mongoid/extensions/float_spec.rb +40 -61
- data/spec/mongoid/extensions/hash_spec.rb +46 -64
- data/spec/mongoid/extensions/integer_spec.rb +40 -61
- data/spec/mongoid/extensions/module_spec.rb +13 -18
- data/spec/mongoid/extensions/nil_class_spec.rb +2 -5
- data/spec/mongoid/extensions/object_id_spec.rb +159 -247
- data/spec/mongoid/extensions/object_spec.rb +31 -47
- data/spec/mongoid/extensions/range_spec.rb +112 -115
- data/spec/mongoid/extensions/raw_value_spec.rb +10 -12
- data/spec/mongoid/extensions/regexp_spec.rb +23 -36
- data/spec/mongoid/extensions/set_spec.rb +38 -49
- data/spec/mongoid/extensions/string_spec.rb +118 -167
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +29 -43
- data/spec/mongoid/extensions/symbol_spec.rb +12 -20
- data/spec/mongoid/extensions/time_spec.rb +160 -202
- data/spec/mongoid/extensions/time_with_zone_spec.rb +79 -105
- data/spec/mongoid/extensions/true_class_spec.rb +10 -17
- data/spec/mongoid/factory_spec.rb +125 -148
- data/spec/mongoid/fields/foreign_key_spec.rb +124 -169
- data/spec/mongoid/fields/localized_spec.rb +140 -185
- data/spec/mongoid/fields/standard_spec.rb +43 -59
- data/spec/mongoid/fields_spec.rb +751 -620
- data/spec/mongoid/findable_spec.rb +260 -228
- data/spec/mongoid/indexable/specification_spec.rb +42 -58
- data/spec/mongoid/indexable_spec.rb +260 -264
- data/spec/mongoid/inspectable_spec.rb +45 -55
- data/spec/mongoid/interceptable_spec.rb +784 -922
- data/spec/mongoid/interceptable_spec_models.rb +35 -35
- data/spec/mongoid/loading_spec.rb +47 -43
- data/spec/mongoid/loggable_spec.rb +3 -6
- data/spec/mongoid/matcher/extract_attribute_spec.rb +2 -6
- data/spec/mongoid/mongoizable_spec.rb +81 -90
- data/spec/mongoid/monkey_patches_spec.rb +4 -0
- data/spec/mongoid/persistable/creatable_spec.rb +181 -220
- data/spec/mongoid/persistable/deletable_spec.rb +139 -179
- data/spec/mongoid/persistable/destroyable_spec.rb +135 -164
- data/spec/mongoid/persistable/incrementable_spec.rb +65 -84
- data/spec/mongoid/persistable/logical_spec.rb +48 -61
- data/spec/mongoid/persistable/maxable_spec.rb +45 -44
- data/spec/mongoid/persistable/minable_spec.rb +45 -44
- data/spec/mongoid/persistable/multipliable_spec.rb +54 -69
- data/spec/mongoid/persistable/poppable_spec.rb +47 -60
- data/spec/mongoid/persistable/pullable_spec.rb +79 -103
- data/spec/mongoid/persistable/pushable_spec.rb +106 -131
- data/spec/mongoid/persistable/renamable_spec.rb +52 -65
- data/spec/mongoid/persistable/savable_spec.rb +152 -189
- data/spec/mongoid/persistable/settable_spec.rb +121 -145
- data/spec/mongoid/persistable/unsettable_spec.rb +56 -73
- data/spec/mongoid/persistable/updatable_spec.rb +185 -232
- data/spec/mongoid/persistable/upsertable_spec.rb +66 -77
- data/spec/mongoid/persistable_spec.rb +132 -139
- data/spec/mongoid/persistence_context_spec.rb +31 -89
- data/spec/mongoid/positional_spec.rb +67 -79
- data/spec/mongoid/railties/bson_object_id_serializer_spec.rb +0 -3
- data/spec/mongoid/railties/console_sandbox_spec.rb +0 -1
- data/spec/mongoid/relations/proxy_spec.rb +0 -1
- data/spec/mongoid/reloadable_spec.rb +250 -145
- data/spec/mongoid/scopable_spec.rb +319 -398
- data/spec/mongoid/search_indexable_spec.rb +446 -41
- data/spec/mongoid/selectable_spec.rb +36 -51
- data/spec/mongoid/serializable_spec.rb +269 -312
- data/spec/mongoid/shardable_models.rb +5 -5
- data/spec/mongoid/shardable_spec.rb +44 -46
- data/spec/mongoid/stateful_spec.rb +55 -75
- data/spec/mongoid/tasks/database_rake_spec.rb +138 -141
- data/spec/mongoid/tasks/database_spec.rb +80 -98
- data/spec/mongoid/tasks/encryption_spec.rb +22 -20
- data/spec/mongoid/threaded_spec.rb +57 -83
- data/spec/mongoid/timestamps/created/short_spec.rb +12 -16
- data/spec/mongoid/timestamps/created_spec.rb +16 -20
- data/spec/mongoid/timestamps/timeless_spec.rb +31 -43
- data/spec/mongoid/timestamps/updated/short_spec.rb +21 -28
- data/spec/mongoid/timestamps/updated_spec.rb +18 -25
- data/spec/mongoid/timestamps_spec.rb +171 -188
- data/spec/mongoid/timestamps_spec_models.rb +12 -13
- data/spec/mongoid/touchable_spec.rb +330 -294
- data/spec/mongoid/touchable_spec_models.rb +35 -37
- data/spec/mongoid/traversable_spec.rb +435 -471
- data/spec/mongoid/validatable/associated_spec.rb +42 -60
- data/spec/mongoid/validatable/format_spec.rb +24 -34
- data/spec/mongoid/validatable/length_spec.rb +62 -86
- data/spec/mongoid/validatable/numericality_spec.rb +114 -23
- data/spec/mongoid/validatable/presence_spec.rb +149 -203
- data/spec/mongoid/validatable/uniqueness_spec.rb +632 -830
- data/spec/mongoid/validatable_spec.rb +71 -103
- data/spec/mongoid/warnings_spec.rb +5 -9
- data/spec/mongoid_spec.rb +25 -41
- data/spec/rails/controller_extension/controller_runtime_spec.rb +45 -49
- data/spec/rails/mongoid_spec.rb +15 -15
- data/spec/shared/lib/mrss/cluster_config.rb +5 -40
- data/spec/shared/lib/mrss/constraints.rb +7 -46
- data/spec/shared/lib/mrss/docker_runner.rb +10 -21
- data/spec/shared/lib/mrss/eg_config_utils.rb +0 -31
- data/spec/shared/lib/mrss/release/candidate.rb +18 -12
- data/spec/shared/lib/mrss/server_version_registry.rb +1 -5
- data/spec/shared/share/Dockerfile.erb +6 -8
- data/spec/shared/shlib/server.sh +0 -50
- data/spec/shared/shlib/set_env.sh +4 -10
- data/spec/spec_helper.rb +54 -31
- data/spec/support/authorization.rb +0 -1
- data/spec/support/client_registry.rb +1 -2
- data/spec/support/constraints.rb +8 -25
- data/spec/support/crypt/models.rb +7 -165
- data/spec/support/crypt.rb +6 -9
- data/spec/support/expectations.rb +21 -7
- data/spec/support/feature_sandbox.rb +1 -4
- data/spec/support/helpers.rb +0 -1
- data/spec/support/immutable_ids.rb +20 -21
- data/spec/support/macros.rb +1 -3
- data/spec/support/models/account.rb +4 -5
- data/spec/support/models/acolyte.rb +5 -5
- data/spec/support/models/actor.rb +3 -3
- data/spec/support/models/actress.rb +0 -1
- data/spec/support/models/address.rb +11 -11
- data/spec/support/models/address_component.rb +1 -1
- data/spec/support/models/address_number.rb +1 -1
- data/spec/support/models/agency.rb +1 -1
- data/spec/support/models/agent.rb +1 -1
- data/spec/support/models/album.rb +1 -2
- data/spec/support/models/alert.rb +1 -1
- data/spec/support/models/animal.rb +4 -5
- data/spec/support/models/answer.rb +1 -1
- data/spec/support/models/appointment.rb +2 -2
- 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 +16 -12
- data/spec/support/models/artwork.rb +1 -1
- data/spec/support/models/audible_sound.rb +0 -1
- data/spec/support/models/audio.rb +2 -2
- data/spec/support/models/augmentation.rb +1 -2
- data/spec/support/models/author.rb +1 -1
- data/spec/support/models/baby.rb +1 -1
- data/spec/support/models/band.rb +0 -1
- data/spec/support/models/bar.rb +2 -2
- 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 +3 -5
- data/spec/support/models/bolt.rb +0 -1
- data/spec/support/models/bomb.rb +1 -1
- data/spec/support/models/book.rb +1 -1
- data/spec/support/models/breed.rb +1 -1
- data/spec/support/models/browser.rb +1 -2
- data/spec/support/models/building.rb +0 -1
- data/spec/support/models/building_address.rb +1 -1
- data/spec/support/models/bus.rb +1 -1
- data/spec/support/models/business.rb +2 -2
- data/spec/support/models/callback_test.rb +1 -1
- data/spec/support/models/canvas.rb +5 -6
- data/spec/support/models/car.rb +0 -1
- data/spec/support/models/cat.rb +0 -2
- data/spec/support/models/catalog.rb +0 -1
- data/spec/support/models/category.rb +1 -1
- data/spec/support/models/child.rb +1 -1
- data/spec/support/models/child_doc.rb +5 -6
- data/spec/support/models/church.rb +1 -1
- data/spec/support/models/circle.rb +0 -1
- data/spec/support/models/circuit.rb +2 -2
- data/spec/support/models/circus.rb +0 -1
- data/spec/support/models/code.rb +2 -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 +1 -1
- data/spec/support/models/contractor.rb +1 -1
- data/spec/support/models/cookie.rb +0 -1
- data/spec/support/models/country_code.rb +2 -3
- data/spec/support/models/courier_job.rb +2 -2
- data/spec/support/models/cover.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 +1 -1
- data/spec/support/models/definition.rb +1 -1
- data/spec/support/models/delegating_patient.rb +0 -1
- data/spec/support/models/description.rb +0 -1
- data/spec/support/models/dictionary.rb +1 -1
- data/spec/support/models/division.rb +2 -2
- data/spec/support/models/doctor.rb +0 -1
- data/spec/support/models/dog.rb +2 -2
- data/spec/support/models/dokument.rb +1 -1
- data/spec/support/models/draft.rb +0 -1
- data/spec/support/models/dragon.rb +1 -1
- data/spec/support/models/driver.rb +2 -2
- data/spec/support/models/drug.rb +1 -1
- data/spec/support/models/dungeon.rb +1 -1
- data/spec/support/models/edit.rb +1 -1
- data/spec/support/models/email.rb +1 -1
- data/spec/support/models/employer.rb +1 -2
- data/spec/support/models/entry.rb +1 -1
- data/spec/support/models/eraser.rb +0 -1
- data/spec/support/models/even.rb +1 -1
- data/spec/support/models/event.rb +3 -4
- data/spec/support/models/exhibition.rb +1 -1
- data/spec/support/models/exhibitor.rb +1 -1
- data/spec/support/models/explosion.rb +1 -1
- data/spec/support/models/eye.rb +0 -1
- data/spec/support/models/eye_bowl.rb +2 -3
- data/spec/support/models/face.rb +2 -3
- data/spec/support/models/fanatic.rb +1 -1
- data/spec/support/models/favorite.rb +1 -1
- data/spec/support/models/filesystem.rb +1 -1
- data/spec/support/models/fire_hydrant.rb +1 -1
- data/spec/support/models/firefox.rb +0 -1
- data/spec/support/models/fish.rb +0 -1
- data/spec/support/models/folder.rb +0 -2
- data/spec/support/models/folder_item.rb +1 -3
- data/spec/support/models/fruits.rb +9 -5
- data/spec/support/models/game.rb +3 -4
- 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 +1 -1
- data/spec/support/models/house.rb +2 -2
- data/spec/support/models/html_writer.rb +0 -1
- data/spec/support/models/id_key.rb +3 -3
- data/spec/support/models/idnodef.rb +0 -1
- data/spec/support/models/image.rb +0 -1
- data/spec/support/models/implant.rb +1 -2
- data/spec/support/models/instrument.rb +2 -3
- data/spec/support/models/item.rb +2 -2
- data/spec/support/models/jar.rb +1 -2
- data/spec/support/models/kaleidoscope.rb +1 -1
- data/spec/support/models/kangaroo.rb +1 -1
- data/spec/support/models/label.rb +2 -2
- data/spec/support/models/language.rb +1 -1
- data/spec/support/models/lat_lng.rb +0 -1
- data/spec/support/models/league.rb +1 -1
- data/spec/support/models/learner.rb +0 -1
- data/spec/support/models/line_item.rb +1 -1
- data/spec/support/models/location.rb +1 -1
- data/spec/support/models/login.rb +1 -2
- data/spec/support/models/manufacturer.rb +0 -1
- data/spec/support/models/meat.rb +1 -1
- data/spec/support/models/membership.rb +1 -1
- data/spec/support/models/message.rb +1 -2
- data/spec/support/models/minim.rb +0 -1
- data/spec/support/models/mixed_drink.rb +1 -1
- data/spec/support/models/modifier_models.rb +25 -0
- data/spec/support/models/mop.rb +0 -1
- data/spec/support/models/movie.rb +1 -1
- data/spec/support/models/my_hash.rb +1 -2
- data/spec/support/models/name.rb +4 -5
- data/spec/support/models/name_only.rb +0 -1
- data/spec/support/models/node.rb +1 -1
- data/spec/support/models/note.rb +3 -3
- data/spec/support/models/nut.rb +0 -1
- data/spec/support/models/odd.rb +1 -1
- data/spec/support/models/order.rb +1 -1
- data/spec/support/models/ordered_post.rb +1 -1
- data/spec/support/models/ordered_preference.rb +1 -1
- data/spec/support/models/oscar.rb +1 -1
- data/spec/support/models/other_owner_object.rb +0 -1
- data/spec/support/models/override.rb +3 -11
- data/spec/support/models/ownable.rb +1 -1
- data/spec/support/models/owner.rb +1 -1
- data/spec/support/models/pack.rb +0 -1
- data/spec/support/models/page.rb +3 -3
- data/spec/support/models/page_question.rb +1 -1
- data/spec/support/models/palette.rb +2 -2
- data/spec/support/models/parent.rb +2 -2
- data/spec/support/models/parent_doc.rb +1 -1
- data/spec/support/models/passport.rb +0 -1
- data/spec/support/models/patient.rb +2 -2
- data/spec/support/models/pdf_writer.rb +0 -1
- data/spec/support/models/pencil.rb +0 -1
- data/spec/support/models/person.rb +32 -28
- data/spec/support/models/pet.rb +1 -1
- data/spec/support/models/pet_owner.rb +1 -1
- data/spec/support/models/phone.rb +1 -2
- data/spec/support/models/piano.rb +0 -1
- data/spec/support/models/pizza.rb +1 -1
- data/spec/support/models/player.rb +5 -5
- data/spec/support/models/post.rb +12 -12
- data/spec/support/models/post_genre.rb +1 -1
- data/spec/support/models/powerup.rb +1 -2
- data/spec/support/models/preference.rb +2 -2
- data/spec/support/models/princess.rb +1 -1
- data/spec/support/models/product.rb +3 -3
- data/spec/support/models/profile.rb +2 -1
- data/spec/support/models/pronunciation.rb +1 -1
- data/spec/support/models/pub.rb +2 -2
- 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 +1 -1
- data/spec/support/models/purchased_item.rb +1 -1
- data/spec/support/models/question.rb +2 -2
- data/spec/support/models/quiz.rb +1 -1
- data/spec/support/models/rating.rb +1 -1
- data/spec/support/models/record.rb +2 -3
- data/spec/support/models/registry.rb +1 -1
- data/spec/support/models/role.rb +1 -1
- data/spec/support/models/root_category.rb +1 -1
- data/spec/support/models/sandbox/app/models/app_models_message.rb +0 -1
- data/spec/support/models/sandbox/lib/models/lib_models_message.rb +0 -1
- data/spec/support/models/sandbox/sandbox_message.rb +0 -1
- data/spec/support/models/sandbox/sandbox_user.rb +0 -1
- data/spec/support/models/sandbox/subdir/sandbox_comment.rb +0 -1
- data/spec/support/models/sandwich.rb +1 -1
- data/spec/support/models/scheduler.rb +0 -1
- data/spec/support/models/school.rb +0 -1
- data/spec/support/models/scribe.rb +1 -1
- data/spec/support/models/sealer.rb +0 -1
- data/spec/support/models/seat.rb +0 -1
- data/spec/support/models/seo.rb +1 -1
- data/spec/support/models/series.rb +1 -1
- data/spec/support/models/server.rb +1 -1
- data/spec/support/models/service.rb +2 -2
- data/spec/support/models/shape.rb +3 -3
- data/spec/support/models/shelf.rb +1 -1
- data/spec/support/models/shield.rb +2 -2
- data/spec/support/models/shipment_address.rb +0 -1
- data/spec/support/models/shipping_container.rb +1 -1
- data/spec/support/models/shipping_pack.rb +0 -1
- data/spec/support/models/shirt.rb +0 -1
- data/spec/support/models/shop.rb +2 -2
- data/spec/support/models/short_agent.rb +0 -1
- data/spec/support/models/short_quiz.rb +1 -1
- data/spec/support/models/simple.rb +1 -1
- data/spec/support/models/slave.rb +1 -1
- data/spec/support/models/song.rb +1 -2
- data/spec/support/models/sound.rb +2 -2
- 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 +2 -2
- data/spec/support/models/store_as_dup_test2.rb +1 -1
- data/spec/support/models/store_as_dup_test3.rb +2 -2
- data/spec/support/models/store_as_dup_test4.rb +1 -1
- data/spec/support/models/strategy.rb +0 -1
- data/spec/support/models/student.rb +1 -2
- data/spec/support/models/sub_item.rb +0 -1
- data/spec/support/models/subscription.rb +2 -2
- data/spec/support/models/survey.rb +2 -2
- data/spec/support/models/symptom.rb +2 -2
- data/spec/support/models/system_role.rb +2 -3
- data/spec/support/models/tag.rb +2 -2
- data/spec/support/models/target.rb +1 -1
- data/spec/support/models/template.rb +1 -1
- data/spec/support/models/thing.rb +1 -1
- data/spec/support/models/threadlocker.rb +0 -1
- data/spec/support/models/title.rb +0 -1
- data/spec/support/models/tool.rb +3 -3
- data/spec/support/models/topping.rb +1 -1
- data/spec/support/models/toy.rb +0 -1
- data/spec/support/models/track.rb +1 -1
- data/spec/support/models/translation.rb +1 -1
- data/spec/support/models/tree.rb +2 -3
- data/spec/support/models/truck.rb +0 -1
- data/spec/support/models/updatable.rb +0 -1
- data/spec/support/models/user.rb +3 -4
- data/spec/support/models/user_account.rb +3 -3
- data/spec/support/models/validation_callback.rb +4 -4
- data/spec/support/models/vehicle.rb +2 -3
- data/spec/support/models/version.rb +1 -1
- data/spec/support/models/vertex.rb +0 -1
- data/spec/support/models/vet_visit.rb +1 -1
- data/spec/support/models/video.rb +2 -2
- data/spec/support/models/video_game.rb +0 -1
- data/spec/support/models/washer.rb +0 -1
- data/spec/support/models/weapon.rb +1 -2
- data/spec/support/models/wiki_page.rb +2 -3
- data/spec/support/models/word.rb +2 -2
- data/spec/support/models/word_origin.rb +1 -2
- data/spec/support/models/writer.rb +3 -3
- data/spec/support/rails_mock.rb +7 -12
- data/spec/support/shared/time.rb +0 -1
- data/spec/support/sinatra_mock.rb +4 -2
- data/spec/support/spec_config.rb +19 -18
- metadata +14 -14
- data/lib/mongoid/errors/in_memory_regexp_timeout.rb +0 -26
- data/lib/mongoid/errors/no_encryption_schema.rb +0 -28
- data/lib/mongoid/field_readable.rb +0 -70
- data/lib/mongoid/matcher/regexp_budget.rb +0 -383
- data/spec/integration/matcher_regexp_timeout_spec.rb +0 -215
- data/spec/integration/query_operator_guard_spec.rb +0 -89
- data/spec/mongoid/encryptable_spec.rb +0 -61
- data/spec/mongoid/matcher/regexp_budget_spec.rb +0 -570
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Contextual
|
|
6
|
-
|
|
7
5
|
# Mixin module included in Mongoid::Criteria which provides a
|
|
8
6
|
# direct method interface to MongoDB's Update Operators ($set,
|
|
9
7
|
# $pull, $inc, etc.) These operators can be applied to update
|
|
10
8
|
# all documents in the database within the criteria scope,
|
|
11
9
|
# without loading each document into Mongoid's memory.
|
|
12
10
|
module Atomic
|
|
13
|
-
|
|
14
11
|
# Execute an atomic $addToSet on the matching documents.
|
|
15
12
|
#
|
|
16
13
|
# @example Add the value to the set.
|
|
@@ -20,7 +17,7 @@ module Mongoid
|
|
|
20
17
|
#
|
|
21
18
|
# @return [ nil ] Nil.
|
|
22
19
|
def add_to_set(adds)
|
|
23
|
-
view.update_many(
|
|
20
|
+
view.update_many('$addToSet' => collect_operations(adds))
|
|
24
21
|
end
|
|
25
22
|
|
|
26
23
|
# Perform an atomic $addToSet/$each on the matching documents.
|
|
@@ -32,7 +29,7 @@ module Mongoid
|
|
|
32
29
|
#
|
|
33
30
|
# @return [ nil ] Nil.
|
|
34
31
|
def add_each_to_set(adds)
|
|
35
|
-
view.update_many(
|
|
32
|
+
view.update_many('$addToSet' => collect_each_operations(adds))
|
|
36
33
|
end
|
|
37
34
|
|
|
38
35
|
# Perform an atomic $bit operation on the matching documents.
|
|
@@ -44,7 +41,7 @@ module Mongoid
|
|
|
44
41
|
#
|
|
45
42
|
# @return [ nil ] Nil.
|
|
46
43
|
def bit(bits)
|
|
47
|
-
view.update_many(
|
|
44
|
+
view.update_many('$bit' => collect_operations(bits))
|
|
48
45
|
end
|
|
49
46
|
|
|
50
47
|
# Perform an atomic $inc operation on the matching documents.
|
|
@@ -56,7 +53,7 @@ module Mongoid
|
|
|
56
53
|
#
|
|
57
54
|
# @return [ nil ] Nil.
|
|
58
55
|
def inc(incs)
|
|
59
|
-
view.update_many(
|
|
56
|
+
view.update_many('$inc' => collect_operations(incs))
|
|
60
57
|
end
|
|
61
58
|
|
|
62
59
|
# Perform an atomic $mul operation on the matching documents.
|
|
@@ -68,7 +65,7 @@ module Mongoid
|
|
|
68
65
|
#
|
|
69
66
|
# @return [ nil ] Nil.
|
|
70
67
|
def mul(factors)
|
|
71
|
-
view.update_many(
|
|
68
|
+
view.update_many('$mul' => collect_operations(factors))
|
|
72
69
|
end
|
|
73
70
|
|
|
74
71
|
# Perform an atomic $pop operation on the matching documents.
|
|
@@ -83,7 +80,7 @@ module Mongoid
|
|
|
83
80
|
#
|
|
84
81
|
# @return [ nil ] Nil.
|
|
85
82
|
def pop(pops)
|
|
86
|
-
view.update_many(
|
|
83
|
+
view.update_many('$pop' => collect_operations(pops))
|
|
87
84
|
end
|
|
88
85
|
|
|
89
86
|
# Perform an atomic $pull operation on the matching documents.
|
|
@@ -97,7 +94,7 @@ module Mongoid
|
|
|
97
94
|
#
|
|
98
95
|
# @return [ nil ] Nil.
|
|
99
96
|
def pull(pulls)
|
|
100
|
-
view.update_many(
|
|
97
|
+
view.update_many('$pull' => collect_operations(pulls))
|
|
101
98
|
end
|
|
102
99
|
|
|
103
100
|
# Perform an atomic $pullAll operation on the matching documents.
|
|
@@ -109,7 +106,7 @@ module Mongoid
|
|
|
109
106
|
#
|
|
110
107
|
# @return [ nil ] Nil.
|
|
111
108
|
def pull_all(pulls)
|
|
112
|
-
view.update_many(
|
|
109
|
+
view.update_many('$pullAll' => collect_operations(pulls))
|
|
113
110
|
end
|
|
114
111
|
|
|
115
112
|
# Perform an atomic $push operation on the matching documents.
|
|
@@ -121,7 +118,7 @@ module Mongoid
|
|
|
121
118
|
#
|
|
122
119
|
# @return [ nil ] Nil.
|
|
123
120
|
def push(pushes)
|
|
124
|
-
view.update_many(
|
|
121
|
+
view.update_many('$push' => collect_operations(pushes))
|
|
125
122
|
end
|
|
126
123
|
|
|
127
124
|
# Perform an atomic $push/$each operation on the matching documents.
|
|
@@ -133,7 +130,7 @@ module Mongoid
|
|
|
133
130
|
#
|
|
134
131
|
# @return [ nil ] Nil.
|
|
135
132
|
def push_all(pushes)
|
|
136
|
-
view.update_many(
|
|
133
|
+
view.update_many('$push' => collect_each_operations(pushes))
|
|
137
134
|
end
|
|
138
135
|
|
|
139
136
|
# Perform an atomic $rename of fields on the matching documents.
|
|
@@ -145,11 +142,10 @@ module Mongoid
|
|
|
145
142
|
#
|
|
146
143
|
# @return [ nil ] Nil.
|
|
147
144
|
def rename(renames)
|
|
148
|
-
operations = renames.
|
|
145
|
+
operations = renames.each_with_object({}) do |(old_name, new_name), ops|
|
|
149
146
|
ops[old_name] = new_name.to_s
|
|
150
|
-
ops
|
|
151
147
|
end
|
|
152
|
-
view.update_many(
|
|
148
|
+
view.update_many('$rename' => collect_operations(operations))
|
|
153
149
|
end
|
|
154
150
|
|
|
155
151
|
# Perform an atomic $set of fields on the matching documents.
|
|
@@ -161,7 +157,7 @@ module Mongoid
|
|
|
161
157
|
#
|
|
162
158
|
# @return [ nil ] Nil.
|
|
163
159
|
def set(sets)
|
|
164
|
-
view.update_many(
|
|
160
|
+
view.update_many('$set' => collect_operations(sets))
|
|
165
161
|
end
|
|
166
162
|
|
|
167
163
|
# Perform an atomic $unset of a field on the matching documents.
|
|
@@ -198,9 +194,9 @@ module Mongoid
|
|
|
198
194
|
#
|
|
199
195
|
# @return [ nil ] Nil.
|
|
200
196
|
def set_min(fields)
|
|
201
|
-
view.update_many(
|
|
197
|
+
view.update_many('$min' => collect_operations(fields))
|
|
202
198
|
end
|
|
203
|
-
alias
|
|
199
|
+
alias clamp_upper_bound set_min
|
|
204
200
|
|
|
205
201
|
# Performs an atomic $max update operation on the given field or fields.
|
|
206
202
|
# Each field will be set to the maximum of [current_value, given value].
|
|
@@ -221,9 +217,9 @@ module Mongoid
|
|
|
221
217
|
#
|
|
222
218
|
# @return [ nil ] Nil.
|
|
223
219
|
def set_max(fields)
|
|
224
|
-
view.update_many(
|
|
220
|
+
view.update_many('$max' => collect_operations(fields))
|
|
225
221
|
end
|
|
226
|
-
alias
|
|
222
|
+
alias clamp_lower_bound set_max
|
|
227
223
|
|
|
228
224
|
private
|
|
229
225
|
|
|
@@ -231,7 +227,7 @@ module Mongoid
|
|
|
231
227
|
#
|
|
232
228
|
# @param [ Array | Hash ] ops The operations to collect.
|
|
233
229
|
# @param [ Hash ] aggregator The hash to use to aggregate the operations.
|
|
234
|
-
#
|
|
230
|
+
#
|
|
235
231
|
# @return [ Hash ] The aggregated operations, by field.
|
|
236
232
|
def collect_operations(ops, aggregator = {})
|
|
237
233
|
ops.each_with_object(aggregator) do |(field, value), operations|
|
|
@@ -241,7 +237,7 @@ module Mongoid
|
|
|
241
237
|
|
|
242
238
|
def collect_each_operations(ops)
|
|
243
239
|
ops.each_with_object({}) do |(field, value), operations|
|
|
244
|
-
operations[database_field_name(field)] = {
|
|
240
|
+
operations[database_field_name(field)] = { '$each' => Array.wrap(value).mongoize }
|
|
245
241
|
end
|
|
246
242
|
end
|
|
247
243
|
|
|
@@ -261,7 +257,7 @@ module Mongoid
|
|
|
261
257
|
# @return [ Hash ] The selector for the atomic $unset operation.
|
|
262
258
|
def collect_unset_operations(ops)
|
|
263
259
|
ops.map { |op| op.is_a?(Hash) ? op.keys : op }.flatten
|
|
264
|
-
.map { |field| [database_field_name(field), true] }.to_h
|
|
260
|
+
.map { |field| [ database_field_name(field), true ] }.to_h
|
|
265
261
|
end
|
|
266
262
|
end
|
|
267
263
|
end
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Contextual
|
|
6
|
-
|
|
7
5
|
# Mixin module included in objects which represent database commands.
|
|
8
6
|
module Command
|
|
9
|
-
|
|
10
7
|
# @attribute [r] collection The collection to query against.
|
|
11
8
|
# @attribute [r] criteria The criteria for the context.
|
|
12
9
|
attr_reader :collection, :criteria
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Contextual
|
|
6
|
-
|
|
7
5
|
# Represents a mapReduce database command instruction.
|
|
8
6
|
class MapReduce
|
|
9
7
|
extend Forwardable
|
|
@@ -20,7 +18,7 @@ module Mongoid
|
|
|
20
18
|
#
|
|
21
19
|
# @return [ Hash ] The counts.
|
|
22
20
|
def counts
|
|
23
|
-
results[
|
|
21
|
+
results['counts']
|
|
24
22
|
end
|
|
25
23
|
|
|
26
24
|
# Iterates over each of the documents in the map/reduce, excluding the
|
|
@@ -32,12 +30,10 @@ module Mongoid
|
|
|
32
30
|
# end
|
|
33
31
|
#
|
|
34
32
|
# @return [ Enumerator ] The enumerator.
|
|
35
|
-
def each
|
|
33
|
+
def each(&block)
|
|
36
34
|
validate_out!
|
|
37
35
|
if block_given?
|
|
38
|
-
@map_reduce.each
|
|
39
|
-
yield doc
|
|
40
|
-
end
|
|
36
|
+
@map_reduce.each(&block)
|
|
41
37
|
else
|
|
42
38
|
@map_reduce.to_enum
|
|
43
39
|
end
|
|
@@ -50,7 +46,7 @@ module Mongoid
|
|
|
50
46
|
#
|
|
51
47
|
# @return [ Integer ] The number of emitted documents.
|
|
52
48
|
def emitted
|
|
53
|
-
counts[
|
|
49
|
+
counts['emit']
|
|
54
50
|
end
|
|
55
51
|
|
|
56
52
|
# Provide a finalize js function for the map/reduce.
|
|
@@ -87,7 +83,7 @@ module Mongoid
|
|
|
87
83
|
#
|
|
88
84
|
# @return [ Integer ] The number of input documents.
|
|
89
85
|
def input
|
|
90
|
-
counts[
|
|
86
|
+
counts['input']
|
|
91
87
|
end
|
|
92
88
|
|
|
93
89
|
# Sets the map/reduce to use jsMode.
|
|
@@ -138,7 +134,7 @@ module Mongoid
|
|
|
138
134
|
#
|
|
139
135
|
# @return [ Integer ] The number of output documents.
|
|
140
136
|
def output
|
|
141
|
-
counts[
|
|
137
|
+
counts['output']
|
|
142
138
|
end
|
|
143
139
|
|
|
144
140
|
# Get the raw output from the map/reduce operation.
|
|
@@ -153,7 +149,7 @@ module Mongoid
|
|
|
153
149
|
opts = { read: criteria.options.fetch(:read) } if criteria.options[:read]
|
|
154
150
|
@map_reduce.database.command(cmd, (opts || {}).merge(session: _session)).first
|
|
155
151
|
end
|
|
156
|
-
alias
|
|
152
|
+
alias results raw
|
|
157
153
|
|
|
158
154
|
# Execute the map/reduce, returning the raw output.
|
|
159
155
|
# Useful when you don't care about map/reduce's output.
|
|
@@ -162,7 +158,7 @@ module Mongoid
|
|
|
162
158
|
# map_reduce.execute
|
|
163
159
|
#
|
|
164
160
|
# @return [ Hash ] The raw output
|
|
165
|
-
alias
|
|
161
|
+
alias execute raw
|
|
166
162
|
|
|
167
163
|
# Get the number of documents reduced by the map/reduce.
|
|
168
164
|
#
|
|
@@ -171,7 +167,7 @@ module Mongoid
|
|
|
171
167
|
#
|
|
172
168
|
# @return [ Integer ] The number of reduced documents.
|
|
173
169
|
def reduced
|
|
174
|
-
counts[
|
|
170
|
+
counts['reduce']
|
|
175
171
|
end
|
|
176
172
|
|
|
177
173
|
# Adds a javascript object to the global scope of the map/reduce.
|
|
@@ -194,7 +190,7 @@ module Mongoid
|
|
|
194
190
|
#
|
|
195
191
|
# @return [ Float ] The time in milliseconds.
|
|
196
192
|
def time
|
|
197
|
-
results[
|
|
193
|
+
results['timeMillis']
|
|
198
194
|
end
|
|
199
195
|
|
|
200
196
|
# Get a pretty string representation of the map/reduce, including the
|
|
@@ -205,14 +201,14 @@ module Mongoid
|
|
|
205
201
|
#
|
|
206
202
|
# @return [ String ] The inspection string.
|
|
207
203
|
def inspect
|
|
208
|
-
%
|
|
204
|
+
%(#<Mongoid::Contextual::MapReduce
|
|
209
205
|
selector: #{criteria.selector.inspect}
|
|
210
206
|
class: #{criteria.klass}
|
|
211
207
|
map: #{command[:map]}
|
|
212
208
|
reduce: #{command[:reduce]}
|
|
213
209
|
finalize: #{command[:finalize]}
|
|
214
210
|
out: #{command[:out].inspect}>
|
|
215
|
-
|
|
211
|
+
)
|
|
216
212
|
end
|
|
217
213
|
|
|
218
214
|
# Returns the selector of the command spec.
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require "mongoid/field_readable"
|
|
3
|
+
require 'mongoid/contextual/aggregable/memory'
|
|
4
|
+
require 'mongoid/association/eager_loadable'
|
|
7
5
|
|
|
8
6
|
module Mongoid
|
|
9
7
|
module Contextual
|
|
10
|
-
|
|
11
8
|
# Context object used for performing bulk query and persistence
|
|
12
9
|
# operations on documents which have been loaded into application
|
|
13
10
|
# memory. The method interface of this class is consistent with
|
|
@@ -18,7 +15,6 @@ module Mongoid
|
|
|
18
15
|
include Association::EagerLoadable
|
|
19
16
|
include Queryable
|
|
20
17
|
include Positional
|
|
21
|
-
include FieldReadable
|
|
22
18
|
|
|
23
19
|
# @attribute [r] root The root document.
|
|
24
20
|
# @attribute [r] path The atomic path.
|
|
@@ -36,6 +32,7 @@ module Mongoid
|
|
|
36
32
|
# @return [ true | false ] If the objects are equal.
|
|
37
33
|
def ==(other)
|
|
38
34
|
return false unless other.respond_to?(:entries)
|
|
35
|
+
|
|
39
36
|
entries == other.entries
|
|
40
37
|
end
|
|
41
38
|
|
|
@@ -53,13 +50,13 @@ module Mongoid
|
|
|
53
50
|
end
|
|
54
51
|
unless removed.empty?
|
|
55
52
|
collection.find(selector).update_one(
|
|
56
|
-
positionally(selector,
|
|
53
|
+
positionally(selector, '$pullAll' => { path => removed }),
|
|
57
54
|
session: _session
|
|
58
55
|
)
|
|
59
56
|
end
|
|
60
57
|
deleted
|
|
61
58
|
end
|
|
62
|
-
alias
|
|
59
|
+
alias delete_all delete
|
|
63
60
|
|
|
64
61
|
# Destroy all documents in the database that match the selector.
|
|
65
62
|
#
|
|
@@ -75,7 +72,7 @@ module Mongoid
|
|
|
75
72
|
end
|
|
76
73
|
deleted
|
|
77
74
|
end
|
|
78
|
-
alias
|
|
75
|
+
alias destroy_all destroy
|
|
79
76
|
|
|
80
77
|
# Get the distinct values in the db for the provided field.
|
|
81
78
|
#
|
|
@@ -98,11 +95,9 @@ module Mongoid
|
|
|
98
95
|
# end
|
|
99
96
|
#
|
|
100
97
|
# @return [ Enumerator ] The enumerator.
|
|
101
|
-
def each
|
|
98
|
+
def each(&block)
|
|
102
99
|
if block_given?
|
|
103
|
-
documents_for_iteration.each
|
|
104
|
-
yield(doc)
|
|
105
|
-
end
|
|
100
|
+
documents_for_iteration.each(&block)
|
|
106
101
|
self
|
|
107
102
|
else
|
|
108
103
|
to_enum
|
|
@@ -143,14 +138,19 @@ module Mongoid
|
|
|
143
138
|
#
|
|
144
139
|
# @return [ Document ] The first document.
|
|
145
140
|
def first(limit = nil)
|
|
146
|
-
|
|
147
|
-
|
|
141
|
+
use_first = limit.nil?
|
|
142
|
+
limit ||= 1
|
|
143
|
+
if criteria.use_lookup?
|
|
144
|
+
@criteria = criteria.limit(limit)
|
|
145
|
+
result = eager_load_with_lookup
|
|
148
146
|
else
|
|
149
|
-
eager_load(
|
|
147
|
+
result = eager_load(documents.first(limit))
|
|
150
148
|
end
|
|
149
|
+
|
|
150
|
+
use_first ? result.first : result
|
|
151
151
|
end
|
|
152
|
-
alias
|
|
153
|
-
alias
|
|
152
|
+
alias one first
|
|
153
|
+
alias find_first first
|
|
154
154
|
|
|
155
155
|
# Get the first document in the database for the criteria's selector or
|
|
156
156
|
# raise an error if none is found.
|
|
@@ -174,20 +174,10 @@ module Mongoid
|
|
|
174
174
|
# @param [ Criteria ] criteria The criteria.
|
|
175
175
|
def initialize(criteria)
|
|
176
176
|
@criteria, @klass = criteria, criteria.klass
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
# the middle of that would leave a half-built client behind.
|
|
182
|
-
if (first = criteria.documents.first)
|
|
183
|
-
@root = first._root
|
|
184
|
-
@collection = @root.collection
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
# One regexp budget covers the whole scan, so that the limit bounds the
|
|
188
|
-
# query rather than each document individually.
|
|
189
|
-
@documents = Matcher::RegexpBudget.open(criteria.selector) do
|
|
190
|
-
criteria.documents.select { |doc| doc._matches?(criteria.selector) }
|
|
177
|
+
@documents = criteria.documents.select do |doc|
|
|
178
|
+
@root ||= doc._root
|
|
179
|
+
@collection ||= root.collection
|
|
180
|
+
doc._matches?(criteria.selector)
|
|
191
181
|
end
|
|
192
182
|
apply_sorting
|
|
193
183
|
apply_options
|
|
@@ -219,7 +209,7 @@ module Mongoid
|
|
|
219
209
|
if limit
|
|
220
210
|
eager_load(documents.last(limit))
|
|
221
211
|
else
|
|
222
|
-
eager_load([documents.last]).first
|
|
212
|
+
eager_load([ documents.last ]).first
|
|
223
213
|
end
|
|
224
214
|
end
|
|
225
215
|
|
|
@@ -246,7 +236,7 @@ module Mongoid
|
|
|
246
236
|
def length
|
|
247
237
|
documents.length
|
|
248
238
|
end
|
|
249
|
-
alias
|
|
239
|
+
alias size length
|
|
250
240
|
|
|
251
241
|
# Limits the number of documents that are returned.
|
|
252
242
|
#
|
|
@@ -284,9 +274,9 @@ module Mongoid
|
|
|
284
274
|
#
|
|
285
275
|
# @return [ Object | Array<Object> ] The picked values.
|
|
286
276
|
def pick(*fields)
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
277
|
+
return unless doc = documents.first
|
|
278
|
+
|
|
279
|
+
pluck_from_doc(doc, *fields)
|
|
290
280
|
end
|
|
291
281
|
|
|
292
282
|
# Tally the field values in memory.
|
|
@@ -298,7 +288,7 @@ module Mongoid
|
|
|
298
288
|
#
|
|
299
289
|
# @return [ Hash ] The hash of counts.
|
|
300
290
|
def tally(field)
|
|
301
|
-
|
|
291
|
+
documents.each_with_object({}) do |d, acc|
|
|
302
292
|
v = retrieve_value_at_path(d, field)
|
|
303
293
|
acc[v] ||= 0
|
|
304
294
|
acc[v] += 1
|
|
@@ -317,7 +307,7 @@ module Mongoid
|
|
|
317
307
|
if limit
|
|
318
308
|
eager_load(documents.take(limit))
|
|
319
309
|
else
|
|
320
|
-
eager_load([documents.first]).first
|
|
310
|
+
eager_load([ documents.first ]).first
|
|
321
311
|
end
|
|
322
312
|
end
|
|
323
313
|
|
|
@@ -392,7 +382,7 @@ module Mongoid
|
|
|
392
382
|
#
|
|
393
383
|
# @return [ Document ] The second document.
|
|
394
384
|
def second
|
|
395
|
-
eager_load([documents.second]).first
|
|
385
|
+
eager_load([ documents.second ]).first
|
|
396
386
|
end
|
|
397
387
|
|
|
398
388
|
# Get the second document in the database for the criteria's selector or
|
|
@@ -416,7 +406,7 @@ module Mongoid
|
|
|
416
406
|
#
|
|
417
407
|
# @return [ Document ] The third document.
|
|
418
408
|
def third
|
|
419
|
-
eager_load([documents.third]).first
|
|
409
|
+
eager_load([ documents.third ]).first
|
|
420
410
|
end
|
|
421
411
|
|
|
422
412
|
# Get the third document in the database for the criteria's selector or
|
|
@@ -440,7 +430,7 @@ module Mongoid
|
|
|
440
430
|
#
|
|
441
431
|
# @return [ Document ] The fourth document.
|
|
442
432
|
def fourth
|
|
443
|
-
eager_load([documents.fourth]).first
|
|
433
|
+
eager_load([ documents.fourth ]).first
|
|
444
434
|
end
|
|
445
435
|
|
|
446
436
|
# Get the fourth document in the database for the criteria's selector or
|
|
@@ -464,7 +454,7 @@ module Mongoid
|
|
|
464
454
|
#
|
|
465
455
|
# @return [ Document ] The fifth document.
|
|
466
456
|
def fifth
|
|
467
|
-
eager_load([documents.fifth]).first
|
|
457
|
+
eager_load([ documents.fifth ]).first
|
|
468
458
|
end
|
|
469
459
|
|
|
470
460
|
# Get the fifth document in the database for the criteria's selector or
|
|
@@ -488,7 +478,7 @@ module Mongoid
|
|
|
488
478
|
#
|
|
489
479
|
# @return [ Document ] The second to last document.
|
|
490
480
|
def second_to_last
|
|
491
|
-
eager_load([documents.second_to_last]).first
|
|
481
|
+
eager_load([ documents.second_to_last ]).first
|
|
492
482
|
end
|
|
493
483
|
|
|
494
484
|
# Get the second to last document in the database for the criteria's selector or
|
|
@@ -512,7 +502,7 @@ module Mongoid
|
|
|
512
502
|
#
|
|
513
503
|
# @return [ Document ] The third to last document.
|
|
514
504
|
def third_to_last
|
|
515
|
-
eager_load([documents.third_to_last]).first
|
|
505
|
+
eager_load([ documents.third_to_last ]).first
|
|
516
506
|
end
|
|
517
507
|
|
|
518
508
|
# Get the third to last document in the database for the criteria's selector or
|
|
@@ -531,6 +521,14 @@ module Mongoid
|
|
|
531
521
|
|
|
532
522
|
private
|
|
533
523
|
|
|
524
|
+
# Returns materialized documents for use in the cross-cluster $lookup
|
|
525
|
+
# fallback. In the memory context, documents are already instantiated.
|
|
526
|
+
#
|
|
527
|
+
# @api private
|
|
528
|
+
def docs_for_lookup_fallback
|
|
529
|
+
documents
|
|
530
|
+
end
|
|
531
|
+
|
|
534
532
|
# Get the documents the context should iterate. This follows 3 rules:
|
|
535
533
|
#
|
|
536
534
|
# @api private
|
|
@@ -542,7 +540,7 @@ module Mongoid
|
|
|
542
540
|
def documents_for_iteration
|
|
543
541
|
docs = documents[skipping || 0, limiting || documents.length] || []
|
|
544
542
|
if eager_loadable?
|
|
545
|
-
eager_load(docs)
|
|
543
|
+
criteria.use_lookup? ? eager_load_with_lookup : eager_load(docs)
|
|
546
544
|
end
|
|
547
545
|
docs
|
|
548
546
|
end
|
|
@@ -558,14 +556,15 @@ module Mongoid
|
|
|
558
556
|
# @param [ Array<Document> ] docs The docs to update.
|
|
559
557
|
def update_documents(attributes, docs)
|
|
560
558
|
return false if !attributes || docs.empty?
|
|
561
|
-
|
|
559
|
+
|
|
560
|
+
updates = { '$set' => {} }
|
|
562
561
|
docs.each do |doc|
|
|
563
562
|
@selector ||= root.atomic_selector
|
|
564
563
|
doc.write_attributes(attributes)
|
|
565
|
-
updates[
|
|
564
|
+
updates['$set'].merge!(doc.atomic_updates['$set'] || {})
|
|
566
565
|
doc.move_changes
|
|
567
566
|
end
|
|
568
|
-
collection.find(selector).update_one(updates, session: _session) unless updates[
|
|
567
|
+
collection.find(selector).update_one(updates, session: _session) unless updates['$set'].empty?
|
|
569
568
|
end
|
|
570
569
|
|
|
571
570
|
# Get the limiting value.
|
|
@@ -588,9 +587,7 @@ module Mongoid
|
|
|
588
587
|
# @param [ Integer ] value The limit.
|
|
589
588
|
#
|
|
590
589
|
# @return [ Integer ] The limit.
|
|
591
|
-
|
|
592
|
-
@limiting = value
|
|
593
|
-
end
|
|
590
|
+
attr_writer :limiting
|
|
594
591
|
|
|
595
592
|
# Get the skipping value.
|
|
596
593
|
#
|
|
@@ -612,9 +609,7 @@ module Mongoid
|
|
|
612
609
|
# @param [ Integer ] value The skip.
|
|
613
610
|
#
|
|
614
611
|
# @return [ Integer ] The skip.
|
|
615
|
-
|
|
616
|
-
@skipping = value
|
|
617
|
-
end
|
|
612
|
+
attr_writer :skipping
|
|
618
613
|
|
|
619
614
|
# Apply criteria options.
|
|
620
615
|
#
|
|
@@ -626,6 +621,7 @@ module Mongoid
|
|
|
626
621
|
# @return [ Memory ] self.
|
|
627
622
|
def apply_options
|
|
628
623
|
raise Errors::InMemoryCollationNotSupported.new if criteria.options[:collation]
|
|
624
|
+
|
|
629
625
|
skip(criteria.options[:skip]).limit(criteria.options[:limit])
|
|
630
626
|
end
|
|
631
627
|
|
|
@@ -634,9 +630,9 @@ module Mongoid
|
|
|
634
630
|
# @example Apply the sorting params.
|
|
635
631
|
# context.apply_sorting
|
|
636
632
|
def apply_sorting
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
633
|
+
return unless spec = criteria.options[:sort]
|
|
634
|
+
|
|
635
|
+
in_place_sort(spec)
|
|
640
636
|
end
|
|
641
637
|
|
|
642
638
|
# Compare two values, handling the cases when
|
|
@@ -689,8 +685,6 @@ module Mongoid
|
|
|
689
685
|
doc.destroyed = true
|
|
690
686
|
end
|
|
691
687
|
|
|
692
|
-
private
|
|
693
|
-
|
|
694
688
|
def _session
|
|
695
689
|
@criteria.send(:_session)
|
|
696
690
|
end
|
|
@@ -734,29 +728,31 @@ module Mongoid
|
|
|
734
728
|
# doesn't exist.
|
|
735
729
|
def retrieve_value_at_path(document, field_path)
|
|
736
730
|
return if field_path.blank? || !document
|
|
731
|
+
|
|
737
732
|
segment, remaining = field_path.to_s.split('.', 2)
|
|
738
733
|
|
|
739
734
|
curr = if document.is_a?(Document)
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
735
|
+
# Retrieves field for segment to check localization. Only does one
|
|
736
|
+
# iteration since there's no dots
|
|
737
|
+
res = if remaining
|
|
738
|
+
field = document.class.traverse_association_tree(segment)
|
|
739
|
+
# If this is a localized field, and there are remaining, get the
|
|
740
|
+
# _translations hash so that we can get the specified translation in
|
|
741
|
+
# the remaining
|
|
742
|
+
document.send("#{segment}_translations") if field&.localized?
|
|
743
|
+
end
|
|
744
|
+
meth = klass.aliased_associations[segment] || segment
|
|
745
|
+
res.nil? ? document.try(meth) : res
|
|
746
|
+
elsif document.is_a?(Hash)
|
|
747
|
+
# TODO: Remove the indifferent access when implementing MONGOID-5410.
|
|
748
|
+
if document.key?(segment.to_s)
|
|
749
|
+
document[segment.to_s]
|
|
750
|
+
else
|
|
751
|
+
document[segment.to_sym]
|
|
752
|
+
end
|
|
753
|
+
else
|
|
754
|
+
nil
|
|
755
|
+
end
|
|
760
756
|
|
|
761
757
|
return curr unless remaining
|
|
762
758
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
require "mongoid/association/eager_loadable"
|
|
1
|
+
require 'mongoid/association/eager_loadable'
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Contextual
|
|
@@ -30,7 +29,7 @@ module Mongoid
|
|
|
30
29
|
# @return [ Concurrent::ThreadPoolExecutor ] The executor
|
|
31
30
|
# to be used to execute document loading tasks.
|
|
32
31
|
def self.global_thread_pool_async_query_executor
|
|
33
|
-
create_pool =
|
|
32
|
+
create_pool = proc do |concurrency|
|
|
34
33
|
Concurrent::ThreadPoolExecutor.new(
|
|
35
34
|
min_threads: 0,
|
|
36
35
|
max_threads: concurrency,
|