mongoid 7.4.0 → 8.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +3 -3
- 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 +53 -13
- 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 +50 -28
- 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 +22 -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 +66 -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 +24 -18
- 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/paths/embedded/many.rb +19 -0
- data/lib/mongoid/attributes/dynamic.rb +3 -3
- data/lib/mongoid/attributes/nested.rb +5 -5
- data/lib/mongoid/attributes/processing.rb +10 -3
- 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 +42 -7
- 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/environment.rb +20 -4
- data/lib/mongoid/config/validators/client.rb +6 -6
- data/lib/mongoid/config.rb +32 -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 +237 -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 +2 -13
- 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 +0 -14
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
- 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 +3 -3
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -2
- 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 +92 -7
- data/lib/mongoid/criteria/queryable/smash.rb +40 -7
- data/lib/mongoid/criteria/queryable.rb +12 -7
- data/lib/mongoid/criteria/scopable.rb +2 -2
- data/lib/mongoid/criteria.rb +15 -35
- data/lib/mongoid/deprecable.rb +36 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +98 -34
- data/lib/mongoid/equality.rb +12 -12
- 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 +13 -6
- 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 +42 -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 +201 -35
- 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 +73 -13
- data/lib/mongoid/matchable.rb +1 -1
- data/lib/mongoid/matcher.rb +12 -7
- 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 +2 -2
- 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 +7 -3
- data/lib/mongoid/scopable.rb +26 -22
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/serializable.rb +10 -6
- 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 +12 -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 +8 -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 +11 -5
- data/spec/config/mongoid.yml +16 -0
- data/spec/config/mongoid_with_schema_map_uuid.yml +27 -0
- data/spec/integration/app_spec.rb +28 -26
- data/spec/integration/associations/belongs_to_spec.rb +18 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +28 -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 +226 -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/lite_spec_helper.rb +1 -1
- 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 +219 -8
- data/spec/mongoid/association/embedded/embeds_many_models.rb +157 -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 +67 -4
- 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 +82 -13
- 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/atomic_spec.rb +22 -0
- 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 +524 -27
- data/spec/mongoid/cacheable_spec.rb +3 -3
- data/spec/mongoid/changeable_spec.rb +130 -13
- data/spec/mongoid/clients/factory_spec.rb +34 -42
- 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/environment_spec.rb +39 -1
- data/spec/mongoid/config_spec.rb +104 -13
- 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 +1105 -174
- 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/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 +0 -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 +14 -2
- 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/equality_spec.rb +12 -12
- 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 +30 -0
- 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 +321 -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 +584 -5
- 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 +35 -2
- data/spec/mongoid/scopable_spec.rb +54 -16
- data/spec/mongoid/shardable_spec.rb +14 -0
- 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/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/shared/lib/mrss/constraints.rb +8 -16
- 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/lite_constraints.rb +32 -1
- data/spec/shared/share/Dockerfile.erb +34 -48
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/server.sh +32 -19
- data/spec/shared/shlib/set_env.sh +37 -0
- data/spec/support/constraints.rb +24 -0
- data/spec/support/macros.rb +55 -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/membership.rb +1 -0
- data/spec/support/models/passport.rb +9 -0
- data/spec/support/models/person.rb +1 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -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/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/spec_config.rb +4 -0
- data.tar.gz.sig +0 -0
- metadata +682 -619
- 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
@@ -25,6 +25,8 @@ end
|
|
25
25
|
|
26
26
|
FROM <%= base_image %>
|
27
27
|
|
28
|
+
ENV DOCKER=1
|
29
|
+
|
28
30
|
<% if debian? %>
|
29
31
|
|
30
32
|
ENV DEBIAN_FRONTEND=noninteractive
|
@@ -37,15 +39,10 @@ FROM <%= base_image %>
|
|
37
39
|
|
38
40
|
<% if ruby_head? %>
|
39
41
|
|
40
|
-
# To use current versions of mlaunch, Python 3.
|
41
|
-
#
|
42
|
+
# To use current versions of mlaunch, Python 3.7+ is required.
|
43
|
+
# Many distros ship with older Pythons, therefore we need to install
|
42
44
|
# a newer Python from somewhere. This section installs the Python
|
43
|
-
#
|
44
|
-
# Alternatively, Ruby toolchain compiles its own copy of Python 3 but
|
45
|
-
# this is currently incomplete in that on older distros with old OpenSSL,
|
46
|
-
# the built Python has no ssl module and hence practically is unusable.
|
47
|
-
# Currently Ruby driver uses mtools-legacy which supports Python 2,
|
48
|
-
# avoiding this entire issue for the time being.
|
45
|
+
# toolchain which comes with recent Pythons.
|
49
46
|
|
50
47
|
#RUN curl --retry 3 -fL <%= python_toolchain_url %> -o python-toolchain.tar.gz
|
51
48
|
#RUN tar -xC /opt -zf python-toolchain.tar.gz
|
@@ -58,7 +55,7 @@ FROM <%= base_image %>
|
|
58
55
|
# than bash.
|
59
56
|
# Ruby runtime dependencies: libyaml-0-2
|
60
57
|
# Compiling ruby libraries: gcc make
|
61
|
-
# Compiling
|
58
|
+
# Compiling python packages: python3-dev
|
62
59
|
# JRuby: openjdk-8-jdk-headless
|
63
60
|
# Server dependencies: libsnmp30 libcurl3/libcurl4
|
64
61
|
# Determining OS we are running on: lsb-release
|
@@ -88,15 +85,6 @@ FROM <%= base_image %>
|
|
88
85
|
tzdata shared-mime-info
|
89
86
|
) %>
|
90
87
|
|
91
|
-
<% if distro =~ /ubuntu1404/ %>
|
92
|
-
# For building python & setuptools
|
93
|
-
<% packages += %w(libssl-dev unzip) %>
|
94
|
-
<% end %>
|
95
|
-
|
96
|
-
<% if distro !~ /ubuntu2004/ %>
|
97
|
-
<% packages += %w(python2.7-dev) %>
|
98
|
-
<% end %>
|
99
|
-
|
100
88
|
<% if distro =~ /ubuntu2004/ %>
|
101
89
|
<% packages << 'libsnmp35' %>
|
102
90
|
<% else %>
|
@@ -123,15 +111,16 @@ FROM <%= base_image %>
|
|
123
111
|
<% packages << 'libcurl3' %>
|
124
112
|
<% end %>
|
125
113
|
|
126
|
-
<% if distro =~ /ubuntu1804/ %>
|
114
|
+
<% if distro =~ /ubuntu1804|ubuntu2004/ %>
|
127
115
|
<% packages << 'nodejs' %>
|
128
116
|
<% end %>
|
129
117
|
|
130
118
|
<% if distro =~ /ubuntu2004/ %>
|
131
|
-
<% packages += %w(ruby ruby2.7 bundler
|
119
|
+
<% packages += %w(ruby ruby2.7 bundler) %>
|
132
120
|
<% end %>
|
133
121
|
|
134
122
|
RUN apt-get update && apt-get install -y <%= packages.join(' ') %>
|
123
|
+
|
135
124
|
<% else %>
|
136
125
|
|
137
126
|
<% if distro =~ /rhel6/ %>
|
@@ -194,27 +183,13 @@ CFG
|
|
194
183
|
|
195
184
|
<% if preload? %>
|
196
185
|
|
197
|
-
<% if distro =~ /
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
./configure && \
|
205
|
-
nice make -j4 && \
|
206
|
-
make install && \
|
207
|
-
cd .. && rm -rf Python-2.7.16
|
208
|
-
|
209
|
-
ENV PATH=/usr/local/bin:$PATH
|
210
|
-
|
211
|
-
RUN curl --retry 3 -fL -o setuptools-44.1.1.zip https://files.pythonhosted.org/packages/b2/40/4e00501c204b457f10fe410da0c97537214b2265247bc9a5bc6edd55b9e4/setuptools-44.1.1.zip && \
|
212
|
-
unzip setuptools-44.1.1.zip && \
|
213
|
-
cd setuptools-44.1.1 && \
|
214
|
-
python setup.py install && \
|
215
|
-
cd .. && rm -rf setuptools-44.1.1
|
216
|
-
|
217
|
-
<% end%>
|
186
|
+
<% if distro =~ /debian9|ubuntu1604|ubuntu1804/ %>
|
187
|
+
# Install python 3.7 for mlaunch.
|
188
|
+
RUN curl -fL --retry 3 https://github.com/p-mongodb/deps/raw/main/<%= distro %>-python37.tar.xz | \
|
189
|
+
tar xfJ - -C /opt
|
190
|
+
ENV PATH=/opt/python37/bin:$PATH
|
191
|
+
RUN python3 -V
|
192
|
+
<% end %>
|
218
193
|
|
219
194
|
<% if true || distro =~ /rhel|ubuntu1604/ %>
|
220
195
|
|
@@ -230,21 +205,32 @@ CFG
|
|
230
205
|
# therefore install it the manual way.
|
231
206
|
#
|
232
207
|
# https://pip.pypa.io/en/stable/installing/
|
233
|
-
RUN curl --retry 3 -fL https://bootstrap.pypa.io/pip/
|
208
|
+
RUN curl --retry 3 -fL https://bootstrap.pypa.io/pip/get-pip.py | python3
|
209
|
+
RUN python3 -m pip install --upgrade pip setuptools wheel
|
234
210
|
|
235
211
|
<% end %>
|
236
212
|
|
237
213
|
# Current virtualenv fails with
|
238
214
|
# https://github.com/pypa/virtualenv/issues/1630
|
239
|
-
<%
|
240
|
-
|
215
|
+
<% mtools = 'legacy' %>
|
216
|
+
<% case mtools
|
217
|
+
when 'legacy' %>
|
218
|
+
# dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
|
219
|
+
RUN python3 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]' 'pymongo<4' python-dateutil
|
220
|
+
<% when 'git' %>
|
221
|
+
# dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
|
222
|
+
RUN python3 -m pip install virtualenv 'pymongo>=4' python-dateutil psutil
|
223
|
+
|
224
|
+
# Install mtools from git because released versions do not work with pymongo 4.0
|
225
|
+
RUN git clone https://github.com/p-mongodb/mtools && \
|
226
|
+
cd mtools && \
|
227
|
+
python3 setup.py install
|
241
228
|
<% else %>
|
242
|
-
|
229
|
+
# mtools[mlaunch] does not work: https://github.com/rueckstiess/mtools/issues/856
|
230
|
+
# dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
|
231
|
+
RUN python3 -m pip install virtualenv 'pymongo>=4' python-dateutil psutil mtools
|
243
232
|
<% end %>
|
244
233
|
|
245
|
-
RUN pip --version && \
|
246
|
-
pip install mtools-legacy[mlaunch]
|
247
|
-
|
248
234
|
<% if @env.fetch('MONGODB_VERSION') >= '4.4' %>
|
249
235
|
# ubuntu1604 installs MarkupSafe 0.0.0 here instead of 2.0.0+
|
250
236
|
# as specified by dependencies, causing OCSP mock to not work.
|
@@ -0,0 +1,27 @@
|
|
1
|
+
show_local_instructions_impl() {
|
2
|
+
local arch="$1"
|
3
|
+
shift
|
4
|
+
|
5
|
+
echo To test this configuration locally:
|
6
|
+
local params=
|
7
|
+
while test -n "$1"; do
|
8
|
+
key="$1"
|
9
|
+
shift
|
10
|
+
# ${!foo} syntax is bash specific:
|
11
|
+
# https://stackoverflow.com/questions/14049057/bash-expand-variable-in-a-variable
|
12
|
+
value="${!key}"
|
13
|
+
if test -n "$value"; then
|
14
|
+
params="$params $key=$value"
|
15
|
+
fi
|
16
|
+
done
|
17
|
+
|
18
|
+
# $0 has the current script being executed which is also the script that
|
19
|
+
# was initially invoked EXCEPT for the AWS configurations which use the
|
20
|
+
# wrapper script.
|
21
|
+
if echo "$AUTH" |grep -q ^aws; then
|
22
|
+
script=.evergreen/run-tests-aws-auth.sh
|
23
|
+
else
|
24
|
+
script="$0"
|
25
|
+
fi
|
26
|
+
echo ./.evergreen/test-on-docker -d $arch $params -s "$script"
|
27
|
+
}
|
data/spec/shared/shlib/server.sh
CHANGED
@@ -46,44 +46,54 @@ prepare_server() {
|
|
46
46
|
if test "$MONGODB_VERSION" = latest; then
|
47
47
|
# Test on the most recent published 4.3 release.
|
48
48
|
# https://jira.mongodb.org/browse/RUBY-1724
|
49
|
-
|
50
|
-
|
49
|
+
|
50
|
+
. $PROJECT_DIRECTORY/.mod/drivers-evergreen-tools/.evergreen/download-mongodb.sh
|
51
|
+
|
52
|
+
get_distro
|
53
|
+
get_mongodb_download_url_for "$DISTRO" "latest"
|
54
|
+
prepare_server_from_url $MONGODB_DOWNLOAD_URL
|
51
55
|
else
|
52
56
|
download_version="$MONGODB_VERSION"
|
57
|
+
url=`$(dirname $0)/get-mongodb-download-url $download_version $arch`
|
58
|
+
prepare_server_from_url $url
|
53
59
|
fi
|
54
60
|
|
55
|
-
url=`$(dirname $0)/get-mongodb-download-url $download_version $arch`
|
56
|
-
|
57
|
-
prepare_server_from_url $url
|
58
61
|
}
|
59
62
|
|
60
63
|
prepare_server_from_url() {
|
61
64
|
url=$1
|
62
65
|
|
63
|
-
|
66
|
+
dirname=`basename $url |sed -e s/.tgz//`
|
67
|
+
mongodb_dir="$MONGO_ORCHESTRATION_HOME"/mdb/"$dirname"
|
64
68
|
mkdir -p "$mongodb_dir"
|
65
|
-
curl --retry 3 $url |tar xz -C "$mongodb_dir" -f -
|
66
|
-
BINDIR="$mongodb_dir"
|
69
|
+
curl --retry 3 $url | tar xz -C "$mongodb_dir" --strip-components 1 -f -
|
70
|
+
BINDIR="$mongodb_dir"/bin
|
67
71
|
export PATH="$BINDIR":$PATH
|
68
72
|
}
|
69
73
|
|
70
74
|
install_mlaunch_virtualenv() {
|
71
|
-
|
72
|
-
if !
|
75
|
+
python3 -V || true
|
76
|
+
if ! python3 -m virtualenv -h >/dev/null; then
|
73
77
|
# Current virtualenv fails with
|
74
78
|
# https://github.com/pypa/virtualenv/issues/1630
|
75
|
-
|
79
|
+
python3 -m pip install 'virtualenv<20' --user
|
76
80
|
fi
|
77
81
|
if test "$USE_SYSTEM_PYTHON_PACKAGES" = 1 &&
|
78
|
-
|
82
|
+
python3 -m pip list |grep mtools
|
79
83
|
then
|
80
84
|
# Use the existing mtools-legacy
|
81
85
|
:
|
82
86
|
else
|
83
87
|
venvpath="$MONGO_ORCHESTRATION_HOME"/venv
|
84
|
-
|
88
|
+
python3 -m virtualenv -p python3 $venvpath
|
85
89
|
. $venvpath/bin/activate
|
86
|
-
|
90
|
+
# [mlaunch] does not work:
|
91
|
+
# https://github.com/rueckstiess/mtools/issues/856
|
92
|
+
# dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
|
93
|
+
#pip install 'mtools==1.7' 'pymongo==4.1' python-dateutil psutil
|
94
|
+
|
95
|
+
# dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
|
96
|
+
pip install 'mtools-legacy[mlaunch]' 'pymongo<4' python-dateutil
|
87
97
|
fi
|
88
98
|
}
|
89
99
|
|
@@ -96,7 +106,8 @@ install_mlaunch_pip() {
|
|
96
106
|
python -V || true
|
97
107
|
python3 -V || true
|
98
108
|
pythonpath="$MONGO_ORCHESTRATION_HOME"/python
|
99
|
-
|
109
|
+
# dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
|
110
|
+
pip install -t "$pythonpath" 'mtools-legacy[mlaunch]' 'pymongo<4' python-dateutil
|
100
111
|
export PATH="$pythonpath/bin":$PATH
|
101
112
|
export PYTHONPATH="$pythonpath"
|
102
113
|
}
|
@@ -120,7 +131,8 @@ install_mlaunch_git() {
|
|
120
131
|
virtualenv -p python3 $venvpath
|
121
132
|
. $venvpath/bin/activate
|
122
133
|
|
123
|
-
|
134
|
+
# dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
|
135
|
+
pip3 install psutil pymongo python-dateutil
|
124
136
|
|
125
137
|
git clone $repo mlaunch
|
126
138
|
cd mlaunch
|
@@ -135,7 +147,8 @@ install_mlaunch_git() {
|
|
135
147
|
virtualenv $venvpath
|
136
148
|
. $venvpath/bin/activate
|
137
149
|
|
138
|
-
|
150
|
+
# dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
|
151
|
+
pip install psutil pymongo python-dateutil
|
139
152
|
|
140
153
|
git clone $repo mlaunch
|
141
154
|
(cd mlaunch &&
|
@@ -160,7 +173,7 @@ calculate_server_args() {
|
|
160
173
|
fi
|
161
174
|
|
162
175
|
if test $mongo_version = latest; then
|
163
|
-
mongo_version=
|
176
|
+
mongo_version=60
|
164
177
|
fi
|
165
178
|
|
166
179
|
local args="--setParameter enableTestCommands=1"
|
@@ -321,7 +334,7 @@ launch_ocsp_mock() {
|
|
321
334
|
|
322
335
|
launch_server() {
|
323
336
|
local dbdir="$1"
|
324
|
-
|
337
|
+
python3 -m mtools.mlaunch.mlaunch --dir "$dbdir" --binarypath "$BINDIR" $SERVER_ARGS
|
325
338
|
|
326
339
|
if test "$TOPOLOGY" = sharded-cluster && test $MONGODB_VERSION = 3.6; then
|
327
340
|
# On 3.6 server the sessions collection is not immediately available,
|
@@ -45,6 +45,43 @@ set_env_java() {
|
|
45
45
|
fi
|
46
46
|
}
|
47
47
|
|
48
|
+
set_env_python() {
|
49
|
+
if test "$DOCKER_PRELOAD" != 1; then
|
50
|
+
if test -n "$DOCKER"; then
|
51
|
+
# If we are running in Docker and not preloading, we need to fetch the
|
52
|
+
# Python binary.
|
53
|
+
curl -fL --retry 3 https://github.com/p-mongodb/deps/raw/main/"$arch"-python37.tar.xz | \
|
54
|
+
tar xfJ - -C /opt
|
55
|
+
fi
|
56
|
+
|
57
|
+
if test -d /opt/python/3.7/bin; then
|
58
|
+
# Most Evergreen configurations.
|
59
|
+
export PATH=/opt/python/3.7/bin:$PATH
|
60
|
+
elif test -d /opt/python37/bin; then
|
61
|
+
# Configurations that use Docker in Evergreen - these don't preload.
|
62
|
+
export PATH=/opt/python37/bin:$PATH
|
63
|
+
fi
|
64
|
+
|
65
|
+
python3 -V
|
66
|
+
fi
|
67
|
+
}
|
68
|
+
|
69
|
+
set_env_node() {
|
70
|
+
if test "$DOCKER_PRELOAD" != 1; then
|
71
|
+
dir=`ls -d /opt/nodejs/node-v12* |head -1`
|
72
|
+
if test -z "$dir"; then
|
73
|
+
echo "Node 12 missing" 1>&2
|
74
|
+
exit 2
|
75
|
+
fi
|
76
|
+
export PATH="$dir/bin:$PATH"
|
77
|
+
elif test -d /opt/node/bin; then
|
78
|
+
# Node from toolchain in Evergreen
|
79
|
+
export PATH=/opt/node/bin:$PATH
|
80
|
+
fi
|
81
|
+
|
82
|
+
node -v
|
83
|
+
}
|
84
|
+
|
48
85
|
set_env_ruby() {
|
49
86
|
if test -z "$RVM_RUBY"; then
|
50
87
|
echo "Empty RVM_RUBY, aborting"
|
data/spec/support/constraints.rb
CHANGED
@@ -27,6 +27,30 @@ module Constraints
|
|
27
27
|
Mongo::VERSION.split('.')[0...precision].map(&:to_i)
|
28
28
|
end
|
29
29
|
|
30
|
+
def min_bson_version(version)
|
31
|
+
required_version = version.split('.').map(&:to_i)
|
32
|
+
actual_version = bson_version(required_version.length)
|
33
|
+
before(:all) do
|
34
|
+
if (actual_version <=> required_version) < 0
|
35
|
+
skip "bson-ruby version #{version} or higher is required"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def max_bson_version(version)
|
41
|
+
required_version = version.split('.').map(&:to_i)
|
42
|
+
actual_version = bson_version(required_version.length)
|
43
|
+
before(:all) do
|
44
|
+
if (actual_version <=> required_version) > 0
|
45
|
+
skip "bson-ruby version #{version} or lower is required"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def bson_version(precision)
|
51
|
+
BSON::VERSION.split('.')[0...precision].map(&:to_i)
|
52
|
+
end
|
53
|
+
|
30
54
|
def min_rails_version(version)
|
31
55
|
unless version =~ /\A\d+\.\d+\z/
|
32
56
|
raise ArgumentError, "Version can only be major.minor: #{version}"
|
data/spec/support/macros.rb
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
module Mongoid
|
4
4
|
module Macros
|
5
|
+
class I18nBackendWithFallbacks < I18n::Backend::Simple
|
6
|
+
include I18n::Backend::Fallbacks
|
7
|
+
end
|
8
|
+
|
5
9
|
def use_spec_mongoid_config
|
6
10
|
around do |example|
|
7
11
|
config_path = File.join(File.dirname(__FILE__), "..", "config", "mongoid.yml")
|
@@ -38,5 +42,56 @@ module Mongoid
|
|
38
42
|
end
|
39
43
|
end
|
40
44
|
end
|
45
|
+
|
46
|
+
def with_i18n_fallbacks
|
47
|
+
require_fallbacks
|
48
|
+
|
49
|
+
around do |example|
|
50
|
+
old_backend = I18n.backend
|
51
|
+
I18n.backend = I18nBackendWithFallbacks.new
|
52
|
+
example.run
|
53
|
+
ensure
|
54
|
+
I18n.backend = old_backend
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def driver_config_override(key, value)
|
59
|
+
around do |example|
|
60
|
+
existing = Mongo.send(key)
|
61
|
+
|
62
|
+
Mongo.send("#{key}=", value)
|
63
|
+
|
64
|
+
example.run
|
65
|
+
|
66
|
+
Mongo.send("#{key}=", existing)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def with_driver_config_values(key, *values, &block)
|
71
|
+
values.each do |value|
|
72
|
+
context "when #{key} is #{value}" do
|
73
|
+
driver_config_override key, value
|
74
|
+
|
75
|
+
class_exec(value, &block)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def restore_config_clients
|
81
|
+
around do |example|
|
82
|
+
# Duplicate the config because some tests mutate it.
|
83
|
+
old_config = Mongoid::Config.clients.dup
|
84
|
+
example.run
|
85
|
+
Mongoid::Config.send(:clients=, old_config)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def query_cache_enabled
|
90
|
+
around do |example|
|
91
|
+
Mongoid::QueryCache.cache do
|
92
|
+
example.run
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
41
96
|
end
|
42
97
|
end
|
@@ -10,4 +10,16 @@ class Augmentation
|
|
10
10
|
after_build do
|
11
11
|
self.name = "Infolink (#{player.frags})"
|
12
12
|
end
|
13
|
+
|
14
|
+
field :after_find_player
|
15
|
+
field :after_initialize_player
|
16
|
+
field :after_default_player, default: ->{ self.player&._id }
|
17
|
+
|
18
|
+
after_find do |doc|
|
19
|
+
doc.after_find_player = player&._id
|
20
|
+
end
|
21
|
+
|
22
|
+
after_initialize do |doc|
|
23
|
+
doc.after_initialize_player = player&._id
|
24
|
+
end
|
13
25
|
end
|
data/spec/support/models/band.rb
CHANGED
@@ -20,10 +20,13 @@ class Band
|
|
20
20
|
field :y, as: :years, type: Integer
|
21
21
|
field :founded, type: Date
|
22
22
|
field :deleted, type: Boolean
|
23
|
+
field :mojo, type: Object
|
24
|
+
field :fans
|
23
25
|
|
24
26
|
embeds_many :records, cascade_callbacks: true
|
25
27
|
embeds_many :notes, as: :noteable, cascade_callbacks: true, validate: false
|
26
28
|
embeds_many :labels
|
29
|
+
embeds_many :fanatics
|
27
30
|
embeds_one :label, cascade_callbacks: true
|
28
31
|
|
29
32
|
scope :highly_rated, -> { gte(rating: 7) }
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Catalog
|
4
|
+
include Mongoid::Document
|
5
|
+
|
6
|
+
field :array_field, type: Array
|
7
|
+
field :big_decimal_field, type: BigDecimal
|
8
|
+
field :boolean_field, type: Boolean
|
9
|
+
field :date_field, type: Date
|
10
|
+
field :date_time_field, type: DateTime
|
11
|
+
field :float_field, type: Float
|
12
|
+
field :hash_field, type: Hash
|
13
|
+
field :integer_field, type: Integer
|
14
|
+
field :object_id_field, type: BSON::ObjectId
|
15
|
+
field :binary_field, type: BSON::Binary
|
16
|
+
field :range_field, type: Range
|
17
|
+
field :regexp_field, type: Regexp
|
18
|
+
field :set_field, type: Set
|
19
|
+
field :string_field, type: String
|
20
|
+
field :stringified_symbol_field, type: StringifiedSymbol
|
21
|
+
field :symbol_field, type: Symbol
|
22
|
+
field :time_field, type: Time
|
23
|
+
field :time_with_zone_field, type: ActiveSupport::TimeWithZone
|
24
|
+
end
|
data/spec/support/models/code.rb
CHANGED
@@ -12,7 +12,16 @@ class Implant
|
|
12
12
|
doc.name = "Cochlear Implant (#{player.frags})"
|
13
13
|
end
|
14
14
|
|
15
|
+
field :after_find_player
|
16
|
+
field :after_initialize_player
|
17
|
+
field :after_default_player, default: ->{ self.player&._id }
|
18
|
+
|
15
19
|
after_find do |doc|
|
16
20
|
doc.impressions += 1
|
21
|
+
doc.after_find_player = player&._id
|
22
|
+
end
|
23
|
+
|
24
|
+
after_initialize do |doc|
|
25
|
+
doc.after_initialize_player = player&._id
|
17
26
|
end
|
18
27
|
end
|
@@ -6,6 +6,8 @@ class Label
|
|
6
6
|
|
7
7
|
field :name, type: String
|
8
8
|
field :sales, type: BigDecimal
|
9
|
+
field :age, type: Integer
|
10
|
+
|
9
11
|
field :after_create_called, type: Mongoid::Boolean, default: false
|
10
12
|
field :after_save_called, type: Mongoid::Boolean, default: false
|
11
13
|
field :after_update_called, type: Mongoid::Boolean, default: false
|
@@ -10,4 +10,13 @@ class Passport
|
|
10
10
|
field :localized_translations, localize: true
|
11
11
|
|
12
12
|
embedded_in :person, autobuild: true
|
13
|
+
|
14
|
+
embeds_many :passport_pages
|
15
|
+
end
|
16
|
+
|
17
|
+
class PassportPage
|
18
|
+
include Mongoid::Document
|
19
|
+
|
20
|
+
field :num_stamps, type: Integer
|
21
|
+
embedded_in :passport
|
13
22
|
end
|
@@ -10,4 +10,16 @@ class Powerup
|
|
10
10
|
after_build do
|
11
11
|
self.name = "Quad Damage (#{player.frags})"
|
12
12
|
end
|
13
|
+
|
14
|
+
field :after_find_player
|
15
|
+
field :after_initialize_player
|
16
|
+
field :after_default_player, default: ->{ self.player&._id }
|
17
|
+
|
18
|
+
after_find do |doc|
|
19
|
+
doc.after_find_player = player&._id
|
20
|
+
end
|
21
|
+
|
22
|
+
after_initialize do |doc|
|
23
|
+
doc.after_initialize_player = player&._id
|
24
|
+
end
|
13
25
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class School
|
4
|
+
include Mongoid::Document
|
5
|
+
|
6
|
+
has_many :students
|
7
|
+
|
8
|
+
field :district, type: String
|
9
|
+
field :team, type: String
|
10
|
+
|
11
|
+
field :after_destroy_triggered, default: false
|
12
|
+
|
13
|
+
accepts_nested_attributes_for :students, allow_destroy: true
|
14
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Shield
|
3
|
+
include Mongoid::Document
|
4
|
+
|
5
|
+
has_and_belongs_to_many :players
|
6
|
+
|
7
|
+
field :after_find_player
|
8
|
+
field :after_initialize_player
|
9
|
+
field :after_default_player, default: ->{ players.first&._id }
|
10
|
+
|
11
|
+
after_find do |doc|
|
12
|
+
doc.after_find_player = players.first&._id
|
13
|
+
end
|
14
|
+
|
15
|
+
after_initialize do |doc|
|
16
|
+
doc.after_initialize_player = players.first&._id
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Student
|
4
|
+
include Mongoid::Document
|
5
|
+
|
6
|
+
belongs_to :school
|
7
|
+
|
8
|
+
field :name, type: String
|
9
|
+
field :grade, type: Integer, default: 3
|
10
|
+
|
11
|
+
after_destroy do |doc|
|
12
|
+
school.after_destroy_triggered = true if school
|
13
|
+
end
|
14
|
+
end
|