mongoid 7.3.5 → 7.5.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 +3 -3
- data/lib/config/locales/en.yml +28 -20
- 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 +12 -59
- 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 +26 -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 +20 -64
- data/lib/mongoid/association/referenced/has_many/proxy.rb +20 -63
- 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 +0 -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 -24
- 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 +1 -42
- 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 +21 -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 +43 -30
- 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 +0 -25
- 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 +147 -70
- data/lib/mongoid/contextual/mongo.rb +249 -103
- data/lib/mongoid/contextual/none.rb +83 -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 +2 -25
- 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 +1 -24
- 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 +22 -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 +45 -76
- 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 +6 -2
- data/lib/mongoid/criteria/queryable.rb +0 -7
- data/lib/mongoid/criteria/scopable.rb +25 -19
- data/lib/mongoid/criteria.rb +2 -57
- data/lib/mongoid/document.rb +1 -50
- 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 +23 -15
- data/lib/mongoid/errors/eager_load.rb +0 -3
- data/lib/mongoid/errors/empty_config_file.rb +0 -1
- 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 +0 -1
- 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 +0 -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 +191 -60
- data/lib/mongoid/findable.rb +20 -10
- 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 +0 -27
- data/lib/mongoid/positional.rb +0 -5
- data/lib/mongoid/query_cache.rb +0 -33
- 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 +0 -5
- 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 +0 -7
- data/lib/mongoid/traversable.rb +67 -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/warnings.rb +29 -0
- data/lib/mongoid.rb +1 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +0 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +4 -3
- 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/config/mongoid_with_schema_map_uuid.yml +27 -0
- data/spec/integration/app_spec.rb +20 -15
- data/spec/integration/associations/belongs_to_spec.rb +0 -1
- data/spec/integration/associations/embedded_dirty_spec.rb +57 -0
- data/spec/integration/associations/embedded_spec.rb +0 -1
- data/spec/integration/associations/embeds_many_spec.rb +0 -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 +0 -1
- 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 +15 -2
- 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 +14 -1
- data/spec/lite_spec_helper.rb +1 -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 -156
- data/spec/mongoid/association/embedded/embeds_many_models.rb +0 -122
- 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 +0 -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 -162
- 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 +113 -33
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +225 -178
- data/spec/mongoid/association/referenced/has_many_models.rb +18 -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 +28 -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 +11 -13
- data/spec/mongoid/clients/options_spec.rb +5 -5
- 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 +39 -2
- data/spec/mongoid/config/options_spec.rb +0 -1
- data/spec/mongoid/config_spec.rb +154 -4
- 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 +46 -47
- data/spec/mongoid/contextual/geo_near_spec.rb +17 -18
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
- data/spec/mongoid/contextual/memory_spec.rb +849 -89
- data/spec/mongoid/contextual/mongo_spec.rb +1185 -160
- data/spec/mongoid/contextual/none_spec.rb +43 -72
- data/spec/mongoid/copyable_spec.rb +12 -13
- 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 +227 -55
- 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 +523 -187
- 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 +11 -33
- 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 +49 -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 +0 -1
- 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 +1 -2
- 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 +51 -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 +41 -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 +30 -8
- data/spec/mongoid/relations/proxy_spec.rb +6 -7
- data/spec/mongoid/reloadable_spec.rb +209 -23
- data/spec/mongoid/scopable_spec.rb +54 -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 +15 -20
- data/spec/mongoid/touchable_spec_models.rb +0 -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/constraints.rb +10 -17
- data/spec/shared/lib/mrss/docker_runner.rb +23 -3
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +15 -5
- data/spec/shared/lib/mrss/lite_constraints.rb +40 -1
- data/spec/shared/share/Dockerfile.erb +56 -54
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/distro.sh +2 -1
- data/spec/shared/shlib/server.sh +46 -21
- data/spec/shared/shlib/set_env.sh +43 -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 +31 -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/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 +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 +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 +1 -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/schema_maps/schema_map_aws.json +17 -0
- data/spec/support/schema_maps/schema_map_aws_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_azure.json +17 -0
- data/spec/support/schema_maps/schema_map_azure_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_gcp.json +17 -0
- data/spec/support/schema_maps/schema_map_gcp_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_kmip.json +17 -0
- data/spec/support/schema_maps/schema_map_kmip_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_local.json +18 -0
- data/spec/support/schema_maps/schema_map_local_key_alt_names.json +12 -0
- data/spec/support/shared/time.rb +0 -1
- data/spec/support/spec_config.rb +7 -1
- data.tar.gz.sig +0 -0
- metadata +51 -11
- metadata.gz.sig +0 -0
- data/lib/support/ruby_version.rb +0 -29
|
@@ -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)
|
|
@@ -48,18 +45,36 @@ module Mongoid
|
|
|
48
45
|
#
|
|
49
46
|
# @return [ Hash ] The settings.
|
|
50
47
|
#
|
|
51
|
-
# @since 2.3.0
|
|
52
48
|
# @api private
|
|
53
49
|
def load_yaml(path, environment = nil)
|
|
54
50
|
env = environment ? environment.to_s : env_name
|
|
55
|
-
|
|
51
|
+
|
|
52
|
+
contents = File.read(path)
|
|
56
53
|
if contents.empty?
|
|
57
54
|
raise Mongoid::Errors::EmptyConfigFile.new(path)
|
|
58
55
|
end
|
|
59
|
-
|
|
56
|
+
|
|
57
|
+
# These are the classes that can be used in a Mongoid
|
|
58
|
+
# configuration file in addition to standard YAML types.
|
|
59
|
+
permitted_classes = [
|
|
60
|
+
# Symbols occur as values for read preference, for example.
|
|
61
|
+
Symbol,
|
|
62
|
+
# BSON::Binary occur as keyId values for FLE (more precisely,
|
|
63
|
+
# the keyIds are UUIDs).
|
|
64
|
+
BSON::Binary,
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
result = ERB.new(contents).result
|
|
68
|
+
data = if RUBY_VERSION < '2.6'
|
|
69
|
+
YAML.safe_load(result, permitted_classes, [], true)
|
|
70
|
+
else
|
|
71
|
+
YAML.safe_load(result, permitted_classes: permitted_classes, aliases: true)
|
|
72
|
+
end
|
|
73
|
+
|
|
60
74
|
unless data.is_a?(Hash)
|
|
61
75
|
raise Mongoid::Errors::InvalidConfigFile.new(path)
|
|
62
76
|
end
|
|
77
|
+
|
|
63
78
|
data[env]
|
|
64
79
|
end
|
|
65
80
|
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"
|
|
@@ -24,7 +23,8 @@ module Mongoid
|
|
|
24
23
|
# database name is not explicitly defined.
|
|
25
24
|
option :app_name, default: nil
|
|
26
25
|
|
|
27
|
-
#
|
|
26
|
+
# (Deprecated) In MongoDB 4.0 and earlier, set whether to create
|
|
27
|
+
# indexes in the background by default. (default: false)
|
|
28
28
|
option :background_indexing, default: false
|
|
29
29
|
|
|
30
30
|
# Mark belongs_to associations as required by default, so that saving a
|
|
@@ -75,6 +75,47 @@ module Mongoid
|
|
|
75
75
|
# Return stored times as UTC.
|
|
76
76
|
option :use_utc, default: false
|
|
77
77
|
|
|
78
|
+
# Update embedded documents correctly when setting it, unsetting it
|
|
79
|
+
# and resetting it. See MONGOID-5206 and MONGOID-5240 for more details.
|
|
80
|
+
option :broken_updates, default: true
|
|
81
|
+
|
|
82
|
+
# Maintain legacy behavior of === on Mongoid documents, which returns
|
|
83
|
+
# true in a number of cases where Ruby's === implementation would
|
|
84
|
+
# return false.
|
|
85
|
+
option :legacy_triple_equals, default: true
|
|
86
|
+
|
|
87
|
+
# When exiting a nested `with_scope' block, set the current scope to
|
|
88
|
+
# nil instead of the parent scope for backwards compatibility.
|
|
89
|
+
option :broken_scoping, default: true
|
|
90
|
+
|
|
91
|
+
# Maintain broken behavior of sum over empty result sets for backwards
|
|
92
|
+
# compatibility.
|
|
93
|
+
option :broken_aggregables, default: true
|
|
94
|
+
|
|
95
|
+
# Ignore aliased fields in embedded documents when performing pluck and
|
|
96
|
+
# distinct operations, for backwards compatibility.
|
|
97
|
+
option :broken_alias_handling, default: true
|
|
98
|
+
|
|
99
|
+
# Maintain broken `and' behavior when using the same operator on the same
|
|
100
|
+
# field multiple times for backwards compatibility.
|
|
101
|
+
option :broken_and, default: true
|
|
102
|
+
|
|
103
|
+
# Use millisecond precision when comparing Time objects with the _matches?
|
|
104
|
+
# function.
|
|
105
|
+
option :compare_time_by_ms, default: false
|
|
106
|
+
|
|
107
|
+
# Use bson-ruby's implementation of as_json for BSON::ObjectId instead of
|
|
108
|
+
# the one monkey-patched into Mongoid.
|
|
109
|
+
option :object_id_as_json_oid, default: true
|
|
110
|
+
|
|
111
|
+
# Maintain legacy behavior of pluck and distinct, which does not
|
|
112
|
+
# demongoize the values on returning them.
|
|
113
|
+
option :legacy_pluck_distinct, default: true
|
|
114
|
+
|
|
115
|
+
# Combine chained operators, which use the same field and operator,
|
|
116
|
+
# using and's instead of overwriting them.
|
|
117
|
+
option :overwrite_chained_operators, default: true
|
|
118
|
+
|
|
78
119
|
# Has Mongoid been configured? This is checking that at least a valid
|
|
79
120
|
# client config exists.
|
|
80
121
|
#
|
|
@@ -82,8 +123,6 @@ module Mongoid
|
|
|
82
123
|
# config.configured?
|
|
83
124
|
#
|
|
84
125
|
# @return [ true, false ] If Mongoid is configured.
|
|
85
|
-
#
|
|
86
|
-
# @since 3.0.9
|
|
87
126
|
def configured?
|
|
88
127
|
clients.key?(:default)
|
|
89
128
|
end
|
|
@@ -96,8 +135,6 @@ module Mongoid
|
|
|
96
135
|
# config.connect_to("mongoid_test")
|
|
97
136
|
#
|
|
98
137
|
# @param [ String ] name The database name.
|
|
99
|
-
#
|
|
100
|
-
# @since 3.0.0
|
|
101
138
|
def connect_to(name, options = { read: { mode: :primary }})
|
|
102
139
|
self.clients = {
|
|
103
140
|
default: {
|
|
@@ -127,8 +164,6 @@ module Mongoid
|
|
|
127
164
|
#
|
|
128
165
|
# @param [ String ] path The path to the file.
|
|
129
166
|
# @param [ String, Symbol ] environment The environment to load.
|
|
130
|
-
#
|
|
131
|
-
# @since 2.0.1
|
|
132
167
|
def load!(path, environment = nil)
|
|
133
168
|
settings = Environment.load_yaml(path, environment)
|
|
134
169
|
if settings.present?
|
|
@@ -146,8 +181,6 @@ module Mongoid
|
|
|
146
181
|
# config.models
|
|
147
182
|
#
|
|
148
183
|
# @return [ Array<Class> ] All the models in the application.
|
|
149
|
-
#
|
|
150
|
-
# @since 3.1.0
|
|
151
184
|
def models
|
|
152
185
|
@models ||= []
|
|
153
186
|
end
|
|
@@ -158,8 +191,6 @@ module Mongoid
|
|
|
158
191
|
# config.register_model(Band)
|
|
159
192
|
#
|
|
160
193
|
# @param [ Class ] klass The model to register.
|
|
161
|
-
#
|
|
162
|
-
# @since 3.1.0
|
|
163
194
|
def register_model(klass)
|
|
164
195
|
LOCK.synchronize do
|
|
165
196
|
models.push(klass) unless models.include?(klass)
|
|
@@ -172,8 +203,6 @@ module Mongoid
|
|
|
172
203
|
# config.load_configuration(settings)
|
|
173
204
|
#
|
|
174
205
|
# @param [ Hash ] settings The configuration settings.
|
|
175
|
-
#
|
|
176
|
-
# @since 3.1.0
|
|
177
206
|
def load_configuration(settings)
|
|
178
207
|
configuration = settings.with_indifferent_access
|
|
179
208
|
self.options = configuration[:options]
|
|
@@ -189,8 +218,6 @@ module Mongoid
|
|
|
189
218
|
# @param [ String, Symbol ] name The name of the database.
|
|
190
219
|
#
|
|
191
220
|
# @return [ String, Symbol ] The global override.
|
|
192
|
-
#
|
|
193
|
-
# @since 3.0.0
|
|
194
221
|
def override_database(name)
|
|
195
222
|
Threaded.database_override = name
|
|
196
223
|
end
|
|
@@ -203,8 +230,6 @@ module Mongoid
|
|
|
203
230
|
# @param [ String, Symbol ] name The name of the client.
|
|
204
231
|
#
|
|
205
232
|
# @return [ String, Symbol ] The global override.
|
|
206
|
-
#
|
|
207
|
-
# @since 3.0.0
|
|
208
233
|
def override_client(name)
|
|
209
234
|
Threaded.client_override = name ? name.to_s : nil
|
|
210
235
|
end
|
|
@@ -217,8 +242,6 @@ module Mongoid
|
|
|
217
242
|
# @note This is the fastest way to drop all data.
|
|
218
243
|
#
|
|
219
244
|
# @return [ true ] true.
|
|
220
|
-
#
|
|
221
|
-
# @since 2.0.2
|
|
222
245
|
def purge!
|
|
223
246
|
global_client.database.collections.each(&:drop) and true
|
|
224
247
|
end
|
|
@@ -231,8 +254,6 @@ module Mongoid
|
|
|
231
254
|
# @note This will be slower than purge!
|
|
232
255
|
#
|
|
233
256
|
# @return [ true ] true.
|
|
234
|
-
#
|
|
235
|
-
# @since 2.0.2
|
|
236
257
|
def truncate!
|
|
237
258
|
global_client.database.collections.each do |collection|
|
|
238
259
|
collection.find.delete_many
|
|
@@ -245,8 +266,6 @@ module Mongoid
|
|
|
245
266
|
# config.options = { raise_not_found_error: true }
|
|
246
267
|
#
|
|
247
268
|
# @param [ Hash ] options The configuration options.
|
|
248
|
-
#
|
|
249
|
-
# @since 3.0.0
|
|
250
269
|
def options=(options)
|
|
251
270
|
if options
|
|
252
271
|
options.each_pair do |option, value|
|
|
@@ -262,8 +281,6 @@ module Mongoid
|
|
|
262
281
|
# config.clients
|
|
263
282
|
#
|
|
264
283
|
# @return [ Hash ] The clients configuration.
|
|
265
|
-
#
|
|
266
|
-
# @since 3.0.0
|
|
267
284
|
def clients
|
|
268
285
|
@clients ||= {}
|
|
269
286
|
end
|
|
@@ -274,8 +291,6 @@ module Mongoid
|
|
|
274
291
|
# Config.time_zone
|
|
275
292
|
#
|
|
276
293
|
# @return [ String ] The time zone.
|
|
277
|
-
#
|
|
278
|
-
# @since 3.0.0
|
|
279
294
|
def time_zone
|
|
280
295
|
use_utc? ? "UTC" : ::Time.zone
|
|
281
296
|
end
|
|
@@ -286,8 +301,6 @@ module Mongoid
|
|
|
286
301
|
# config.running_with_passenger?
|
|
287
302
|
#
|
|
288
303
|
# @return [ true, false ] If the app is deployed on Passenger.
|
|
289
|
-
#
|
|
290
|
-
# @since 3.0.11
|
|
291
304
|
def running_with_passenger?
|
|
292
305
|
@running_with_passenger ||= defined?(PhusionPassenger)
|
|
293
306
|
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
|