mongoid 7.4.3 → 8.0.7
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/README.md +3 -3
- data/Rakefile +25 -0
- data/lib/config/locales/en.yml +52 -28
- data/lib/mongoid/association/accessors.rb +38 -9
- data/lib/mongoid/association/bindable.rb +50 -2
- data/lib/mongoid/association/builders.rb +4 -2
- data/lib/mongoid/association/constrainable.rb +0 -1
- data/lib/mongoid/association/eager_loadable.rb +29 -7
- data/lib/mongoid/association/embedded/batchable.rb +33 -10
- data/lib/mongoid/association/embedded/cyclic.rb +1 -1
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +24 -2
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in.rb +3 -2
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +65 -41
- data/lib/mongoid/association/embedded/embeds_many.rb +2 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +18 -4
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +23 -4
- data/lib/mongoid/association/embedded/embeds_one.rb +3 -3
- data/lib/mongoid/association/macros.rb +28 -1
- data/lib/mongoid/association/many.rb +11 -7
- data/lib/mongoid/association/nested/many.rb +5 -4
- data/lib/mongoid/association/nested/nested_buildable.rb +4 -4
- data/lib/mongoid/association/nested/one.rb +5 -5
- data/lib/mongoid/association/one.rb +2 -2
- data/lib/mongoid/association/options.rb +9 -9
- data/lib/mongoid/association/proxy.rb +14 -3
- data/lib/mongoid/association/referenced/auto_save.rb +4 -3
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +5 -6
- data/lib/mongoid/association/referenced/belongs_to.rb +2 -2
- data/lib/mongoid/association/referenced/counter_cache.rb +10 -10
- data/lib/mongoid/association/referenced/eager.rb +2 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +70 -13
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +6 -3
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +20 -24
- data/lib/mongoid/association/referenced/has_many/proxy.rb +26 -16
- data/lib/mongoid/association/referenced/has_many.rb +3 -3
- data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +5 -5
- data/lib/mongoid/association/referenced/has_one/proxy.rb +9 -12
- data/lib/mongoid/association/referenced/has_one.rb +3 -3
- data/lib/mongoid/association/referenced/syncable.rb +4 -4
- data/lib/mongoid/association/reflections.rb +2 -2
- data/lib/mongoid/association/relatable.rb +44 -10
- data/lib/mongoid/association.rb +5 -5
- data/lib/mongoid/atomic/modifiers.rb +2 -2
- data/lib/mongoid/atomic.rb +7 -0
- data/lib/mongoid/attributes/dynamic.rb +3 -3
- data/lib/mongoid/attributes/nested.rb +5 -5
- data/lib/mongoid/attributes/processing.rb +37 -6
- data/lib/mongoid/attributes/projector.rb +1 -1
- data/lib/mongoid/attributes/readonly.rb +2 -2
- data/lib/mongoid/attributes.rb +43 -40
- data/lib/mongoid/cacheable.rb +2 -2
- data/lib/mongoid/changeable.rb +43 -10
- data/lib/mongoid/clients/options.rb +5 -1
- data/lib/mongoid/clients/sessions.rb +2 -14
- data/lib/mongoid/clients/validators/storage.rb +3 -3
- data/lib/mongoid/config/options.rb +3 -0
- data/lib/mongoid/config/validators/client.rb +6 -6
- data/lib/mongoid/config.rb +62 -17
- data/lib/mongoid/contextual/aggregable/memory.rb +24 -16
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -5
- data/lib/mongoid/contextual/aggregable/none.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +7 -7
- data/lib/mongoid/contextual/map_reduce.rb +2 -2
- data/lib/mongoid/contextual/memory.rb +180 -21
- data/lib/mongoid/contextual/mongo.rb +260 -217
- data/lib/mongoid/contextual/none.rb +67 -5
- data/lib/mongoid/contextual/queryable.rb +1 -1
- data/lib/mongoid/contextual.rb +2 -2
- data/lib/mongoid/copyable.rb +32 -8
- data/lib/mongoid/criteria/findable.rb +7 -4
- data/lib/mongoid/criteria/includable.rb +24 -20
- data/lib/mongoid/criteria/marshalable.rb +10 -2
- data/lib/mongoid/criteria/permission.rb +1 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/array.rb +3 -14
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/date.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +1 -15
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -9
- data/lib/mongoid/criteria/queryable/extensions/object.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/range.rb +13 -5
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/set.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/string.rb +4 -14
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -12
- data/lib/mongoid/criteria/queryable/extensions/time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +6 -1
- data/lib/mongoid/criteria/queryable/key.rb +3 -3
- data/lib/mongoid/criteria/queryable/mergeable.rb +21 -0
- data/lib/mongoid/criteria/queryable/optional.rb +5 -11
- data/lib/mongoid/criteria/queryable/options.rb +2 -2
- data/lib/mongoid/criteria/queryable/pipeline.rb +1 -1
- data/lib/mongoid/criteria/queryable/selectable.rb +31 -37
- data/lib/mongoid/criteria/queryable/selector.rb +93 -8
- data/lib/mongoid/criteria/queryable/smash.rb +40 -7
- data/lib/mongoid/criteria/queryable/storable.rb +1 -1
- data/lib/mongoid/criteria/queryable.rb +12 -7
- data/lib/mongoid/criteria/scopable.rb +2 -2
- data/lib/mongoid/criteria/translator.rb +45 -0
- data/lib/mongoid/criteria.rb +16 -35
- data/lib/mongoid/deprecable.rb +37 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +135 -34
- data/lib/mongoid/equality.rb +8 -8
- data/lib/mongoid/errors/document_not_found.rb +33 -12
- data/lib/mongoid/errors/invalid_config_option.rb +1 -1
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +1 -1
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
- data/lib/mongoid/errors/invalid_field.rb +6 -2
- data/lib/mongoid/errors/invalid_field_type.rb +26 -0
- data/lib/mongoid/errors/invalid_relation.rb +1 -1
- data/lib/mongoid/errors/invalid_relation_option.rb +1 -1
- data/lib/mongoid/errors/invalid_session_use.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/mongoid_error.rb +3 -3
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -1
- data/lib/mongoid/errors/no_client_database.rb +1 -1
- data/lib/mongoid/errors/no_client_hosts.rb +1 -1
- data/lib/mongoid/errors/readonly_attribute.rb +1 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -1
- data/lib/mongoid/errors/unknown_attribute.rb +1 -1
- data/lib/mongoid/errors.rb +2 -2
- data/lib/mongoid/extensions/array.rb +9 -7
- data/lib/mongoid/extensions/big_decimal.rb +33 -10
- data/lib/mongoid/extensions/binary.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +8 -2
- data/lib/mongoid/extensions/date.rb +26 -20
- data/lib/mongoid/extensions/date_time.rb +1 -1
- data/lib/mongoid/extensions/false_class.rb +1 -1
- data/lib/mongoid/extensions/float.rb +7 -4
- data/lib/mongoid/extensions/hash.rb +37 -8
- data/lib/mongoid/extensions/integer.rb +7 -4
- data/lib/mongoid/extensions/module.rb +1 -1
- data/lib/mongoid/extensions/object.rb +8 -6
- data/lib/mongoid/extensions/range.rb +41 -10
- data/lib/mongoid/extensions/regexp.rb +11 -4
- data/lib/mongoid/extensions/set.rb +11 -4
- data/lib/mongoid/extensions/string.rb +11 -22
- data/lib/mongoid/extensions/symbol.rb +4 -15
- data/lib/mongoid/extensions/time.rb +27 -16
- data/lib/mongoid/extensions/time_with_zone.rb +1 -2
- data/lib/mongoid/extensions/true_class.rb +1 -1
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +55 -7
- data/lib/mongoid/fields/foreign_key.rb +11 -4
- data/lib/mongoid/fields/localized.rb +9 -4
- data/lib/mongoid/fields/standard.rb +7 -7
- data/lib/mongoid/fields/validators/macro.rb +3 -9
- data/lib/mongoid/fields.rb +233 -40
- data/lib/mongoid/findable.rb +34 -13
- data/lib/mongoid/indexable/specification.rb +2 -2
- data/lib/mongoid/indexable/validators/options.rb +6 -2
- data/lib/mongoid/interceptable.rb +185 -16
- data/lib/mongoid/matchable.rb +1 -1
- data/lib/mongoid/matcher.rb +33 -13
- data/lib/mongoid/persistable/creatable.rb +18 -9
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/persistable/destroyable.rb +1 -1
- data/lib/mongoid/persistable/savable.rb +2 -2
- data/lib/mongoid/persistable/unsettable.rb +1 -1
- data/lib/mongoid/persistable/updatable.rb +19 -12
- data/lib/mongoid/persistable/upsertable.rb +1 -1
- data/lib/mongoid/persistable.rb +3 -3
- data/lib/mongoid/persistence_context.rb +63 -10
- data/lib/mongoid/query_cache.rb +8 -260
- data/lib/mongoid/railties/controller_runtime.rb +1 -1
- data/lib/mongoid/reloadable.rb +10 -8
- data/lib/mongoid/scopable.rb +26 -22
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/serializable.rb +10 -6
- data/lib/mongoid/shardable.rb +35 -11
- data/lib/mongoid/stateful.rb +35 -9
- data/lib/mongoid/tasks/database.rb +0 -2
- data/lib/mongoid/threaded/lifecycle.rb +5 -5
- data/lib/mongoid/threaded.rb +42 -12
- data/lib/mongoid/timestamps/created.rb +1 -1
- data/lib/mongoid/timestamps/updated.rb +2 -2
- data/lib/mongoid/touchable.rb +2 -3
- data/lib/mongoid/traversable.rb +5 -4
- data/lib/mongoid/validatable/localizable.rb +1 -1
- data/lib/mongoid/validatable/macros.rb +0 -2
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +9 -8
- data/lib/mongoid/validatable.rb +6 -6
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +28 -0
- data/lib/mongoid.rb +2 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +4 -3
- data/spec/config/mongoid.yml +16 -0
- data/spec/integration/app_spec.rb +8 -12
- data/spec/integration/associations/belongs_to_spec.rb +18 -0
- data/spec/integration/associations/embedded_spec.rb +15 -0
- data/spec/integration/associations/embeds_many_spec.rb +15 -2
- data/spec/integration/associations/embeds_one_spec.rb +18 -0
- data/spec/integration/associations/foreign_key_spec.rb +9 -0
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +21 -0
- data/spec/integration/associations/has_one_spec.rb +97 -1
- data/spec/integration/associations/scope_option_spec.rb +1 -1
- data/spec/integration/callbacks_models.rb +95 -1
- data/spec/integration/callbacks_spec.rb +246 -4
- data/spec/integration/criteria/range_spec.rb +95 -1
- data/spec/integration/discriminator_key_spec.rb +115 -76
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +1 -17
- data/spec/integration/matcher_examples_spec.rb +20 -13
- data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
- data/spec/integration/matcher_operator_spec.rb +3 -5
- data/spec/integration/persistence/range_field_spec.rb +350 -0
- data/spec/mongoid/association/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +9 -9
- data/spec/mongoid/association/eager_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +69 -9
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +235 -40
- data/spec/mongoid/association/embedded/embeds_many_models.rb +36 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +12 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +15 -0
- data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +202 -201
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +8 -8
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +160 -119
- data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
- data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
- data/spec/mongoid/association/syncable_spec.rb +14 -0
- data/spec/mongoid/atomic/paths_spec.rb +0 -14
- data/spec/mongoid/attributes/nested_spec.rb +80 -11
- data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
- data/spec/mongoid/attributes/projector_spec.rb +1 -5
- data/spec/mongoid/attributes_spec.rb +551 -27
- data/spec/mongoid/cacheable_spec.rb +3 -3
- data/spec/mongoid/changeable_spec.rb +130 -13
- data/spec/mongoid/clients/factory_spec.rb +23 -30
- data/spec/mongoid/clients/options_spec.rb +1 -0
- data/spec/mongoid/clients/sessions_spec.rb +0 -38
- data/spec/mongoid/clients_spec.rb +57 -2
- data/spec/mongoid/config_spec.rb +78 -18
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
- data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -16
- data/spec/mongoid/contextual/memory_spec.rb +1336 -69
- data/spec/mongoid/contextual/mongo_spec.rb +1253 -247
- data/spec/mongoid/contextual/none_spec.rb +38 -0
- data/spec/mongoid/copyable_spec.rb +451 -1
- data/spec/mongoid/criteria/findable_spec.rb +86 -210
- data/spec/mongoid/criteria/includable_spec.rb +1492 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -59
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -59
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +15 -484
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +50 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +289 -124
- data/spec/mongoid/criteria/queryable/selector_spec.rb +89 -4
- data/spec/mongoid/criteria/queryable/storable_spec.rb +72 -0
- data/spec/mongoid/criteria/translator_spec.rb +132 -0
- data/spec/mongoid/criteria_projection_spec.rb +0 -1
- data/spec/mongoid/criteria_spec.rb +475 -1199
- data/spec/mongoid/document_fields_spec.rb +173 -24
- data/spec/mongoid/document_spec.rb +32 -41
- data/spec/mongoid/errors/document_not_found_spec.rb +76 -0
- data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
- data/spec/mongoid/extensions/array_spec.rb +16 -2
- data/spec/mongoid/extensions/big_decimal_spec.rb +712 -212
- data/spec/mongoid/extensions/binary_spec.rb +44 -9
- data/spec/mongoid/extensions/boolean_spec.rb +68 -82
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
- data/spec/mongoid/extensions/date_spec.rb +71 -1
- data/spec/mongoid/extensions/date_time_spec.rb +15 -9
- data/spec/mongoid/extensions/float_spec.rb +53 -74
- data/spec/mongoid/extensions/hash_spec.rb +33 -3
- data/spec/mongoid/extensions/integer_spec.rb +50 -64
- data/spec/mongoid/extensions/range_spec.rb +255 -54
- data/spec/mongoid/extensions/regexp_spec.rb +58 -33
- data/spec/mongoid/extensions/set_spec.rb +106 -0
- data/spec/mongoid/extensions/string_spec.rb +53 -25
- data/spec/mongoid/extensions/symbol_spec.rb +18 -25
- data/spec/mongoid/extensions/time_spec.rb +634 -66
- data/spec/mongoid/extensions/time_with_zone_spec.rb +17 -31
- data/spec/mongoid/factory_spec.rb +61 -1
- data/spec/mongoid/fields/localized_spec.rb +37 -12
- data/spec/mongoid/fields_spec.rb +364 -50
- data/spec/mongoid/findable_spec.rb +80 -15
- data/spec/mongoid/indexable/specification_spec.rb +2 -2
- data/spec/mongoid/indexable_spec.rb +39 -20
- data/spec/mongoid/interceptable_spec.rb +807 -27
- data/spec/mongoid/interceptable_spec_models.rb +235 -4
- data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
- data/spec/mongoid/mongoizable_spec.rb +285 -0
- data/spec/mongoid/persistable/creatable_spec.rb +2 -2
- data/spec/mongoid/persistable/deletable_spec.rb +2 -2
- data/spec/mongoid/persistable/destroyable_spec.rb +2 -2
- data/spec/mongoid/persistable/upsertable_spec.rb +14 -0
- data/spec/mongoid/persistence_context_spec.rb +50 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
- data/spec/mongoid/query_cache_spec.rb +0 -154
- data/spec/mongoid/reloadable_spec.rb +59 -2
- data/spec/mongoid/scopable_spec.rb +54 -16
- data/spec/mongoid/shardable_models.rb +14 -0
- data/spec/mongoid/shardable_spec.rb +157 -51
- data/spec/mongoid/stateful_spec.rb +28 -0
- data/spec/mongoid/timestamps_spec.rb +390 -0
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +116 -0
- data/spec/mongoid/touchable_spec_models.rb +12 -8
- data/spec/mongoid/traversable_spec.rb +4 -11
- data/spec/mongoid/validatable/presence_spec.rb +1 -1
- data/spec/mongoid/validatable/uniqueness_spec.rb +59 -31
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/mongoid_spec.rb +1 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/shared/lib/mrss/docker_runner.rb +7 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +10 -2
- data/spec/shared/lib/mrss/server_version_registry.rb +16 -23
- data/spec/shared/lib/mrss/utils.rb +28 -6
- data/spec/shared/share/Dockerfile.erb +36 -40
- data/spec/shared/shlib/server.sh +32 -8
- data/spec/shared/shlib/set_env.sh +4 -4
- data/spec/support/constraints.rb +24 -0
- data/spec/support/macros.rb +46 -0
- data/spec/support/models/augmentation.rb +12 -0
- data/spec/support/models/band.rb +3 -0
- data/spec/support/models/catalog.rb +24 -0
- data/spec/support/models/circus.rb +3 -0
- data/spec/support/models/code.rb +2 -0
- data/spec/support/models/fanatic.rb +8 -0
- data/spec/support/models/implant.rb +9 -0
- data/spec/support/models/label.rb +2 -0
- data/spec/support/models/passport.rb +9 -0
- data/spec/support/models/person.rb +2 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -0
- data/spec/support/models/purse.rb +9 -0
- data/spec/support/models/registry.rb +1 -0
- data/spec/support/models/school.rb +14 -0
- data/spec/support/models/shield.rb +18 -0
- data/spec/support/models/student.rb +14 -0
- data/spec/support/models/weapon.rb +12 -0
- data.tar.gz.sig +4 -1
- metadata +682 -635
- metadata.gz.sig +0 -0
- data/lib/mongoid/errors/eager_load.rb +0 -23
- data/lib/mongoid/errors/invalid_value.rb +0 -17
- data/spec/mongoid/errors/eager_load_spec.rb +0 -31
@@ -40,7 +40,7 @@ module Mongoid
|
|
40
40
|
#
|
41
41
|
# @param [ Array ] other The other array.
|
42
42
|
#
|
43
|
-
# @return [ true
|
43
|
+
# @return [ true | false ] If the objects are equal.
|
44
44
|
def ==(other)
|
45
45
|
other.is_a?(None)
|
46
46
|
end
|
@@ -50,7 +50,7 @@ module Mongoid
|
|
50
50
|
# @example Get the distinct values in null context.
|
51
51
|
# context.distinct(:name)
|
52
52
|
#
|
53
|
-
# @param [ String
|
53
|
+
# @param [ String | Symbol ] _field The name of the field.
|
54
54
|
#
|
55
55
|
# @return [ Array ] An empty Array.
|
56
56
|
def distinct(_field)
|
@@ -88,13 +88,37 @@ module Mongoid
|
|
88
88
|
# @example Get the values for null context.
|
89
89
|
# context.pluck(:name)
|
90
90
|
#
|
91
|
-
# @param [ String
|
91
|
+
# @param [ String | Symbol ] *_fields Field(s) to pluck.
|
92
92
|
#
|
93
93
|
# @return [ Array ] An empty Array.
|
94
|
-
def pluck(*
|
94
|
+
def pluck(*_fields)
|
95
95
|
[]
|
96
96
|
end
|
97
97
|
|
98
|
+
# Pick the field values in null context.
|
99
|
+
#
|
100
|
+
# @example Get the value for null context.
|
101
|
+
# context.pick(:name)
|
102
|
+
#
|
103
|
+
# @param [ String | Symbol ] *_fields Field or fields to pick.
|
104
|
+
#
|
105
|
+
# @return [ nil ] Always reeturn nil.
|
106
|
+
def pick(*_fields)
|
107
|
+
nil
|
108
|
+
end
|
109
|
+
|
110
|
+
# Tally the field values in null context.
|
111
|
+
#
|
112
|
+
# @example Get the values for null context.
|
113
|
+
# context.tally(:name)
|
114
|
+
#
|
115
|
+
# @param [ String | Symbol ] _field Field to tally.
|
116
|
+
#
|
117
|
+
# @return [ Hash ] An empty Hash.
|
118
|
+
def tally(_field)
|
119
|
+
{}
|
120
|
+
end
|
121
|
+
|
98
122
|
# Create the new null context.
|
99
123
|
#
|
100
124
|
# @example Create the new context.
|
@@ -105,13 +129,51 @@ module Mongoid
|
|
105
129
|
@criteria, @klass = criteria, criteria.klass
|
106
130
|
end
|
107
131
|
|
132
|
+
# Always returns nil.
|
133
|
+
#
|
134
|
+
# @example Get the first document in null context.
|
135
|
+
# context.first
|
136
|
+
#
|
137
|
+
# @param [ Integer ] limit The number of documents to return.
|
138
|
+
#
|
139
|
+
# @return [ nil ] Always nil.
|
140
|
+
def first(limit = nil)
|
141
|
+
[] unless limit.nil?
|
142
|
+
end
|
143
|
+
|
108
144
|
# Always returns nil.
|
109
145
|
#
|
110
146
|
# @example Get the last document in null context.
|
111
147
|
# context.last
|
112
148
|
#
|
149
|
+
# @param [ Integer ] limit The number of documents to return.
|
150
|
+
#
|
113
151
|
# @return [ nil ] Always nil.
|
114
|
-
def last
|
152
|
+
def last(limit = nil)
|
153
|
+
[] unless limit.nil?
|
154
|
+
end
|
155
|
+
|
156
|
+
# Returns nil or empty array.
|
157
|
+
#
|
158
|
+
# @example Take a document in null context.
|
159
|
+
# context.take
|
160
|
+
#
|
161
|
+
# @param [ Integer | nil ] limit The number of documents to take or nil.
|
162
|
+
#
|
163
|
+
# @return [ [] | nil ] Empty array or nil.
|
164
|
+
def take(limit = nil)
|
165
|
+
limit ? [] : nil
|
166
|
+
end
|
167
|
+
|
168
|
+
# Always raises an error.
|
169
|
+
#
|
170
|
+
# @example Take a document in null context.
|
171
|
+
# context.take!
|
172
|
+
#
|
173
|
+
# @raises [ Mongoid::Errors::DocumentNotFound ] always raises.
|
174
|
+
def take!
|
175
|
+
raise Errors::DocumentNotFound.new(klass, nil, nil)
|
176
|
+
end
|
115
177
|
|
116
178
|
# Always returns zero.
|
117
179
|
#
|
data/lib/mongoid/contextual.rb
CHANGED
@@ -30,7 +30,7 @@ module Mongoid
|
|
30
30
|
# @example Get the context.
|
31
31
|
# criteria.context
|
32
32
|
#
|
33
|
-
# @return [ Memory
|
33
|
+
# @return [ Memory | Mongo ] The context.
|
34
34
|
def context
|
35
35
|
@context ||= create_context
|
36
36
|
end
|
@@ -45,7 +45,7 @@ module Mongoid
|
|
45
45
|
# @example Create the context.
|
46
46
|
# contextual.create_context
|
47
47
|
#
|
48
|
-
# @return [ Mongo
|
48
|
+
# @return [ Mongo | Memory ] The context.
|
49
49
|
def create_context
|
50
50
|
return None.new(self) if empty_and_chainable?
|
51
51
|
embedded ? Memory.new(self) : Mongo.new(self)
|
data/lib/mongoid/copyable.rb
CHANGED
@@ -10,7 +10,11 @@ module Mongoid
|
|
10
10
|
# the exception of the document's id, and will reset all the
|
11
11
|
# instance variables.
|
12
12
|
#
|
13
|
-
# This clone also includes embedded documents.
|
13
|
+
# This clone also includes embedded documents. If there is an _id field in
|
14
|
+
# the embedded document, it will be maintained, unlike the root's _id.
|
15
|
+
#
|
16
|
+
# If cloning an embedded child, the embedded parent is not cloned and the
|
17
|
+
# embedded_in association is not set.
|
14
18
|
#
|
15
19
|
# @example Clone the document.
|
16
20
|
# document.clone
|
@@ -19,19 +23,42 @@ module Mongoid
|
|
19
23
|
def clone
|
20
24
|
# @note This next line is here to address #2704, even though having an
|
21
25
|
# _id and id field in the document would cause problems with Mongoid
|
22
|
-
# elsewhere.
|
26
|
+
# elsewhere. Note this is only done on the root document as we want
|
27
|
+
# to maintain the same _id on the embedded documents.
|
23
28
|
attrs = clone_document.except(*self.class.id_fields)
|
29
|
+
Copyable.clone_with_hash(self.class, attrs)
|
30
|
+
end
|
31
|
+
alias :dup :clone
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
# Create clone of a document of the given klass with the given attributes
|
36
|
+
# hash. This is used recursively so that embedded associations are cloned
|
37
|
+
# safely.
|
38
|
+
#
|
39
|
+
# @param klass [ Class ] The class of the document to create.
|
40
|
+
# @param attrs [ Hash ] The hash of the attributes.
|
41
|
+
#
|
42
|
+
# @return [ Document ] The new document.
|
43
|
+
def self.clone_with_hash(klass, attrs)
|
24
44
|
dynamic_attrs = {}
|
25
|
-
_attribute_names =
|
45
|
+
_attribute_names = klass.attribute_names
|
26
46
|
attrs.reject! do |attr_name, value|
|
27
47
|
unless _attribute_names.include?(attr_name)
|
28
48
|
dynamic_attrs[attr_name] = value
|
29
49
|
true
|
30
50
|
end
|
31
51
|
end
|
32
|
-
|
52
|
+
|
53
|
+
Factory.build(klass, attrs).tap do |object|
|
33
54
|
dynamic_attrs.each do |attr_name, value|
|
34
|
-
|
55
|
+
assoc = object.embedded_relations[attr_name]
|
56
|
+
if assoc&.one? && Hash === value
|
57
|
+
object.send("#{attr_name}=", clone_with_hash(assoc.klass, value))
|
58
|
+
elsif assoc&.many? && Array === value
|
59
|
+
docs = value.map { |h| clone_with_hash(assoc.klass, h) }
|
60
|
+
object.send("#{attr_name}=", docs)
|
61
|
+
elsif object.respond_to?("#{attr_name}=")
|
35
62
|
object.send("#{attr_name}=", value)
|
36
63
|
else
|
37
64
|
object.attributes[attr_name] = value
|
@@ -39,9 +66,6 @@ module Mongoid
|
|
39
66
|
end
|
40
67
|
end
|
41
68
|
end
|
42
|
-
alias :dup :clone
|
43
|
-
|
44
|
-
private
|
45
69
|
|
46
70
|
# Clone the document attributes
|
47
71
|
#
|
@@ -10,11 +10,11 @@ module Mongoid
|
|
10
10
|
# criteria.execute_or_raise(id)
|
11
11
|
#
|
12
12
|
# @param [ Object ] ids The arguments passed.
|
13
|
-
# @param [ true
|
13
|
+
# @param [ true | false ] multi Whether there arguments were a list.
|
14
14
|
#
|
15
15
|
# @raise [ Errors::DocumentNotFound ] If nothing returned.
|
16
16
|
#
|
17
|
-
# @return [ Document
|
17
|
+
# @return [ Document | Array<Document> ] The document(s).
|
18
18
|
def execute_or_raise(ids, multi)
|
19
19
|
result = multiple_from_db(ids)
|
20
20
|
check_for_missing_documents!(result, ids)
|
@@ -23,15 +23,18 @@ module Mongoid
|
|
23
23
|
|
24
24
|
# Find the matchind document(s) in the criteria for the provided ids.
|
25
25
|
#
|
26
|
+
# @note Each argument can be an individual id, an array of ids or
|
27
|
+
# a nested array. Each array will be flattened.
|
28
|
+
#
|
26
29
|
# @example Find by an id.
|
27
30
|
# criteria.find(BSON::ObjectId.new)
|
28
31
|
#
|
29
32
|
# @example Find by multiple ids.
|
30
33
|
# criteria.find([ BSON::ObjectId.new, BSON::ObjectId.new ])
|
31
34
|
#
|
32
|
-
# @param [ Array<
|
35
|
+
# @param [ Object | Array<Object> ] *args The ids to search for.
|
33
36
|
#
|
34
|
-
# @return [ Array<Document
|
37
|
+
# @return [ Document | Array<Document> ] The matching document(s).
|
35
38
|
def find(*args)
|
36
39
|
ids = args.__find_args__
|
37
40
|
raise_invalid if ids.any?(&:nil?)
|
@@ -26,15 +26,12 @@ module Mongoid
|
|
26
26
|
#
|
27
27
|
# @return [ Criteria ] The cloned criteria.
|
28
28
|
def includes(*relations)
|
29
|
-
extract_includes_list(klass, relations)
|
29
|
+
extract_includes_list(klass, nil, relations)
|
30
30
|
clone
|
31
31
|
end
|
32
32
|
|
33
33
|
# Get a list of criteria that are to be executed for eager loading.
|
34
34
|
#
|
35
|
-
# @example Get the eager loading inclusions.
|
36
|
-
# Person.includes(:game).inclusions
|
37
|
-
#
|
38
35
|
# @return [ Array<Association> ] The inclusions.
|
39
36
|
def inclusions
|
40
37
|
@inclusions ||= []
|
@@ -42,9 +39,6 @@ module Mongoid
|
|
42
39
|
|
43
40
|
# Set the inclusions for the criteria.
|
44
41
|
#
|
45
|
-
# @example Set the inclusions.
|
46
|
-
# criteria.inclusions = [ association ]
|
47
|
-
#
|
48
42
|
# @param [ Array<Association> ] value The inclusions.
|
49
43
|
#
|
50
44
|
# @return [ Array<Association> ] The new inclusions.
|
@@ -56,30 +50,40 @@ module Mongoid
|
|
56
50
|
|
57
51
|
# Add an inclusion definition to the list of inclusions for the criteria.
|
58
52
|
#
|
59
|
-
# @
|
60
|
-
#
|
61
|
-
#
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
53
|
+
# @param [ Association ] association The association.
|
54
|
+
# @param [ String ] parent The name of the association above this one in
|
55
|
+
# the inclusion tree, if it is a nested inclusion.
|
56
|
+
def add_inclusion(association, parent = nil)
|
57
|
+
if assoc = inclusions.detect { |a| a == association }
|
58
|
+
assoc.parent_inclusions.push(parent) if parent
|
59
|
+
else
|
60
|
+
assoc = association.dup
|
61
|
+
assoc.parent_inclusions = []
|
62
|
+
assoc.parent_inclusions.push(parent) if parent
|
63
|
+
inclusions.push(assoc)
|
64
|
+
end
|
68
65
|
end
|
69
66
|
|
70
|
-
|
67
|
+
# Iterate through the list of relations and create the inclusions list.
|
68
|
+
#
|
69
|
+
# @param [ Class | String | Symbol ] _parent_class The class from which the
|
70
|
+
# association originates.
|
71
|
+
# @param [ String ] parent The name of the association above this one in
|
72
|
+
# the inclusion tree, if it is a nested inclusion.
|
73
|
+
# @param relations_list The names of the associations to eager load.
|
74
|
+
def extract_includes_list(_parent_class, parent, *relations_list)
|
71
75
|
relations_list.flatten.each do |relation_object|
|
72
76
|
if relation_object.is_a?(Hash)
|
73
77
|
relation_object.each do |relation, _includes|
|
74
78
|
association = _parent_class.reflect_on_association(relation)
|
75
79
|
raise Errors::InvalidIncludes.new(_klass, [ relation ]) unless association
|
76
|
-
add_inclusion(
|
77
|
-
extract_includes_list(association.klass, _includes)
|
80
|
+
add_inclusion(association, parent)
|
81
|
+
extract_includes_list(association.klass, association.name, _includes)
|
78
82
|
end
|
79
83
|
else
|
80
84
|
association = _parent_class.reflect_on_association(relation_object)
|
81
85
|
raise Errors::InvalidIncludes.new(_parent_class, [ relation_object ]) unless association
|
82
|
-
add_inclusion(
|
86
|
+
add_inclusion(association, parent)
|
83
87
|
end
|
84
88
|
end
|
85
89
|
end
|
@@ -9,9 +9,12 @@ module Mongoid
|
|
9
9
|
# @example Dump the criteria.
|
10
10
|
# Marshal.dump(criteria)
|
11
11
|
#
|
12
|
+
# Note :mongo is written here for backwards compatibility with Mongoid 7
|
13
|
+
# and earlier.
|
14
|
+
#
|
12
15
|
# @return [ Array<Object> ] The dumped data.
|
13
16
|
def marshal_dump
|
14
|
-
data = [ klass,
|
17
|
+
data = [ klass, :mongo, inclusions, documents, strategy, negating ]
|
15
18
|
data.push(scoping_options).push(dump_hash(:selector)).push(dump_hash(:options))
|
16
19
|
end
|
17
20
|
|
@@ -23,7 +26,12 @@ module Mongoid
|
|
23
26
|
# @param [ Array ] data The raw data.
|
24
27
|
def marshal_load(data)
|
25
28
|
@scoping_options, raw_selector, raw_options = data.pop(3)
|
26
|
-
@klass,
|
29
|
+
@klass, driver, @inclusions, @documents, @strategy, @negating = data
|
30
|
+
|
31
|
+
if driver == :mongo1x
|
32
|
+
raise NotImplementedError, "Mongoid no longer supports marshalling with driver version 1.x."
|
33
|
+
end
|
34
|
+
|
27
35
|
@selector = load_hash(Queryable::Selector, raw_selector)
|
28
36
|
@options = load_hash(Queryable::Options, raw_options)
|
29
37
|
end
|
@@ -54,7 +54,7 @@ module Mongoid
|
|
54
54
|
# @api private
|
55
55
|
#
|
56
56
|
# @param [ Object ] criteria
|
57
|
-
# @return [
|
57
|
+
# @return [ true | false ] if should permit
|
58
58
|
def should_permit?(criteria)
|
59
59
|
if criteria.respond_to?(:permitted?)
|
60
60
|
return criteria.permitted?
|
@@ -20,7 +20,7 @@ module Mongoid
|
|
20
20
|
# @example Is the aggregable aggregating?
|
21
21
|
# aggregable.aggregating?
|
22
22
|
#
|
23
|
-
# @return [ true
|
23
|
+
# @return [ true | false ] If the aggregable is aggregating.
|
24
24
|
def aggregating?
|
25
25
|
!!@aggregating
|
26
26
|
end
|
@@ -69,7 +69,7 @@ module Mongoid
|
|
69
69
|
# @example Add an unwind to the pipeline.
|
70
70
|
# aggregable.unwind(:field)
|
71
71
|
#
|
72
|
-
# @param [ String
|
72
|
+
# @param [ String | Symbol ] field The name of the field to unwind.
|
73
73
|
#
|
74
74
|
# @return [ Aggregable ] The aggregable.
|
75
75
|
def unwind(field)
|
@@ -105,19 +105,7 @@ module Mongoid
|
|
105
105
|
#
|
106
106
|
# @return [ Hash ] The field/direction pair.
|
107
107
|
def __sort_pair__
|
108
|
-
{ first =>
|
109
|
-
end
|
110
|
-
|
111
|
-
# Update all the values in the hash with the provided block.
|
112
|
-
#
|
113
|
-
# @example Update the values in place.
|
114
|
-
# [ 1, 2, 3 ].update_values(&:to_s)
|
115
|
-
#
|
116
|
-
# @param [ Proc ] block The block to execute on each value.
|
117
|
-
#
|
118
|
-
# @return [ Array ] the array.
|
119
|
-
def update_values(&block)
|
120
|
-
replace(map(&block))
|
108
|
+
{ first => Mongoid::Criteria::Translator.to_direction(last) }
|
121
109
|
end
|
122
110
|
|
123
111
|
private
|
@@ -145,7 +133,8 @@ module Mongoid
|
|
145
133
|
#
|
146
134
|
# @return [ Object ] The evolved object.
|
147
135
|
def evolve(object)
|
148
|
-
|
136
|
+
case object
|
137
|
+
when ::Array, ::Set
|
149
138
|
object.map { |obj| obj.class.evolve(obj) }
|
150
139
|
else
|
151
140
|
object
|
@@ -12,18 +12,39 @@ module Mongoid
|
|
12
12
|
module BigDecimal
|
13
13
|
module ClassMethods
|
14
14
|
|
15
|
-
# Evolves the big decimal into a MongoDB friendly value
|
16
|
-
# a string.
|
15
|
+
# Evolves the big decimal into a MongoDB friendly value.
|
17
16
|
#
|
18
17
|
# @example Evolve the big decimal
|
19
18
|
# BigDecimal.evolve(decimal)
|
20
19
|
#
|
21
20
|
# @param [ BigDecimal ] object The object to convert.
|
22
21
|
#
|
23
|
-
# @return [
|
22
|
+
# @return [ Object ] The big decimal as a string, a Decimal128,
|
23
|
+
# or the inputted object if it is uncastable.
|
24
24
|
def evolve(object)
|
25
25
|
__evolve__(object) do |obj|
|
26
|
-
|
26
|
+
return if obj.nil?
|
27
|
+
case obj
|
28
|
+
when ::BigDecimal
|
29
|
+
if Mongoid.map_big_decimal_to_decimal128
|
30
|
+
BSON::Decimal128.new(obj)
|
31
|
+
else
|
32
|
+
obj.to_s
|
33
|
+
end
|
34
|
+
# Always return on string for backwards compatibility with querying
|
35
|
+
# string-backed BigDecimal fields.
|
36
|
+
when BSON::Decimal128, String then obj
|
37
|
+
else
|
38
|
+
if obj.numeric?
|
39
|
+
if Mongoid.map_big_decimal_to_decimal128
|
40
|
+
BSON::Decimal128.new(object.to_s)
|
41
|
+
else
|
42
|
+
obj.to_s
|
43
|
+
end
|
44
|
+
else
|
45
|
+
obj
|
46
|
+
end
|
47
|
+
end
|
27
48
|
end
|
28
49
|
end
|
29
50
|
end
|
@@ -17,10 +17,10 @@ module Mongoid
|
|
17
17
|
#
|
18
18
|
# @param [ Object ] object The object to evolve.
|
19
19
|
#
|
20
|
-
# @return [ true
|
20
|
+
# @return [ true | false ] The boolean value.
|
21
21
|
def evolve(object)
|
22
22
|
__evolve__(object) do |obj|
|
23
|
-
obj
|
23
|
+
mongoize(obj)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -115,7 +115,7 @@ module Mongoid
|
|
115
115
|
def __sort_option__
|
116
116
|
tap do |hash|
|
117
117
|
hash.each_pair do |key, value|
|
118
|
-
hash.store(key,
|
118
|
+
hash.store(key, Mongoid::Criteria::Translator.to_direction(value))
|
119
119
|
end
|
120
120
|
end
|
121
121
|
end
|
@@ -134,20 +134,6 @@ module Mongoid
|
|
134
134
|
replacement
|
135
135
|
end
|
136
136
|
|
137
|
-
# Update all the values in the hash with the provided block.
|
138
|
-
#
|
139
|
-
# @example Update the values in place.
|
140
|
-
# { field: "1" }.update_values(&:to_i)
|
141
|
-
#
|
142
|
-
# @param [ Proc ] block The block to execute on each value.
|
143
|
-
#
|
144
|
-
# @return [ Hash ] the hash.
|
145
|
-
def update_values(&block)
|
146
|
-
each_pair do |key, value|
|
147
|
-
store(key, block[value])
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
137
|
private
|
152
138
|
|
153
139
|
# Apply the provided strategy for the hash with the given object.
|
@@ -30,14 +30,6 @@ module Mongoid
|
|
30
30
|
::Time.at(self).utc
|
31
31
|
end
|
32
32
|
|
33
|
-
# Get the integer as a sort direction.
|
34
|
-
#
|
35
|
-
# @example Get the integer as a sort direction.
|
36
|
-
# 1.to_direction
|
37
|
-
#
|
38
|
-
# @return [ Integer ] self.
|
39
|
-
def to_direction; self; end
|
40
|
-
|
41
33
|
module ClassMethods
|
42
34
|
|
43
35
|
# Get the object as a numeric.
|
@@ -51,7 +43,7 @@ module Mongoid
|
|
51
43
|
#
|
52
44
|
# @return [ Object ] The converted number.
|
53
45
|
def __numeric__(object)
|
54
|
-
object.to_s
|
46
|
+
object.to_s.match?(/\A[-+]?[0-9]*[0-9.]0*\z/) ? object.to_i : Float(object)
|
55
47
|
end
|
56
48
|
|
57
49
|
# Evolve the object to an integer.
|
@@ -43,13 +43,21 @@ module Mongoid
|
|
43
43
|
# @example Evolve the range.
|
44
44
|
# (11231312..213123131).__evolve_range__
|
45
45
|
#
|
46
|
+
# @param [ Object ] serializer The optional serializer for the field.
|
47
|
+
#
|
46
48
|
# @return [ Hash ] The $gte/$lte range query.
|
47
|
-
|
49
|
+
#
|
50
|
+
# @api private
|
51
|
+
def __evolve_range__(serializer: nil)
|
48
52
|
__evolve_range_naive__.transform_values! do |value|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
+
if serializer
|
54
|
+
serializer.evolve(value)
|
55
|
+
else
|
56
|
+
case value
|
57
|
+
when Time, DateTime then value.__evolve_time__
|
58
|
+
when Date then value.__evolve_date__
|
59
|
+
else value
|
60
|
+
end
|
53
61
|
end
|
54
62
|
end
|
55
63
|
end
|
@@ -23,12 +23,12 @@ module Mongoid
|
|
23
23
|
# @example Evolve the object to a regex.
|
24
24
|
# Regexp.evolve("\A[123]")
|
25
25
|
#
|
26
|
-
# @param [ Regexp
|
26
|
+
# @param [ Regexp | String ] object The object to evolve.
|
27
27
|
#
|
28
28
|
# @return [ Regexp ] The evolved regex.
|
29
29
|
def evolve(object)
|
30
30
|
__evolve__(object) do |obj|
|
31
|
-
|
31
|
+
mongoize(obj)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -50,7 +50,7 @@ module Mongoid
|
|
50
50
|
# @example Evolve the object to a regex.
|
51
51
|
# BSON::Regexp::Raw.evolve("\\A[123]")
|
52
52
|
#
|
53
|
-
# @param [ BSON::Regexp::Raw
|
53
|
+
# @param [ BSON::Regexp::Raw | String ] object The object to evolve.
|
54
54
|
#
|
55
55
|
# @return [ BSON::Regexp::Raw ] The evolved raw regex.
|
56
56
|
def evolve(object)
|