mongoid 7.3.2 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +17 -17
- data/README.md +2 -2
- data/lib/config/locales/en.yml +30 -16
- data/lib/mongoid/association/accessors.rb +0 -27
- data/lib/mongoid/association/bindable.rb +0 -21
- data/lib/mongoid/association/builders.rb +0 -9
- data/lib/mongoid/association/constrainable.rb +0 -3
- data/lib/mongoid/association/depending.rb +0 -7
- data/lib/mongoid/association/eager_loadable.rb +0 -3
- data/lib/mongoid/association/embedded/batchable.rb +11 -39
- data/lib/mongoid/association/embedded/cyclic.rb +2 -11
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +0 -13
- data/lib/mongoid/association/embedded/embedded_in.rb +0 -23
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +31 -44
- data/lib/mongoid/association/embedded/embeds_many.rb +0 -31
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +26 -14
- data/lib/mongoid/association/embedded/embeds_one.rb +0 -27
- data/lib/mongoid/association/embedded.rb +0 -1
- data/lib/mongoid/association/macros.rb +6 -5
- data/lib/mongoid/association/many.rb +0 -17
- data/lib/mongoid/association/marshalable.rb +0 -5
- data/lib/mongoid/association/nested/many.rb +0 -11
- data/lib/mongoid/association/nested/nested_buildable.rb +0 -9
- data/lib/mongoid/association/nested/one.rb +1 -16
- data/lib/mongoid/association/nested.rb +0 -3
- data/lib/mongoid/association/one.rb +1 -10
- data/lib/mongoid/association/options.rb +0 -33
- data/lib/mongoid/association/proxy.rb +0 -21
- data/lib/mongoid/association/referenced/auto_save.rb +0 -9
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +0 -7
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +4 -5
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +0 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +0 -13
- data/lib/mongoid/association/referenced/belongs_to.rb +9 -34
- data/lib/mongoid/association/referenced/counter_cache.rb +2 -15
- data/lib/mongoid/association/referenced/eager.rb +3 -24
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -5
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +0 -3
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +12 -39
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +11 -38
- data/lib/mongoid/association/referenced/has_many/binding.rb +0 -5
- data/lib/mongoid/association/referenced/has_many/buildable.rb +0 -3
- data/lib/mongoid/association/referenced/has_many/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +11 -63
- data/lib/mongoid/association/referenced/has_many/proxy.rb +18 -61
- data/lib/mongoid/association/referenced/has_many.rb +12 -39
- data/lib/mongoid/association/referenced/has_one/binding.rb +0 -7
- data/lib/mongoid/association/referenced/has_one/buildable.rb +3 -4
- data/lib/mongoid/association/referenced/has_one/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -15
- data/lib/mongoid/association/referenced/has_one/proxy.rb +0 -9
- data/lib/mongoid/association/referenced/has_one.rb +9 -32
- data/lib/mongoid/association/referenced/syncable.rb +0 -17
- data/lib/mongoid/association/referenced.rb +0 -1
- data/lib/mongoid/association/reflections.rb +0 -1
- data/lib/mongoid/association/relatable.rb +2 -61
- data/lib/mongoid/association.rb +0 -17
- data/lib/mongoid/atomic/modifiers.rb +4 -51
- data/lib/mongoid/atomic/paths/embedded/many.rb +0 -5
- data/lib/mongoid/atomic/paths/embedded/one.rb +0 -5
- data/lib/mongoid/atomic/paths/embedded.rb +0 -3
- data/lib/mongoid/atomic/paths/root.rb +0 -5
- data/lib/mongoid/atomic/paths.rb +0 -1
- data/lib/mongoid/atomic.rb +27 -44
- data/lib/mongoid/attributes/dynamic.rb +0 -17
- data/lib/mongoid/attributes/nested.rb +0 -5
- data/lib/mongoid/attributes/processing.rb +1 -18
- data/lib/mongoid/attributes/projector.rb +0 -1
- data/lib/mongoid/attributes/readonly.rb +0 -5
- data/lib/mongoid/attributes.rb +0 -33
- data/lib/mongoid/cacheable.rb +1 -6
- data/lib/mongoid/changeable.rb +3 -59
- data/lib/mongoid/clients/factory.rb +0 -7
- data/lib/mongoid/clients/options.rb +0 -5
- data/lib/mongoid/clients/sessions.rb +0 -7
- data/lib/mongoid/clients/storage_options.rb +0 -7
- data/lib/mongoid/clients/validators/storage.rb +0 -9
- data/lib/mongoid/clients/validators.rb +0 -1
- data/lib/mongoid/clients.rb +0 -9
- data/lib/mongoid/composable.rb +0 -7
- data/lib/mongoid/config/environment.rb +13 -6
- data/lib/mongoid/config/options.rb +0 -11
- data/lib/mongoid/config/validators/client.rb +0 -17
- data/lib/mongoid/config/validators/option.rb +0 -3
- data/lib/mongoid/config/validators.rb +0 -1
- data/lib/mongoid/config.rb +37 -29
- data/lib/mongoid/contextual/aggregable/memory.rb +14 -11
- data/lib/mongoid/contextual/aggregable/mongo.rb +15 -20
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +7 -27
- data/lib/mongoid/contextual/command.rb +0 -5
- data/lib/mongoid/contextual/geo_near.rb +1 -34
- data/lib/mongoid/contextual/map_reduce.rb +0 -31
- data/lib/mongoid/contextual/memory.rb +4 -59
- data/lib/mongoid/contextual/mongo.rb +132 -78
- data/lib/mongoid/contextual/none.rb +42 -28
- data/lib/mongoid/contextual/queryable.rb +0 -3
- data/lib/mongoid/contextual.rb +0 -5
- data/lib/mongoid/copyable.rb +0 -5
- data/lib/mongoid/criteria/findable.rb +0 -13
- data/lib/mongoid/criteria/includable.rb +0 -9
- data/lib/mongoid/criteria/inspectable.rb +0 -3
- data/lib/mongoid/criteria/marshalable.rb +0 -5
- data/lib/mongoid/criteria/modifiable.rb +0 -19
- data/lib/mongoid/criteria/options.rb +0 -3
- data/lib/mongoid/criteria/permission.rb +0 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +0 -13
- data/lib/mongoid/criteria/queryable/expandable.rb +0 -1
- data/lib/mongoid/criteria/queryable/extensions/array.rb +1 -26
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/date.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +0 -5
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -25
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +0 -13
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +0 -11
- data/lib/mongoid/criteria/queryable/extensions/object.rb +1 -28
- data/lib/mongoid/criteria/queryable/extensions/range.rb +38 -16
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +0 -9
- data/lib/mongoid/criteria/queryable/extensions/set.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/string.rb +0 -17
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +0 -9
- data/lib/mongoid/criteria/queryable/extensions/time.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions.rb +0 -1
- data/lib/mongoid/criteria/queryable/key.rb +1 -14
- data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -30
- data/lib/mongoid/criteria/queryable/optional.rb +0 -45
- data/lib/mongoid/criteria/queryable/options.rb +0 -19
- data/lib/mongoid/criteria/queryable/pipeline.rb +0 -13
- data/lib/mongoid/criteria/queryable/selectable.rb +22 -69
- data/lib/mongoid/criteria/queryable/selector.rb +0 -17
- data/lib/mongoid/criteria/queryable/smash.rb +0 -11
- data/lib/mongoid/criteria/queryable/storable.rb +11 -7
- data/lib/mongoid/criteria/queryable.rb +0 -7
- data/lib/mongoid/criteria/scopable.rb +25 -19
- data/lib/mongoid/criteria.rb +0 -57
- data/lib/mongoid/document.rb +3 -53
- data/lib/mongoid/equality.rb +26 -10
- data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
- data/lib/mongoid/errors/callback.rb +0 -3
- data/lib/mongoid/errors/criteria_argument_required.rb +0 -1
- data/lib/mongoid/errors/delete_restriction.rb +0 -3
- data/lib/mongoid/errors/document_not_destroyed.rb +2 -7
- data/lib/mongoid/errors/document_not_found.rb +0 -9
- data/lib/mongoid/errors/eager_load.rb +0 -3
- data/lib/mongoid/errors/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +0 -3
- data/lib/mongoid/errors/invalid_collection.rb +0 -1
- data/lib/mongoid/errors/invalid_config_file.rb +25 -0
- data/lib/mongoid/errors/invalid_config_option.rb +0 -3
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +0 -3
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +0 -1
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +0 -1
- data/lib/mongoid/errors/invalid_expression_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_field.rb +0 -5
- data/lib/mongoid/errors/invalid_field_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_field_option.rb +0 -3
- data/lib/mongoid/errors/invalid_find.rb +0 -3
- data/lib/mongoid/errors/invalid_includes.rb +0 -3
- data/lib/mongoid/errors/invalid_index.rb +0 -3
- data/lib/mongoid/errors/invalid_options.rb +0 -3
- data/lib/mongoid/errors/invalid_path.rb +0 -3
- data/lib/mongoid/errors/invalid_persistence_option.rb +0 -5
- data/lib/mongoid/errors/invalid_query.rb +0 -1
- data/lib/mongoid/errors/invalid_relation.rb +0 -7
- data/lib/mongoid/errors/invalid_relation_option.rb +0 -3
- data/lib/mongoid/errors/invalid_scope.rb +0 -3
- data/lib/mongoid/errors/invalid_session_use.rb +1 -6
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +0 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +0 -3
- data/lib/mongoid/errors/invalid_storage_parent.rb +0 -3
- data/lib/mongoid/errors/invalid_time.rb +0 -3
- data/lib/mongoid/errors/invalid_value.rb +0 -1
- data/lib/mongoid/errors/inverse_not_found.rb +0 -3
- data/lib/mongoid/errors/mixed_client_configuration.rb +0 -3
- data/lib/mongoid/errors/mixed_relations.rb +0 -3
- data/lib/mongoid/errors/mongoid_error.rb +0 -9
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +0 -3
- data/lib/mongoid/errors/no_client_config.rb +0 -3
- data/lib/mongoid/errors/no_client_database.rb +0 -3
- data/lib/mongoid/errors/no_client_hosts.rb +0 -3
- data/lib/mongoid/errors/no_clients_config.rb +0 -3
- data/lib/mongoid/errors/no_default_client.rb +0 -3
- data/lib/mongoid/errors/no_environment.rb +0 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +0 -3
- data/lib/mongoid/errors/no_metadata.rb +0 -3
- data/lib/mongoid/errors/no_parent.rb +0 -3
- data/lib/mongoid/errors/readonly_attribute.rb +0 -3
- data/lib/mongoid/errors/readonly_document.rb +1 -6
- data/lib/mongoid/errors/scope_overwrite.rb +0 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +0 -1
- data/lib/mongoid/errors/unknown_attribute.rb +0 -3
- data/lib/mongoid/errors/unknown_model.rb +0 -3
- data/lib/mongoid/errors/unsaved_document.rb +1 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +0 -3
- data/lib/mongoid/errors/validations.rb +0 -1
- data/lib/mongoid/errors.rb +2 -1
- data/lib/mongoid/evolvable.rb +0 -3
- data/lib/mongoid/extensions/array.rb +3 -29
- data/lib/mongoid/extensions/big_decimal.rb +0 -11
- data/lib/mongoid/extensions/boolean.rb +0 -3
- data/lib/mongoid/extensions/date.rb +0 -9
- data/lib/mongoid/extensions/date_time.rb +0 -9
- data/lib/mongoid/extensions/decimal128.rb +0 -5
- data/lib/mongoid/extensions/false_class.rb +1 -6
- data/lib/mongoid/extensions/float.rb +0 -7
- data/lib/mongoid/extensions/hash.rb +0 -27
- data/lib/mongoid/extensions/integer.rb +0 -9
- data/lib/mongoid/extensions/module.rb +0 -3
- data/lib/mongoid/extensions/nil_class.rb +0 -5
- data/lib/mongoid/extensions/object.rb +1 -40
- data/lib/mongoid/extensions/object_id.rb +0 -7
- data/lib/mongoid/extensions/range.rb +0 -11
- data/lib/mongoid/extensions/regexp.rb +0 -3
- data/lib/mongoid/extensions/set.rb +0 -7
- data/lib/mongoid/extensions/string.rb +1 -30
- data/lib/mongoid/extensions/symbol.rb +0 -7
- data/lib/mongoid/extensions/time.rb +0 -11
- data/lib/mongoid/extensions/time_with_zone.rb +13 -9
- data/lib/mongoid/extensions/true_class.rb +1 -6
- data/lib/mongoid/extensions.rb +15 -3
- data/lib/mongoid/factory.rb +1 -2
- data/lib/mongoid/fields/foreign_key.rb +0 -21
- data/lib/mongoid/fields/localized.rb +0 -11
- data/lib/mongoid/fields/standard.rb +0 -33
- data/lib/mongoid/fields/validators/macro.rb +0 -9
- data/lib/mongoid/fields/validators.rb +0 -1
- data/lib/mongoid/fields.rb +64 -57
- data/lib/mongoid/findable.rb +0 -5
- data/lib/mongoid/indexable/specification.rb +0 -15
- data/lib/mongoid/indexable/validators/options.rb +0 -7
- data/lib/mongoid/indexable.rb +1 -18
- data/lib/mongoid/inspectable.rb +1 -10
- data/lib/mongoid/interceptable.rb +0 -25
- data/lib/mongoid/loggable.rb +0 -9
- data/lib/mongoid/matchable.rb +0 -5
- data/lib/mongoid/matcher/eq_impl.rb +37 -2
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +6 -1
- data/lib/mongoid/persistable/creatable.rb +1 -20
- data/lib/mongoid/persistable/deletable.rb +0 -17
- data/lib/mongoid/persistable/destroyable.rb +0 -7
- data/lib/mongoid/persistable/incrementable.rb +0 -5
- data/lib/mongoid/persistable/logical.rb +0 -5
- data/lib/mongoid/persistable/poppable.rb +0 -5
- data/lib/mongoid/persistable/pullable.rb +0 -7
- data/lib/mongoid/persistable/pushable.rb +0 -7
- data/lib/mongoid/persistable/renamable.rb +0 -5
- data/lib/mongoid/persistable/savable.rb +0 -7
- data/lib/mongoid/persistable/settable.rb +0 -5
- data/lib/mongoid/persistable/unsettable.rb +0 -5
- data/lib/mongoid/persistable/updatable.rb +2 -17
- data/lib/mongoid/persistable/upsertable.rb +0 -7
- data/lib/mongoid/persistable.rb +0 -23
- data/lib/mongoid/persistence_context.rb +3 -28
- data/lib/mongoid/positional.rb +0 -5
- data/lib/mongoid/query_cache.rb +11 -34
- data/lib/mongoid/railtie.rb +0 -15
- data/lib/mongoid/railties/controller_runtime.rb +0 -1
- data/lib/mongoid/reloadable.rb +4 -16
- data/lib/mongoid/scopable.rb +6 -34
- data/lib/mongoid/selectable.rb +0 -9
- data/lib/mongoid/serializable.rb +0 -15
- data/lib/mongoid/shardable.rb +0 -7
- data/lib/mongoid/stateful.rb +0 -9
- data/lib/mongoid/stringified_symbol.rb +2 -3
- data/lib/mongoid/tasks/database.rb +1 -6
- data/lib/mongoid/threaded/lifecycle.rb +0 -21
- data/lib/mongoid/threaded.rb +0 -55
- data/lib/mongoid/timestamps/created/short.rb +0 -1
- data/lib/mongoid/timestamps/created.rb +0 -1
- data/lib/mongoid/timestamps/short.rb +0 -1
- data/lib/mongoid/timestamps/timeless.rb +0 -7
- data/lib/mongoid/timestamps/updated/short.rb +0 -1
- data/lib/mongoid/timestamps/updated.rb +0 -3
- data/lib/mongoid/timestamps.rb +0 -1
- data/lib/mongoid/touchable.rb +10 -7
- data/lib/mongoid/traversable.rb +64 -53
- data/lib/mongoid/validatable/associated.rb +0 -3
- data/lib/mongoid/validatable/format.rb +0 -1
- data/lib/mongoid/validatable/length.rb +0 -1
- data/lib/mongoid/validatable/localizable.rb +0 -3
- data/lib/mongoid/validatable/macros.rb +0 -7
- data/lib/mongoid/validatable/presence.rb +1 -8
- data/lib/mongoid/validatable/queryable.rb +0 -3
- data/lib/mongoid/validatable/uniqueness.rb +15 -30
- data/lib/mongoid/validatable.rb +1 -22
- data/lib/mongoid/version.rb +1 -2
- data/lib/mongoid.rb +0 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid_generator.rb +0 -1
- data/lib/rails/mongoid.rb +0 -3
- data/spec/integration/app_spec.rb +0 -1
- data/spec/integration/associations/belongs_to_spec.rb +0 -1
- data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
- data/spec/integration/associations/embedded_spec.rb +0 -1
- data/spec/integration/associations/embeds_many_spec.rb +139 -1
- data/spec/integration/associations/embeds_one_spec.rb +0 -1
- data/spec/integration/associations/foreign_key_spec.rb +0 -1
- data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
- data/spec/integration/associations/has_many_spec.rb +0 -1
- data/spec/integration/associations/has_one_spec.rb +0 -1
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
- data/spec/integration/associations/reverse_population_spec.rb +0 -1
- data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
- data/spec/integration/associations/scope_option_spec.rb +101 -0
- data/spec/integration/atomic/modifiers_spec.rb +0 -1
- data/spec/integration/bson_regexp_raw_spec.rb +0 -1
- data/spec/integration/callbacks_models.rb +12 -0
- data/spec/integration/callbacks_spec.rb +18 -6
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +0 -1
- data/spec/integration/criteria/default_scope_spec.rb +51 -0
- data/spec/integration/criteria/logical_spec.rb +30 -0
- data/spec/integration/criteria/range_spec.rb +265 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
- data/spec/integration/discriminator_key_spec.rb +0 -1
- data/spec/integration/discriminator_value_spec.rb +0 -1
- data/spec/integration/document_spec.rb +0 -1
- data/spec/integration/i18n_fallbacks_spec.rb +0 -1
- data/spec/integration/matcher_examples_spec.rb +0 -1
- data/spec/integration/matcher_operator_spec.rb +27 -3
- data/spec/integration/matcher_spec.rb +95 -1
- data/spec/integration/server_query_spec.rb +0 -1
- data/spec/integration/shardable_spec.rb +0 -1
- data/spec/integration/stringified_symbol_field_spec.rb +16 -3
- data/spec/lite_spec_helper.rb +8 -2
- data/spec/mongoid/association/accessors_spec.rb +44 -15
- data/spec/mongoid/association/auto_save_spec.rb +72 -34
- data/spec/mongoid/association/builders_spec.rb +1 -2
- data/spec/mongoid/association/constrainable_spec.rb +0 -1
- data/spec/mongoid/association/counter_cache_spec.rb +32 -33
- data/spec/mongoid/association/depending_spec.rb +12 -13
- data/spec/mongoid/association/eager_spec.rb +4 -5
- data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
- data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +384 -135
- data/spec/mongoid/association/embedded/embeds_many_models.rb +16 -1
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
- data/spec/mongoid/association/macros_spec.rb +9 -10
- data/spec/mongoid/association/nested/many_spec.rb +0 -1
- data/spec/mongoid/association/nested/one_spec.rb +0 -1
- data/spec/mongoid/association/options_spec.rb +0 -1
- data/spec/mongoid/association/polymorphic_spec.rb +0 -1
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +20 -1
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +179 -154
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +303 -125
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +227 -164
- data/spec/mongoid/association/referenced/has_many_models.rb +35 -1
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
- data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
- data/spec/mongoid/association/reflections_spec.rb +0 -1
- data/spec/mongoid/association/syncable_spec.rb +31 -32
- data/spec/mongoid/association_spec.rb +0 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
- data/spec/mongoid/atomic/paths_spec.rb +0 -1
- data/spec/mongoid/atomic_spec.rb +6 -7
- data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
- data/spec/mongoid/attributes/nested_spec.rb +66 -67
- data/spec/mongoid/attributes/projector_spec.rb +5 -2
- data/spec/mongoid/attributes/readonly_spec.rb +22 -23
- data/spec/mongoid/attributes_spec.rb +32 -33
- data/spec/mongoid/cacheable_spec.rb +1 -2
- data/spec/mongoid/changeable_spec.rb +35 -36
- data/spec/mongoid/clients/factory_spec.rb +9 -4
- data/spec/mongoid/clients/options_spec.rb +15 -10
- data/spec/mongoid/clients/sessions_spec.rb +22 -23
- data/spec/mongoid/clients/transactions_spec.rb +49 -27
- data/spec/mongoid/clients_spec.rb +6 -7
- data/spec/mongoid/composable_spec.rb +0 -1
- data/spec/mongoid/config/environment_spec.rb +86 -9
- data/spec/mongoid/config/options_spec.rb +0 -1
- data/spec/mongoid/config_spec.rb +194 -17
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
- data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
- data/spec/mongoid/contextual/atomic_spec.rb +109 -71
- data/spec/mongoid/contextual/geo_near_spec.rb +18 -19
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
- data/spec/mongoid/contextual/memory_spec.rb +23 -24
- data/spec/mongoid/contextual/mongo_spec.rb +339 -77
- data/spec/mongoid/contextual/none_spec.rb +7 -82
- data/spec/mongoid/copyable_spec.rb +11 -12
- data/spec/mongoid/copyable_spec_models.rb +0 -1
- data/spec/mongoid/criteria/findable_spec.rb +23 -24
- data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
- data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
- data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
- data/spec/mongoid/criteria/options_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
- data/spec/mongoid/criteria/scopable_spec.rb +127 -1
- data/spec/mongoid/criteria_projection_spec.rb +3 -4
- data/spec/mongoid/criteria_spec.rb +546 -186
- data/spec/mongoid/document_fields_spec.rb +0 -1
- data/spec/mongoid/document_persistence_context_spec.rb +0 -1
- data/spec/mongoid/document_query_spec.rb +0 -1
- data/spec/mongoid/document_spec.rb +32 -34
- data/spec/mongoid/equality_spec.rb +142 -41
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
- data/spec/mongoid/errors/callback_spec.rb +0 -1
- data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
- data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/eager_load_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
- data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
- data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
- data/spec/mongoid/errors/mongoid_error_spec.rb +0 -1
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
- data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
- data/spec/mongoid/errors/no_environment_spec.rb +0 -1
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
- data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
- data/spec/mongoid/errors/no_parent_spec.rb +0 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
- data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
- data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
- data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
- data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
- data/spec/mongoid/errors/validations_spec.rb +0 -1
- data/spec/mongoid/extensions/array_spec.rb +0 -1
- data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
- data/spec/mongoid/extensions/binary_spec.rb +0 -1
- data/spec/mongoid/extensions/boolean_spec.rb +0 -1
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
- data/spec/mongoid/extensions/date_spec.rb +0 -1
- data/spec/mongoid/extensions/date_time_spec.rb +0 -1
- data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
- data/spec/mongoid/extensions/false_class_spec.rb +0 -1
- data/spec/mongoid/extensions/float_spec.rb +0 -1
- data/spec/mongoid/extensions/hash_spec.rb +0 -1
- data/spec/mongoid/extensions/integer_spec.rb +0 -1
- data/spec/mongoid/extensions/module_spec.rb +0 -1
- data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
- data/spec/mongoid/extensions/object_id_spec.rb +0 -1
- data/spec/mongoid/extensions/object_spec.rb +0 -1
- data/spec/mongoid/extensions/range_spec.rb +0 -1
- data/spec/mongoid/extensions/regexp_spec.rb +0 -1
- data/spec/mongoid/extensions/set_spec.rb +0 -1
- data/spec/mongoid/extensions/string_spec.rb +2 -3
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
- data/spec/mongoid/extensions/symbol_spec.rb +0 -1
- data/spec/mongoid/extensions/time_spec.rb +0 -1
- data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
- data/spec/mongoid/extensions/true_class_spec.rb +0 -1
- data/spec/mongoid/extensions_spec.rb +14 -3
- data/spec/mongoid/factory_spec.rb +1 -1
- data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
- data/spec/mongoid/fields/localized_spec.rb +0 -1
- data/spec/mongoid/fields/standard_spec.rb +0 -1
- data/spec/mongoid/fields_spec.rb +326 -31
- data/spec/mongoid/findable_spec.rb +21 -22
- data/spec/mongoid/indexable/specification_spec.rb +0 -1
- data/spec/mongoid/indexable_spec.rb +0 -1
- data/spec/mongoid/inspectable_spec.rb +0 -1
- data/spec/mongoid/interceptable_spec.rb +102 -95
- data/spec/mongoid/loggable_spec.rb +0 -1
- data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
- data/spec/mongoid/persistable/creatable_spec.rb +2 -3
- data/spec/mongoid/persistable/deletable_spec.rb +18 -19
- data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
- data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
- data/spec/mongoid/persistable/logical_spec.rb +4 -5
- data/spec/mongoid/persistable/poppable_spec.rb +4 -5
- data/spec/mongoid/persistable/pullable_spec.rb +8 -9
- data/spec/mongoid/persistable/pushable_spec.rb +8 -9
- data/spec/mongoid/persistable/renamable_spec.rb +3 -4
- data/spec/mongoid/persistable/savable_spec.rb +15 -11
- data/spec/mongoid/persistable/settable_spec.rb +9 -10
- data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
- data/spec/mongoid/persistable/updatable_spec.rb +43 -24
- data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
- data/spec/mongoid/persistable_spec.rb +1 -2
- data/spec/mongoid/persistence_context_spec.rb +0 -1
- data/spec/mongoid/positional_spec.rb +0 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
- data/spec/mongoid/query_cache_spec.rb +56 -10
- data/spec/mongoid/relations/proxy_spec.rb +6 -7
- data/spec/mongoid/reloadable_spec.rb +209 -23
- data/spec/mongoid/scopable_spec.rb +65 -22
- data/spec/mongoid/selectable_spec.rb +6 -7
- data/spec/mongoid/serializable_spec.rb +9 -10
- data/spec/mongoid/shardable_spec.rb +2 -3
- data/spec/mongoid/stateful_spec.rb +1 -2
- data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
- data/spec/mongoid/tasks/database_spec.rb +0 -1
- data/spec/mongoid/threaded_spec.rb +2 -3
- data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
- data/spec/mongoid/timestamps/created_spec.rb +1 -2
- data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
- data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
- data/spec/mongoid/timestamps/updated_spec.rb +3 -4
- data/spec/mongoid/timestamps_spec.rb +6 -7
- data/spec/mongoid/touchable_spec.rb +33 -20
- data/spec/mongoid/touchable_spec_models.rb +2 -1
- data/spec/mongoid/traversable_spec.rb +65 -2
- data/spec/mongoid/validatable/associated_spec.rb +0 -1
- data/spec/mongoid/validatable/format_spec.rb +0 -1
- data/spec/mongoid/validatable/length_spec.rb +0 -1
- data/spec/mongoid/validatable/numericality_spec.rb +0 -1
- data/spec/mongoid/validatable/presence_spec.rb +26 -23
- data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
- data/spec/mongoid/validatable_spec.rb +2 -3
- data/spec/mongoid_spec.rb +0 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
- data/spec/rails/mongoid_spec.rb +0 -1
- data/spec/shared/lib/mrss/cluster_config.rb +6 -1
- data/spec/shared/lib/mrss/constraints.rb +23 -5
- data/spec/shared/lib/mrss/docker_runner.rb +1 -1
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +17 -12
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/share/Dockerfile.erb +27 -10
- data/spec/shared/shlib/distro.sh +2 -1
- data/spec/shared/shlib/server.sh +85 -23
- data/spec/shared/shlib/set_env.sh +6 -5
- data/spec/spec_helper.rb +12 -22
- data/spec/support/authorization.rb +0 -1
- data/spec/support/constraints.rb +0 -1
- data/spec/support/expectations.rb +0 -1
- data/spec/support/macros.rb +22 -1
- data/spec/support/models/account.rb +1 -2
- data/spec/support/models/acolyte.rb +0 -1
- data/spec/support/models/actor.rb +0 -1
- data/spec/support/models/actress.rb +0 -1
- data/spec/support/models/address.rb +0 -1
- data/spec/support/models/address_component.rb +0 -1
- data/spec/support/models/address_number.rb +0 -1
- data/spec/support/models/agency.rb +0 -1
- data/spec/support/models/agent.rb +0 -1
- data/spec/support/models/album.rb +0 -1
- data/spec/support/models/alert.rb +0 -1
- data/spec/support/models/animal.rb +0 -1
- data/spec/support/models/answer.rb +0 -1
- data/spec/support/models/appointment.rb +0 -1
- data/spec/support/models/armrest.rb +0 -1
- data/spec/support/models/array_field.rb +0 -1
- data/spec/support/models/article.rb +0 -1
- data/spec/support/models/artist.rb +2 -1
- data/spec/support/models/artwork.rb +0 -1
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/support/models/audio.rb +0 -1
- data/spec/support/models/augmentation.rb +0 -1
- data/spec/support/models/author.rb +0 -1
- data/spec/support/models/baby.rb +0 -1
- data/spec/support/models/band.rb +4 -1
- data/spec/support/models/bar.rb +0 -1
- data/spec/support/models/basic.rb +0 -1
- data/spec/support/models/bed.rb +0 -1
- data/spec/support/models/big_palette.rb +0 -1
- data/spec/support/models/birthday.rb +0 -1
- data/spec/support/models/bolt.rb +0 -1
- data/spec/support/models/bomb.rb +0 -1
- data/spec/support/models/book.rb +0 -1
- data/spec/support/models/breed.rb +0 -1
- data/spec/support/models/browser.rb +0 -1
- data/spec/support/models/building.rb +0 -1
- data/spec/support/models/building_address.rb +0 -1
- data/spec/support/models/bus.rb +0 -1
- data/spec/support/models/business.rb +0 -1
- data/spec/support/models/callback_test.rb +0 -1
- data/spec/support/models/canvas.rb +0 -1
- data/spec/support/models/car.rb +0 -1
- data/spec/support/models/cat.rb +0 -1
- data/spec/support/models/category.rb +0 -1
- data/spec/support/models/child.rb +0 -1
- data/spec/support/models/child_doc.rb +3 -4
- data/spec/support/models/church.rb +0 -1
- data/spec/support/models/circle.rb +0 -1
- data/spec/support/models/circuit.rb +0 -1
- data/spec/support/models/circus.rb +0 -1
- data/spec/support/models/code.rb +0 -1
- data/spec/support/models/coding/pull_request.rb +0 -1
- data/spec/support/models/coding.rb +0 -1
- data/spec/support/models/comment.rb +0 -1
- data/spec/support/models/company.rb +0 -1
- data/spec/support/models/consumption_period.rb +0 -1
- data/spec/support/models/contextable_item.rb +0 -1
- data/spec/support/models/contractor.rb +0 -1
- data/spec/support/models/cookie.rb +0 -1
- data/spec/support/models/country_code.rb +2 -1
- data/spec/support/models/courier_job.rb +0 -1
- data/spec/support/models/crate.rb +0 -1
- data/spec/support/models/customer.rb +0 -1
- data/spec/support/models/customer_address.rb +0 -1
- data/spec/support/models/deed.rb +0 -1
- data/spec/support/models/definition.rb +0 -1
- data/spec/support/models/delegating_patient.rb +0 -1
- data/spec/support/models/description.rb +0 -1
- data/spec/support/models/dictionary.rb +0 -1
- data/spec/support/models/division.rb +0 -1
- data/spec/support/models/doctor.rb +0 -1
- data/spec/support/models/dog.rb +0 -1
- data/spec/support/models/dokument.rb +0 -1
- data/spec/support/models/draft.rb +0 -1
- data/spec/support/models/dragon.rb +0 -1
- data/spec/support/models/driver.rb +0 -1
- data/spec/support/models/drug.rb +0 -1
- data/spec/support/models/dungeon.rb +0 -1
- data/spec/support/models/edit.rb +0 -1
- data/spec/support/models/email.rb +0 -1
- data/spec/support/models/employer.rb +0 -1
- data/spec/support/models/entry.rb +0 -1
- data/spec/support/models/eraser.rb +0 -1
- data/spec/support/models/even.rb +0 -1
- data/spec/support/models/event.rb +0 -1
- data/spec/support/models/exhibition.rb +0 -1
- data/spec/support/models/exhibitor.rb +0 -1
- data/spec/support/models/explosion.rb +0 -1
- data/spec/support/models/eye.rb +0 -1
- data/spec/support/models/eye_bowl.rb +0 -1
- data/spec/support/models/face.rb +0 -1
- data/spec/support/models/favorite.rb +0 -1
- data/spec/support/models/filesystem.rb +0 -1
- data/spec/support/models/fire_hydrant.rb +0 -1
- data/spec/support/models/firefox.rb +0 -1
- data/spec/support/models/fish.rb +0 -1
- data/spec/support/models/folder.rb +0 -1
- data/spec/support/models/folder_item.rb +0 -1
- data/spec/support/models/fruits.rb +0 -1
- data/spec/support/models/game.rb +0 -1
- data/spec/support/models/ghost.rb +0 -1
- data/spec/support/models/guitar.rb +0 -1
- data/spec/support/models/hole.rb +0 -1
- data/spec/support/models/home.rb +0 -1
- data/spec/support/models/house.rb +0 -1
- data/spec/support/models/html_writer.rb +0 -1
- data/spec/support/models/id_key.rb +0 -1
- data/spec/support/models/idnodef.rb +0 -1
- data/spec/support/models/image.rb +0 -1
- data/spec/support/models/implant.rb +0 -1
- data/spec/support/models/instrument.rb +0 -1
- data/spec/support/models/item.rb +0 -1
- data/spec/support/models/jar.rb +0 -1
- data/spec/support/models/kaleidoscope.rb +0 -1
- data/spec/support/models/kangaroo.rb +0 -1
- data/spec/support/models/label.rb +2 -2
- data/spec/support/models/language.rb +0 -1
- data/spec/support/models/lat_lng.rb +0 -1
- data/spec/support/models/league.rb +0 -1
- data/spec/support/models/learner.rb +0 -1
- data/spec/support/models/line_item.rb +0 -1
- data/spec/support/models/location.rb +0 -1
- data/spec/support/models/login.rb +0 -1
- data/spec/support/models/manufacturer.rb +0 -1
- data/spec/support/models/meat.rb +0 -1
- data/spec/support/models/membership.rb +0 -1
- data/spec/support/models/message.rb +0 -1
- data/spec/support/models/minim.rb +0 -1
- data/spec/support/models/mixed_drink.rb +0 -1
- data/spec/support/models/mop.rb +0 -1
- data/spec/support/models/movie.rb +0 -1
- data/spec/support/models/my_hash.rb +0 -1
- data/spec/support/models/name.rb +0 -1
- data/spec/support/models/name_only.rb +0 -1
- data/spec/support/models/node.rb +0 -1
- data/spec/support/models/note.rb +0 -1
- data/spec/support/models/nut.rb +0 -1
- data/spec/support/models/odd.rb +0 -1
- data/spec/support/models/order.rb +2 -1
- data/spec/support/models/ordered_post.rb +1 -2
- data/spec/support/models/ordered_preference.rb +0 -1
- data/spec/support/models/oscar.rb +0 -1
- data/spec/support/models/other_owner_object.rb +0 -1
- data/spec/support/models/override.rb +0 -1
- data/spec/support/models/ownable.rb +0 -1
- data/spec/support/models/owner.rb +0 -1
- data/spec/support/models/pack.rb +0 -1
- data/spec/support/models/page.rb +0 -1
- data/spec/support/models/page_question.rb +0 -1
- data/spec/support/models/palette.rb +0 -1
- data/spec/support/models/parent.rb +0 -1
- data/spec/support/models/parent_doc.rb +0 -1
- data/spec/support/models/passport.rb +5 -1
- data/spec/support/models/patient.rb +0 -1
- data/spec/support/models/pdf_writer.rb +0 -1
- data/spec/support/models/pencil.rb +0 -1
- data/spec/support/models/person.rb +1 -1
- data/spec/support/models/pet.rb +0 -1
- data/spec/support/models/pet_owner.rb +0 -1
- data/spec/support/models/phone.rb +2 -2
- data/spec/support/models/piano.rb +0 -1
- data/spec/support/models/pizza.rb +0 -1
- data/spec/support/models/player.rb +0 -1
- data/spec/support/models/post.rb +0 -1
- data/spec/support/models/post_genre.rb +0 -1
- data/spec/support/models/powerup.rb +0 -1
- data/spec/support/models/preference.rb +0 -1
- data/spec/support/models/princess.rb +0 -1
- data/spec/support/models/product.rb +0 -1
- data/spec/support/models/profile.rb +0 -1
- data/spec/support/models/pronunciation.rb +0 -1
- data/spec/support/models/pub.rb +0 -1
- data/spec/support/models/publication/encyclopedia.rb +0 -1
- data/spec/support/models/publication/review.rb +0 -1
- data/spec/support/models/publication.rb +0 -1
- data/spec/support/models/purchase.rb +0 -1
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/support/models/question.rb +0 -1
- data/spec/support/models/quiz.rb +0 -1
- data/spec/support/models/rating.rb +0 -1
- data/spec/support/models/record.rb +0 -1
- data/spec/support/models/registry.rb +0 -1
- data/spec/support/models/role.rb +0 -1
- data/spec/support/models/root_category.rb +0 -1
- data/spec/support/models/sandwich.rb +0 -1
- data/spec/support/models/scheduler.rb +0 -1
- data/spec/support/models/scribe.rb +0 -1
- data/spec/support/models/sealer.rb +0 -1
- data/spec/support/models/seat.rb +0 -1
- data/spec/support/models/seo.rb +0 -1
- data/spec/support/models/series.rb +0 -1
- data/spec/support/models/server.rb +0 -1
- data/spec/support/models/service.rb +0 -1
- data/spec/support/models/shape.rb +0 -1
- data/spec/support/models/shelf.rb +0 -1
- data/spec/support/models/shipment_address.rb +0 -1
- data/spec/support/models/shipping_container.rb +0 -1
- data/spec/support/models/shipping_pack.rb +0 -1
- data/spec/support/models/shirt.rb +0 -1
- data/spec/support/models/shop.rb +0 -1
- data/spec/support/models/short_agent.rb +0 -1
- data/spec/support/models/short_quiz.rb +0 -1
- data/spec/support/models/simple.rb +0 -1
- data/spec/support/models/slave.rb +0 -1
- data/spec/support/models/song.rb +0 -1
- data/spec/support/models/sound.rb +0 -1
- data/spec/support/models/spacer.rb +0 -1
- data/spec/support/models/square.rb +0 -1
- data/spec/support/models/staff.rb +0 -1
- data/spec/support/models/store_as_dup_test1.rb +0 -1
- data/spec/support/models/store_as_dup_test2.rb +0 -1
- data/spec/support/models/store_as_dup_test3.rb +0 -1
- data/spec/support/models/store_as_dup_test4.rb +0 -1
- data/spec/support/models/strategy.rb +0 -1
- data/spec/support/models/sub_item.rb +0 -1
- data/spec/support/models/subscription.rb +0 -1
- data/spec/support/models/survey.rb +0 -1
- data/spec/support/models/symptom.rb +0 -1
- data/spec/support/models/tag.rb +0 -1
- data/spec/support/models/target.rb +0 -1
- data/spec/support/models/template.rb +0 -1
- data/spec/support/models/thing.rb +0 -1
- data/spec/support/models/threadlocker.rb +0 -1
- data/spec/support/models/title.rb +0 -1
- data/spec/support/models/tool.rb +0 -1
- data/spec/support/models/topping.rb +0 -1
- data/spec/support/models/toy.rb +0 -1
- data/spec/support/models/track.rb +0 -1
- data/spec/support/models/translation.rb +0 -1
- data/spec/support/models/tree.rb +0 -1
- data/spec/support/models/truck.rb +0 -1
- data/spec/support/models/updatable.rb +0 -1
- data/spec/support/models/user.rb +0 -1
- data/spec/support/models/user_account.rb +0 -1
- data/spec/support/models/validation_callback.rb +0 -1
- data/spec/support/models/vehicle.rb +0 -1
- data/spec/support/models/version.rb +0 -1
- data/spec/support/models/vertex.rb +0 -1
- data/spec/support/models/vet_visit.rb +0 -1
- data/spec/support/models/video.rb +0 -1
- data/spec/support/models/video_game.rb +0 -1
- data/spec/support/models/washer.rb +0 -1
- data/spec/support/models/weapon.rb +0 -1
- data/spec/support/models/wiki_page.rb +0 -1
- data/spec/support/models/word.rb +0 -1
- data/spec/support/models/word_origin.rb +0 -1
- data/spec/support/models/writer.rb +0 -1
- data/spec/support/shared/time.rb +0 -1
- data/spec/support/spec_config.rb +3 -1
- data.tar.gz.sig +0 -0
- metadata +642 -610
- metadata.gz.sig +0 -0
- data/lib/support/ruby_version.rb +0 -29
- data/spec/support/session_registry.rb +0 -50
data/lib/mongoid/clients.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/clients/factory"
|
|
5
4
|
require "mongoid/clients/validators"
|
|
@@ -22,8 +21,6 @@ module Mongoid
|
|
|
22
21
|
# Mongoid::Clients.clear
|
|
23
22
|
#
|
|
24
23
|
# @return [ Array ] The empty clients.
|
|
25
|
-
#
|
|
26
|
-
# @since 3.0.0
|
|
27
24
|
def clear
|
|
28
25
|
clients.clear
|
|
29
26
|
end
|
|
@@ -34,8 +31,6 @@ module Mongoid
|
|
|
34
31
|
# Mongoid::Clients.default
|
|
35
32
|
#
|
|
36
33
|
# @return [ Mongo::Client ] The default client.
|
|
37
|
-
#
|
|
38
|
-
# @since 3.0.0
|
|
39
34
|
def default
|
|
40
35
|
with_name(:default)
|
|
41
36
|
end
|
|
@@ -46,8 +41,6 @@ module Mongoid
|
|
|
46
41
|
# Mongoid::Clients.disconnect
|
|
47
42
|
#
|
|
48
43
|
# @return [ true ] True.
|
|
49
|
-
#
|
|
50
|
-
# @since 3.1.0
|
|
51
44
|
def disconnect
|
|
52
45
|
clients.values.each do |client|
|
|
53
46
|
client.close
|
|
@@ -62,8 +55,6 @@ module Mongoid
|
|
|
62
55
|
# @param [ String | Symbol ] name The name of the client.
|
|
63
56
|
#
|
|
64
57
|
# @return [ Mongo::Client ] The named client.
|
|
65
|
-
#
|
|
66
|
-
# @since 3.0.0
|
|
67
58
|
def with_name(name)
|
|
68
59
|
name_as_symbol = name.to_sym
|
|
69
60
|
return clients[name_as_symbol] if clients[name_as_symbol]
|
data/lib/mongoid/composable.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/changeable"
|
|
5
4
|
require "mongoid/findable"
|
|
@@ -22,8 +21,6 @@ require "mongoid/validatable"
|
|
|
22
21
|
module Mongoid
|
|
23
22
|
|
|
24
23
|
# This module provides inclusions of all behavior in a Mongoid document.
|
|
25
|
-
#
|
|
26
|
-
# @since 4.0.0
|
|
27
24
|
module Composable
|
|
28
25
|
extend ActiveSupport::Concern
|
|
29
26
|
|
|
@@ -99,8 +96,6 @@ module Mongoid
|
|
|
99
96
|
# separately.
|
|
100
97
|
#
|
|
101
98
|
# @return [ Array<Symbol> ] A list of reserved method names.
|
|
102
|
-
#
|
|
103
|
-
# @since 6.0.0
|
|
104
99
|
RESERVED_METHOD_NAMES = [ :fields,
|
|
105
100
|
:aliased_fields,
|
|
106
101
|
:localized_fields,
|
|
@@ -123,8 +118,6 @@ module Mongoid
|
|
|
123
118
|
# Mongoid::Components.prohibited_methods
|
|
124
119
|
#
|
|
125
120
|
# @return [ Array<Symbol> ]
|
|
126
|
-
#
|
|
127
|
-
# @since 2.1.8
|
|
128
121
|
def prohibited_methods
|
|
129
122
|
@prohibited_methods ||= MODULES.flat_map do |mod|
|
|
130
123
|
mod.instance_methods.map(&:to_sym)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Config
|
|
@@ -23,8 +22,6 @@ module Mongoid
|
|
|
23
22
|
# determined because none of the sources was set.
|
|
24
23
|
#
|
|
25
24
|
# @return [ String ] The name of the current environment.
|
|
26
|
-
#
|
|
27
|
-
# @since 2.3.0
|
|
28
25
|
# @api public
|
|
29
26
|
def env_name
|
|
30
27
|
if defined?(::Rails)
|
|
@@ -47,12 +44,22 @@ module Mongoid
|
|
|
47
44
|
# override the current Mongoid environment.
|
|
48
45
|
#
|
|
49
46
|
# @return [ Hash ] The settings.
|
|
50
|
-
#
|
|
51
|
-
# @since 2.3.0
|
|
52
47
|
# @api private
|
|
53
48
|
def load_yaml(path, environment = nil)
|
|
54
49
|
env = environment ? environment.to_s : env_name
|
|
55
|
-
|
|
50
|
+
contents = File.new(path).read
|
|
51
|
+
if contents.empty?
|
|
52
|
+
raise Mongoid::Errors::EmptyConfigFile.new(path)
|
|
53
|
+
end
|
|
54
|
+
data = if RUBY_VERSION.start_with?("2.5")
|
|
55
|
+
YAML.safe_load(ERB.new(contents).result, [Symbol], [], true)
|
|
56
|
+
else
|
|
57
|
+
YAML.safe_load(ERB.new(contents).result, permitted_classes: [Symbol], aliases: true)
|
|
58
|
+
end
|
|
59
|
+
unless data.is_a?(Hash)
|
|
60
|
+
raise Mongoid::Errors::InvalidConfigFile.new(path)
|
|
61
|
+
end
|
|
62
|
+
data[env]
|
|
56
63
|
end
|
|
57
64
|
end
|
|
58
65
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Config
|
|
@@ -13,8 +12,6 @@ module Mongoid
|
|
|
13
12
|
# options.defaults
|
|
14
13
|
#
|
|
15
14
|
# @return [ Hash ] The default options.
|
|
16
|
-
#
|
|
17
|
-
# @since 2.3.0
|
|
18
15
|
def defaults
|
|
19
16
|
@defaults ||= {}
|
|
20
17
|
end
|
|
@@ -28,8 +25,6 @@ module Mongoid
|
|
|
28
25
|
# @param [ Hash ] options Extras for the option.
|
|
29
26
|
#
|
|
30
27
|
# @option options [ Object ] :default The default value.
|
|
31
|
-
#
|
|
32
|
-
# @since 2.0.0.rc.1
|
|
33
28
|
def option(name, options = {})
|
|
34
29
|
defaults[name] = settings[name] = options[:default]
|
|
35
30
|
|
|
@@ -57,8 +52,6 @@ module Mongoid
|
|
|
57
52
|
# config.reset
|
|
58
53
|
#
|
|
59
54
|
# @return [ Hash ] The defaults.
|
|
60
|
-
#
|
|
61
|
-
# @since 2.3.0
|
|
62
55
|
def reset
|
|
63
56
|
settings.replace(defaults)
|
|
64
57
|
end
|
|
@@ -69,8 +62,6 @@ module Mongoid
|
|
|
69
62
|
# options.settings
|
|
70
63
|
#
|
|
71
64
|
# @return [ Hash ] The setting options.
|
|
72
|
-
#
|
|
73
|
-
# @since 2.3.0
|
|
74
65
|
def settings
|
|
75
66
|
@settings ||= {}
|
|
76
67
|
end
|
|
@@ -81,8 +72,6 @@ module Mongoid
|
|
|
81
72
|
# config.log_level
|
|
82
73
|
#
|
|
83
74
|
# @return [ Integer ] The log level.
|
|
84
|
-
#
|
|
85
|
-
# @since 5.1.0
|
|
86
75
|
def log_level
|
|
87
76
|
if level = settings[:log_level]
|
|
88
77
|
unless level.is_a?(Integer)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Config
|
|
@@ -10,8 +9,6 @@ module Mongoid
|
|
|
10
9
|
extend self
|
|
11
10
|
|
|
12
11
|
# Standard configuration options.
|
|
13
|
-
#
|
|
14
|
-
# @since 3.0.0
|
|
15
12
|
STANDARD = [ :database, :hosts, :username, :password ].freeze
|
|
16
13
|
|
|
17
14
|
# Validate the client configuration.
|
|
@@ -20,8 +17,6 @@ module Mongoid
|
|
|
20
17
|
# Client.validate({ default: { hosts: [ "localhost:27017" ] }})
|
|
21
18
|
#
|
|
22
19
|
# @param [ Hash ] clients The clients config.
|
|
23
|
-
#
|
|
24
|
-
# @since 3.0.0
|
|
25
20
|
def validate(clients)
|
|
26
21
|
unless clients.has_key?(:default)
|
|
27
22
|
raise Errors::NoDefaultClient.new(clients.keys)
|
|
@@ -44,8 +39,6 @@ module Mongoid
|
|
|
44
39
|
#
|
|
45
40
|
# @param [ String, Symbol ] name The config key.
|
|
46
41
|
# @param [ Hash ] config The configuration.
|
|
47
|
-
#
|
|
48
|
-
# @since 3.0.0
|
|
49
42
|
def validate_client_database(name, config)
|
|
50
43
|
if no_database_or_uri?(config)
|
|
51
44
|
raise Errors::NoClientDatabase.new(name, config)
|
|
@@ -61,8 +54,6 @@ module Mongoid
|
|
|
61
54
|
#
|
|
62
55
|
# @param [ String, Symbol ] name The config key.
|
|
63
56
|
# @param [ Hash ] config The configuration.
|
|
64
|
-
#
|
|
65
|
-
# @since 3.0.0
|
|
66
57
|
def validate_client_hosts(name, config)
|
|
67
58
|
if no_hosts_or_uri?(config)
|
|
68
59
|
raise Errors::NoClientHosts.new(name, config)
|
|
@@ -79,8 +70,6 @@ module Mongoid
|
|
|
79
70
|
#
|
|
80
71
|
# @param [ String, Symbol ] name The config key.
|
|
81
72
|
# @param [ Hash ] config The configuration.
|
|
82
|
-
#
|
|
83
|
-
# @since 3.0.0
|
|
84
73
|
def validate_client_uri(name, config)
|
|
85
74
|
if both_uri_and_standard?(config)
|
|
86
75
|
raise Errors::MixedClientConfiguration.new(name, config)
|
|
@@ -98,8 +87,6 @@ module Mongoid
|
|
|
98
87
|
# @param [ Hash ] config The configuration options.
|
|
99
88
|
#
|
|
100
89
|
# @return [ true, false ] If no database or uri is defined.
|
|
101
|
-
#
|
|
102
|
-
# @since 3.0.0
|
|
103
90
|
def no_database_or_uri?(config)
|
|
104
91
|
!config.has_key?(:database) && !config.has_key?(:uri)
|
|
105
92
|
end
|
|
@@ -115,8 +102,6 @@ module Mongoid
|
|
|
115
102
|
# @param [ Hash ] config The configuration options.
|
|
116
103
|
#
|
|
117
104
|
# @return [ true, false ] If no hosts or uri is defined.
|
|
118
|
-
#
|
|
119
|
-
# @since 3.0.0
|
|
120
105
|
def no_hosts_or_uri?(config)
|
|
121
106
|
!config.has_key?(:hosts) && !config.has_key?(:uri)
|
|
122
107
|
end
|
|
@@ -132,8 +117,6 @@ module Mongoid
|
|
|
132
117
|
# @param [ Hash ] config The configuration options.
|
|
133
118
|
#
|
|
134
119
|
# @return [ true, false ] If both standard and uri are defined.
|
|
135
|
-
#
|
|
136
|
-
# @since 3.0.0
|
|
137
120
|
def both_uri_and_standard?(config)
|
|
138
121
|
config.has_key?(:uri) && config.keys.any? do |key|
|
|
139
122
|
STANDARD.include?(key.to_sym)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Config
|
|
@@ -14,8 +13,6 @@ module Mongoid
|
|
|
14
13
|
# @example Validate a configuration option.
|
|
15
14
|
#
|
|
16
15
|
# @param [ String ] option The name of the option.
|
|
17
|
-
#
|
|
18
|
-
# @since 3.0.0
|
|
19
16
|
def validate(option)
|
|
20
17
|
unless Config.settings.keys.include?(option.to_sym)
|
|
21
18
|
raise Errors::InvalidConfigOption.new(option)
|
data/lib/mongoid/config.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/config/environment"
|
|
5
4
|
require "mongoid/config/options"
|
|
@@ -75,6 +74,43 @@ module Mongoid
|
|
|
75
74
|
# Return stored times as UTC.
|
|
76
75
|
option :use_utc, default: false
|
|
77
76
|
|
|
77
|
+
# Update embedded documents correctly when setting it, unsetting it
|
|
78
|
+
# and resetting it. See MONGOID-5206 and MONGOID-5240 for more details.
|
|
79
|
+
option :broken_updates, default: true
|
|
80
|
+
|
|
81
|
+
# Maintain legacy behavior of === on Mongoid documents, which returns
|
|
82
|
+
# true in a number of cases where Ruby's === implementation would
|
|
83
|
+
# return false.
|
|
84
|
+
option :legacy_triple_equals, default: true
|
|
85
|
+
|
|
86
|
+
# When exiting a nested `with_scope' block, set the current scope to
|
|
87
|
+
# nil instead of the parent scope for backwards compatibility.
|
|
88
|
+
option :broken_scoping, default: true
|
|
89
|
+
|
|
90
|
+
# Maintain broken behavior of sum over empty result sets for backwards
|
|
91
|
+
# compatibility.
|
|
92
|
+
option :broken_aggregables, default: true
|
|
93
|
+
|
|
94
|
+
# Ignore aliased fields in embedded documents when performing pluck and
|
|
95
|
+
# distinct operations, for backwards compatibility.
|
|
96
|
+
option :broken_alias_handling, default: true
|
|
97
|
+
|
|
98
|
+
# Maintain broken `and' behavior when using the same operator on the same
|
|
99
|
+
# field multiple times for backwards compatibility.
|
|
100
|
+
option :broken_and, default: true
|
|
101
|
+
|
|
102
|
+
# Use millisecond precision when comparing Time objects with the _matches?
|
|
103
|
+
# function.
|
|
104
|
+
option :compare_time_by_ms, default: false
|
|
105
|
+
|
|
106
|
+
# Use bson-ruby's implementation of as_json for BSON::ObjectId instead of
|
|
107
|
+
# the one monkey-patched into Mongoid.
|
|
108
|
+
option :object_id_as_json_oid, default: true
|
|
109
|
+
|
|
110
|
+
# Maintain legacy behavior of pluck and distinct, which does not
|
|
111
|
+
# demongoize the values on returning them.
|
|
112
|
+
option :legacy_pluck_distinct, default: true
|
|
113
|
+
|
|
78
114
|
# Has Mongoid been configured? This is checking that at least a valid
|
|
79
115
|
# client config exists.
|
|
80
116
|
#
|
|
@@ -82,8 +118,6 @@ module Mongoid
|
|
|
82
118
|
# config.configured?
|
|
83
119
|
#
|
|
84
120
|
# @return [ true, false ] If Mongoid is configured.
|
|
85
|
-
#
|
|
86
|
-
# @since 3.0.9
|
|
87
121
|
def configured?
|
|
88
122
|
clients.key?(:default)
|
|
89
123
|
end
|
|
@@ -96,8 +130,6 @@ module Mongoid
|
|
|
96
130
|
# config.connect_to("mongoid_test")
|
|
97
131
|
#
|
|
98
132
|
# @param [ String ] name The database name.
|
|
99
|
-
#
|
|
100
|
-
# @since 3.0.0
|
|
101
133
|
def connect_to(name, options = { read: { mode: :primary }})
|
|
102
134
|
self.clients = {
|
|
103
135
|
default: {
|
|
@@ -127,8 +159,6 @@ module Mongoid
|
|
|
127
159
|
#
|
|
128
160
|
# @param [ String ] path The path to the file.
|
|
129
161
|
# @param [ String, Symbol ] environment The environment to load.
|
|
130
|
-
#
|
|
131
|
-
# @since 2.0.1
|
|
132
162
|
def load!(path, environment = nil)
|
|
133
163
|
settings = Environment.load_yaml(path, environment)
|
|
134
164
|
if settings.present?
|
|
@@ -146,8 +176,6 @@ module Mongoid
|
|
|
146
176
|
# config.models
|
|
147
177
|
#
|
|
148
178
|
# @return [ Array<Class> ] All the models in the application.
|
|
149
|
-
#
|
|
150
|
-
# @since 3.1.0
|
|
151
179
|
def models
|
|
152
180
|
@models ||= []
|
|
153
181
|
end
|
|
@@ -158,8 +186,6 @@ module Mongoid
|
|
|
158
186
|
# config.register_model(Band)
|
|
159
187
|
#
|
|
160
188
|
# @param [ Class ] klass The model to register.
|
|
161
|
-
#
|
|
162
|
-
# @since 3.1.0
|
|
163
189
|
def register_model(klass)
|
|
164
190
|
LOCK.synchronize do
|
|
165
191
|
models.push(klass) unless models.include?(klass)
|
|
@@ -172,8 +198,6 @@ module Mongoid
|
|
|
172
198
|
# config.load_configuration(settings)
|
|
173
199
|
#
|
|
174
200
|
# @param [ Hash ] settings The configuration settings.
|
|
175
|
-
#
|
|
176
|
-
# @since 3.1.0
|
|
177
201
|
def load_configuration(settings)
|
|
178
202
|
configuration = settings.with_indifferent_access
|
|
179
203
|
self.options = configuration[:options]
|
|
@@ -189,8 +213,6 @@ module Mongoid
|
|
|
189
213
|
# @param [ String, Symbol ] name The name of the database.
|
|
190
214
|
#
|
|
191
215
|
# @return [ String, Symbol ] The global override.
|
|
192
|
-
#
|
|
193
|
-
# @since 3.0.0
|
|
194
216
|
def override_database(name)
|
|
195
217
|
Threaded.database_override = name
|
|
196
218
|
end
|
|
@@ -203,8 +225,6 @@ module Mongoid
|
|
|
203
225
|
# @param [ String, Symbol ] name The name of the client.
|
|
204
226
|
#
|
|
205
227
|
# @return [ String, Symbol ] The global override.
|
|
206
|
-
#
|
|
207
|
-
# @since 3.0.0
|
|
208
228
|
def override_client(name)
|
|
209
229
|
Threaded.client_override = name ? name.to_s : nil
|
|
210
230
|
end
|
|
@@ -217,8 +237,6 @@ module Mongoid
|
|
|
217
237
|
# @note This is the fastest way to drop all data.
|
|
218
238
|
#
|
|
219
239
|
# @return [ true ] true.
|
|
220
|
-
#
|
|
221
|
-
# @since 2.0.2
|
|
222
240
|
def purge!
|
|
223
241
|
global_client.database.collections.each(&:drop) and true
|
|
224
242
|
end
|
|
@@ -231,8 +249,6 @@ module Mongoid
|
|
|
231
249
|
# @note This will be slower than purge!
|
|
232
250
|
#
|
|
233
251
|
# @return [ true ] true.
|
|
234
|
-
#
|
|
235
|
-
# @since 2.0.2
|
|
236
252
|
def truncate!
|
|
237
253
|
global_client.database.collections.each do |collection|
|
|
238
254
|
collection.find.delete_many
|
|
@@ -245,8 +261,6 @@ module Mongoid
|
|
|
245
261
|
# config.options = { raise_not_found_error: true }
|
|
246
262
|
#
|
|
247
263
|
# @param [ Hash ] options The configuration options.
|
|
248
|
-
#
|
|
249
|
-
# @since 3.0.0
|
|
250
264
|
def options=(options)
|
|
251
265
|
if options
|
|
252
266
|
options.each_pair do |option, value|
|
|
@@ -262,8 +276,6 @@ module Mongoid
|
|
|
262
276
|
# config.clients
|
|
263
277
|
#
|
|
264
278
|
# @return [ Hash ] The clients configuration.
|
|
265
|
-
#
|
|
266
|
-
# @since 3.0.0
|
|
267
279
|
def clients
|
|
268
280
|
@clients ||= {}
|
|
269
281
|
end
|
|
@@ -274,8 +286,6 @@ module Mongoid
|
|
|
274
286
|
# Config.time_zone
|
|
275
287
|
#
|
|
276
288
|
# @return [ String ] The time zone.
|
|
277
|
-
#
|
|
278
|
-
# @since 3.0.0
|
|
279
289
|
def time_zone
|
|
280
290
|
use_utc? ? "UTC" : ::Time.zone
|
|
281
291
|
end
|
|
@@ -286,8 +296,6 @@ module Mongoid
|
|
|
286
296
|
# config.running_with_passenger?
|
|
287
297
|
#
|
|
288
298
|
# @return [ true, false ] If the app is deployed on Passenger.
|
|
289
|
-
#
|
|
290
|
-
# @since 3.0.11
|
|
291
299
|
def running_with_passenger?
|
|
292
300
|
@running_with_passenger ||= defined?(PhusionPassenger)
|
|
293
301
|
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
|
|
@@ -7,6 +6,20 @@ module Mongoid
|
|
|
7
6
|
# Contains behavior for aggregating values in memory.
|
|
8
7
|
module Memory
|
|
9
8
|
|
|
9
|
+
# Get all the aggregate values for the provided field.
|
|
10
|
+
# Provided for interface consistency with Aggregable::Mongo.
|
|
11
|
+
#
|
|
12
|
+
# @param [ String, Symbol ] field The field name.
|
|
13
|
+
#
|
|
14
|
+
# @return [ Hash ] A Hash containing the aggregate values.
|
|
15
|
+
# If no documents are present, then returned Hash will have
|
|
16
|
+
# count, sum of 0 and max, min, avg of nil.
|
|
17
|
+
def aggregates(field)
|
|
18
|
+
%w(count sum avg min max).each_with_object({}) do |method, hash|
|
|
19
|
+
hash[method] = send(method, field)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
10
23
|
# Get the average value of the provided field.
|
|
11
24
|
#
|
|
12
25
|
# @example Get the average of a single field.
|
|
@@ -15,8 +28,6 @@ module Mongoid
|
|
|
15
28
|
# @param [ Symbol ] field The field to average.
|
|
16
29
|
#
|
|
17
30
|
# @return [ Float ] The average.
|
|
18
|
-
#
|
|
19
|
-
# @since 3.0.0
|
|
20
31
|
def avg(field)
|
|
21
32
|
count > 0 ? sum(field).to_f / count.to_f : nil
|
|
22
33
|
end
|
|
@@ -37,8 +48,6 @@ module Mongoid
|
|
|
37
48
|
#
|
|
38
49
|
# @return [ Float, Document ] The max value or document with the max
|
|
39
50
|
# value.
|
|
40
|
-
#
|
|
41
|
-
# @since 3.0.0
|
|
42
51
|
def max(field = nil)
|
|
43
52
|
block_given? ? super() : aggregate_by(field, :max_by)
|
|
44
53
|
end
|
|
@@ -59,8 +68,6 @@ module Mongoid
|
|
|
59
68
|
#
|
|
60
69
|
# @return [ Float, Document ] The min value or document with the min
|
|
61
70
|
# value.
|
|
62
|
-
#
|
|
63
|
-
# @since 3.0.0
|
|
64
71
|
def min(field = nil)
|
|
65
72
|
block_given? ? super() : aggregate_by(field, :min_by)
|
|
66
73
|
end
|
|
@@ -77,8 +84,6 @@ module Mongoid
|
|
|
77
84
|
# @param [ Symbol ] field The field to sum.
|
|
78
85
|
#
|
|
79
86
|
# @return [ Float ] The sum value.
|
|
80
|
-
#
|
|
81
|
-
# @since 3.0.0
|
|
82
87
|
def sum(field = nil)
|
|
83
88
|
if block_given?
|
|
84
89
|
super()
|
|
@@ -100,8 +105,6 @@ module Mongoid
|
|
|
100
105
|
# @param [ Symbol ] method The method (min_by or max_by).
|
|
101
106
|
#
|
|
102
107
|
# @return [ Integer ] The aggregate.
|
|
103
|
-
#
|
|
104
|
-
# @since 3.0.0
|
|
105
108
|
def aggregate_by(field, method)
|
|
106
109
|
count > 0 ? send(method) { |doc| doc.public_send(field) }.public_send(field) : nil
|
|
107
110
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
require "mongoid/contextual/aggregable"
|
|
3
4
|
|
|
4
5
|
module Mongoid
|
|
5
6
|
module Contextual
|
|
@@ -21,15 +22,17 @@ module Mongoid
|
|
|
21
22
|
#
|
|
22
23
|
# @param [ String, Symbol ] field The field name.
|
|
23
24
|
#
|
|
24
|
-
# @return [ Hash ]
|
|
25
|
-
#
|
|
26
|
-
#
|
|
27
|
-
#
|
|
28
|
-
# @since 3.0.0
|
|
25
|
+
# @return [ Hash ] A Hash containing the aggregate values.
|
|
26
|
+
# If no documents are found, then returned Hash will have
|
|
27
|
+
# count, sum of 0 and max, min, avg of nil.
|
|
29
28
|
def aggregates(field)
|
|
30
29
|
result = collection.find.aggregate(pipeline(field), session: _session).to_a
|
|
31
30
|
if result.empty?
|
|
32
|
-
|
|
31
|
+
if Mongoid.broken_aggregables
|
|
32
|
+
{ "count" => 0, "sum" => nil, "avg" => nil, "min" => nil, "max" => nil }
|
|
33
|
+
else
|
|
34
|
+
Aggregable::EMPTY_RESULT.dup
|
|
35
|
+
end
|
|
33
36
|
else
|
|
34
37
|
result.first
|
|
35
38
|
end
|
|
@@ -43,8 +46,6 @@ module Mongoid
|
|
|
43
46
|
# @param [ Symbol ] field The field to average.
|
|
44
47
|
#
|
|
45
48
|
# @return [ Float ] The average.
|
|
46
|
-
#
|
|
47
|
-
# @since 3.0.0
|
|
48
49
|
def avg(field)
|
|
49
50
|
aggregates(field)["avg"]
|
|
50
51
|
end
|
|
@@ -65,8 +66,6 @@ module Mongoid
|
|
|
65
66
|
#
|
|
66
67
|
# @return [ Float, Document ] The max value or document with the max
|
|
67
68
|
# value.
|
|
68
|
-
#
|
|
69
|
-
# @since 3.0.0
|
|
70
69
|
def max(field = nil)
|
|
71
70
|
block_given? ? super() : aggregates(field)["max"]
|
|
72
71
|
end
|
|
@@ -87,8 +86,6 @@ module Mongoid
|
|
|
87
86
|
#
|
|
88
87
|
# @return [ Float, Document ] The min value or document with the min
|
|
89
88
|
# value.
|
|
90
|
-
#
|
|
91
|
-
# @since 3.0.0
|
|
92
89
|
def min(field = nil)
|
|
93
90
|
block_given? ? super() : aggregates(field)["min"]
|
|
94
91
|
end
|
|
@@ -105,8 +102,6 @@ module Mongoid
|
|
|
105
102
|
# @param [ Symbol ] field The field to sum.
|
|
106
103
|
#
|
|
107
104
|
# @return [ Float ] The sum value.
|
|
108
|
-
#
|
|
109
|
-
# @since 3.0.0
|
|
110
105
|
def sum(field = nil)
|
|
111
106
|
block_given? ? super() : aggregates(field)["sum"] || 0
|
|
112
107
|
end
|
|
@@ -123,15 +118,15 @@ module Mongoid
|
|
|
123
118
|
# @param [ String, Symbol ] field The name of the field.
|
|
124
119
|
#
|
|
125
120
|
# @return [ Array ] The array of pipeline operators.
|
|
126
|
-
#
|
|
127
|
-
# @since 3.1.0
|
|
128
121
|
def pipeline(field)
|
|
129
122
|
db_field = "$#{database_field_name(field)}"
|
|
123
|
+
sort, skip, limit = criteria.options.values_at(:sort, :skip, :limit)
|
|
124
|
+
|
|
130
125
|
pipeline = []
|
|
131
126
|
pipeline << { "$match" => criteria.exists(field => true).selector }
|
|
132
|
-
pipeline << { "$sort" =>
|
|
133
|
-
pipeline << { "$skip" =>
|
|
134
|
-
pipeline << { "$limit" =>
|
|
127
|
+
pipeline << { "$sort" => sort } if sort && (skip || limit)
|
|
128
|
+
pipeline << { "$skip" => skip } if skip
|
|
129
|
+
pipeline << { "$limit" => limit } if limit
|
|
135
130
|
pipeline << {
|
|
136
131
|
"$group" => {
|
|
137
132
|
"_id" => field.to_s,
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "mongoid/contextual/aggregable"
|
|
4
|
+
|
|
5
|
+
module Mongoid
|
|
6
|
+
module Contextual
|
|
7
|
+
module Aggregable
|
|
8
|
+
# Contains behavior for aggregating values in null context.
|
|
9
|
+
module None
|
|
10
|
+
|
|
11
|
+
# Get all the aggregate values for the provided field in null context.
|
|
12
|
+
# Provided for interface consistency with Aggregable::Mongo.
|
|
13
|
+
#
|
|
14
|
+
# @param [ String, Symbol ] _field The field name.
|
|
15
|
+
#
|
|
16
|
+
# @return [ Hash ] A Hash with count, sum of 0 and max, min, avg of nil.
|
|
17
|
+
def aggregates(_field)
|
|
18
|
+
Aggregable::EMPTY_RESULT.dup
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Always returns zero.
|
|
22
|
+
#
|
|
23
|
+
# @example Get the sum of null context.
|
|
24
|
+
#
|
|
25
|
+
# @param [ Symbol ] _field The field to sum.
|
|
26
|
+
#
|
|
27
|
+
# @return [ Integer ] Always zero.
|
|
28
|
+
def sum(_field = nil)
|
|
29
|
+
0
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Always returns nil.
|
|
33
|
+
#
|
|
34
|
+
# @example Get the avg of null context.
|
|
35
|
+
#
|
|
36
|
+
# @param [ Symbol ] _field The field to avg.
|
|
37
|
+
#
|
|
38
|
+
# @return [ nil ] Always nil.
|
|
39
|
+
def avg(_field)
|
|
40
|
+
nil
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Always returns nil.
|
|
44
|
+
#
|
|
45
|
+
# @example Get the min of null context.
|
|
46
|
+
#
|
|
47
|
+
# @param [ Symbol ] _field The field to min.
|
|
48
|
+
#
|
|
49
|
+
# @return [ nil ] Always nil.
|
|
50
|
+
def min(_field = nil)
|
|
51
|
+
nil
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Always returns nil.
|
|
55
|
+
#
|
|
56
|
+
# @example Get the max of null context.
|
|
57
|
+
#
|
|
58
|
+
# @param [ Symbol ] _field The field to max.
|
|
59
|
+
#
|
|
60
|
+
# @return [ nil ] Always nil.
|
|
61
|
+
alias :max :min
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|