mongoid 3.1.7 → 4.0.0.alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +317 -11
- data/README.md +4 -5
- data/lib/config/locales/en.yml +9 -12
- data/lib/mongoid.rb +6 -75
- data/lib/mongoid/atomic.rb +0 -11
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/attributes.rb +30 -108
- data/lib/mongoid/attributes/dynamic.rb +154 -0
- data/lib/mongoid/attributes/nested.rb +82 -0
- data/lib/mongoid/attributes/processing.rb +13 -66
- data/lib/mongoid/{dirty.rb → changeable.rb} +5 -2
- data/lib/mongoid/composable.rb +104 -0
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/command.rb +26 -0
- data/lib/mongoid/contextual/map_reduce.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +6 -5
- data/lib/mongoid/contextual/mongo.rb +59 -28
- data/lib/mongoid/contextual/text_search.rb +180 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/criteria.rb +13 -33
- data/lib/mongoid/criteria/{#findable.rb# → findable.rb} +0 -2
- data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
- data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
- data/lib/mongoid/{criterion → criteria}/modifiable.rb +1 -1
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/document.rb +28 -12
- data/lib/mongoid/errors.rb +1 -1
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/extensions.rb +2 -7
- data/lib/mongoid/extensions/array.rb +2 -2
- data/lib/mongoid/extensions/boolean.rb +14 -17
- data/lib/mongoid/extensions/float.rb +1 -0
- data/lib/mongoid/extensions/hash.rb +1 -1
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +8 -2
- data/lib/mongoid/extensions/string.rb +5 -17
- data/lib/mongoid/extensions/time.rb +2 -2
- data/lib/mongoid/factory.rb +3 -3
- data/lib/mongoid/fields.rb +9 -8
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/standard.rb +4 -16
- data/lib/mongoid/fields/validators/macro.rb +11 -3
- data/lib/mongoid/{finders.rb → findable.rb} +6 -2
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
- data/lib/mongoid/{callbacks.rb → interceptable.rb} +3 -52
- data/lib/mongoid/log_subscriber.rb +22 -0
- data/lib/mongoid/matchable.rb +152 -0
- data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/ne.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
- data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
- data/lib/mongoid/persistable.rb +212 -0
- data/lib/mongoid/persistable/creatable.rb +188 -0
- data/lib/mongoid/persistable/deletable.rb +148 -0
- data/lib/mongoid/persistable/destroyable.rb +55 -0
- data/lib/mongoid/persistable/incrementable.rb +36 -0
- data/lib/mongoid/persistable/logical.rb +38 -0
- data/lib/mongoid/persistable/poppable.rb +39 -0
- data/lib/mongoid/persistable/pullable.rb +55 -0
- data/lib/mongoid/persistable/pushable.rb +62 -0
- data/lib/mongoid/persistable/renamable.rb +35 -0
- data/lib/mongoid/persistable/savable.rb +52 -0
- data/lib/mongoid/persistable/settable.rb +33 -0
- data/lib/mongoid/persistable/unsettable.rb +36 -0
- data/lib/mongoid/persistable/updatable.rb +151 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/railtie.rb +32 -45
- data/lib/mongoid/railties/database.rake +12 -6
- data/lib/mongoid/relations.rb +3 -3
- data/lib/mongoid/relations/accessors.rb +13 -46
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +0 -23
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
- data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +3 -1
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
- data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
- data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
- data/lib/mongoid/relations/cascading.rb +3 -5
- data/lib/mongoid/relations/constraint.rb +1 -1
- data/lib/mongoid/relations/conversions.rb +1 -1
- data/lib/mongoid/relations/counter_cache.rb +39 -15
- data/lib/mongoid/relations/eager.rb +47 -0
- data/lib/mongoid/relations/eager/base.rb +57 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +30 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +40 -0
- data/lib/mongoid/relations/eager/has_many.rb +37 -0
- data/lib/mongoid/relations/eager/has_one.rb +29 -0
- data/lib/mongoid/relations/embedded/batchable.rb +3 -4
- data/lib/mongoid/relations/embedded/many.rb +7 -27
- data/lib/mongoid/relations/macros.rb +2 -4
- data/lib/mongoid/relations/many.rb +30 -31
- data/lib/mongoid/relations/metadata.rb +6 -75
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +10 -32
- data/lib/mongoid/relations/referenced/in.rb +2 -18
- data/lib/mongoid/relations/referenced/many.rb +9 -22
- data/lib/mongoid/relations/referenced/many_to_many.rb +10 -33
- data/lib/mongoid/relations/referenced/one.rb +2 -21
- data/lib/mongoid/relations/synchronization.rb +3 -3
- data/lib/mongoid/relations/touchable.rb +33 -0
- data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
- data/lib/mongoid/{scoping.rb → scopable.rb} +26 -3
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +10 -1
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +176 -0
- data/lib/mongoid/sessions/storage_options.rb +140 -0
- data/lib/mongoid/sessions/thread_options.rb +19 -0
- data/lib/mongoid/sessions/validators/storage.rb +15 -1
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/threaded.rb +0 -110
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -9
- data/lib/mongoid/{validations → validatable}/associated.rb +3 -1
- data/lib/mongoid/{validations → validatable}/format.rb +1 -1
- data/lib/mongoid/{validations → validatable}/length.rb +1 -1
- data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
- data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
- data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
- data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
- data/lib/mongoid/{validations → validatable}/uniqueness.rb +3 -3
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +9 -13
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
- data/lib/rails/generators/mongoid_generator.rb +3 -40
- data/lib/rails/mongoid.rb +59 -57
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +1 -0
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +6 -1
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +2 -2
- data/spec/app/models/article.rb +1 -4
- data/spec/app/models/audio.rb +5 -0
- data/spec/app/models/author.rb +0 -2
- data/spec/app/models/band.rb +3 -2
- data/spec/app/models/bar.rb +1 -0
- data/spec/app/models/book.rb +1 -0
- data/spec/app/models/building.rb +0 -2
- data/spec/app/models/building_address.rb +0 -2
- data/spec/app/models/bus.rb +1 -1
- data/spec/app/models/canvas.rb +1 -1
- data/spec/app/models/contractor.rb +0 -2
- data/spec/app/models/country_code.rb +1 -1
- data/spec/app/models/definition.rb +2 -2
- data/spec/app/models/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- data/spec/app/models/filesystem.rb +1 -0
- data/spec/app/models/fish.rb +0 -1
- data/spec/app/models/fruits.rb +6 -0
- data/spec/app/models/game.rb +0 -2
- data/spec/app/models/house.rb +0 -2
- data/spec/app/models/item.rb +1 -5
- data/spec/app/models/jar.rb +1 -1
- data/spec/app/models/label.rb +4 -4
- data/spec/app/models/login.rb +1 -1
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +1 -1
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +13 -8
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +1 -1
- data/spec/app/models/post.rb +2 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +5 -5
- data/spec/app/models/registry.rb +1 -1
- data/spec/app/models/server.rb +1 -1
- data/spec/app/models/service.rb +3 -3
- data/spec/app/models/sound.rb +5 -0
- data/spec/app/models/template.rb +1 -1
- data/spec/app/models/title.rb +0 -1
- data/spec/app/models/track.rb +5 -5
- data/spec/app/models/tree.rb +1 -1
- data/spec/app/models/video.rb +0 -4
- data/spec/app/models/wiki_page.rb +1 -4
- data/spec/app/models/word.rb +3 -0
- data/spec/app/models/word_origin.rb +1 -1
- data/spec/config/mongoid.yml +7 -8
- data/spec/helpers.rb +18 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
- data/spec/mongoid/atomic/paths_spec.rb +19 -19
- data/spec/mongoid/atomic_spec.rb +19 -19
- data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +335 -448
- data/spec/mongoid/attributes/readonly_spec.rb +16 -16
- data/spec/mongoid/attributes_spec.rb +188 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +117 -148
- data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
- data/spec/mongoid/config/environment_spec.rb +3 -3
- data/spec/mongoid/config/options_spec.rb +6 -6
- data/spec/mongoid/config_spec.rb +24 -48
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +46 -38
- data/spec/mongoid/contextual/atomic_spec.rb +60 -56
- data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
- data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
- data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
- data/spec/mongoid/contextual/memory_spec.rb +94 -94
- data/spec/mongoid/contextual/mongo_spec.rb +225 -139
- data/spec/mongoid/contextual/text_search_spec.rb +207 -0
- data/spec/mongoid/copyable_spec.rb +56 -68
- data/spec/mongoid/criteria/findable_spec.rb +991 -0
- data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
- data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1063 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +31 -31
- data/spec/mongoid/criteria_spec.rb +530 -2207
- data/spec/mongoid/document_spec.rb +166 -120
- data/spec/mongoid/equality_spec.rb +22 -22
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
- data/spec/mongoid/errors/callback_spec.rb +3 -3
- data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
- data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
- data/spec/mongoid/errors/eager_load_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_scope_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
- data/spec/mongoid/errors/mongoid_error_spec.rb +7 -7
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
- data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
- data/spec/mongoid/errors/no_parent_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
- data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
- data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
- data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
- data/spec/mongoid/errors/validations_spec.rb +7 -7
- data/spec/mongoid/extensions/array_spec.rb +61 -61
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
- data/spec/mongoid/extensions/binary_spec.rb +12 -12
- data/spec/mongoid/extensions/boolean_spec.rb +18 -18
- data/spec/mongoid/extensions/date_spec.rb +13 -13
- data/spec/mongoid/extensions/date_time_spec.rb +9 -9
- data/spec/mongoid/extensions/false_class_spec.rb +5 -5
- data/spec/mongoid/extensions/float_spec.rb +29 -15
- data/spec/mongoid/extensions/hash_spec.rb +29 -29
- data/spec/mongoid/extensions/integer_spec.rb +15 -15
- data/spec/mongoid/extensions/module_spec.rb +2 -2
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/extensions/object_id_spec.rb +134 -134
- data/spec/mongoid/extensions/object_spec.rb +26 -26
- data/spec/mongoid/extensions/range_spec.rb +61 -12
- data/spec/mongoid/extensions/regexp_spec.rb +4 -4
- data/spec/mongoid/extensions/set_spec.rb +4 -4
- data/spec/mongoid/extensions/string_spec.rb +35 -46
- data/spec/mongoid/extensions/symbol_spec.rb +9 -9
- data/spec/mongoid/extensions/time_spec.rb +49 -49
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
- data/spec/mongoid/extensions/true_class_spec.rb +5 -5
- data/spec/mongoid/extensions_spec.rb +15 -0
- data/spec/mongoid/factory_spec.rb +15 -15
- data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
- data/spec/mongoid/fields/localized_spec.rb +23 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +168 -209
- data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +62 -27
- data/spec/mongoid/indexable/specification_spec.rb +102 -0
- data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
- data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
- data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +105 -105
- data/spec/mongoid/log_subscriber_spec.rb +74 -0
- data/spec/mongoid/loggable_spec.rb +1 -1
- data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
- data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
- data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
- data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
- data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
- data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
- data/spec/mongoid/matchable/in_spec.rb +49 -0
- data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/ne_spec.rb +3 -3
- data/spec/mongoid/matchable/nin_spec.rb +48 -0
- data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
- data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
- data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
- data/spec/mongoid/persistable/creatable_spec.rb +512 -0
- data/spec/mongoid/persistable/deletable_spec.rb +205 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +148 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
- data/spec/mongoid/persistable/logical_spec.rb +143 -0
- data/spec/mongoid/persistable/poppable_spec.rb +115 -0
- data/spec/mongoid/persistable/pullable_spec.rb +228 -0
- data/spec/mongoid/persistable/pushable_spec.rb +258 -0
- data/spec/mongoid/persistable/renamable_spec.rb +135 -0
- data/spec/mongoid/persistable/savable_spec.rb +432 -0
- data/spec/mongoid/persistable/settable_spec.rb +139 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
- data/spec/mongoid/persistable/updatable_spec.rb +558 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
- data/spec/mongoid/persistable_spec.rb +206 -0
- data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +19 -14
- data/spec/mongoid/railties/document_spec.rb +2 -2
- data/spec/mongoid/relations/accessors_spec.rb +53 -145
- data/spec/mongoid/relations/auto_save_spec.rb +36 -16
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +2 -2
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +9 -9
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +22 -33
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +11 -24
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +7 -7
- data/spec/mongoid/relations/cascading/destroy_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/restrict_spec.rb +3 -3
- data/spec/mongoid/relations/cascading_spec.rb +16 -16
- data/spec/mongoid/relations/constraint_spec.rb +8 -7
- data/spec/mongoid/relations/conversions_spec.rb +16 -14
- data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
- data/spec/mongoid/relations/cyclic_spec.rb +18 -18
- data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
- data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +143 -0
- data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
- data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
- data/spec/mongoid/relations/eager_spec.rb +228 -0
- data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
- data/spec/mongoid/relations/embedded/in_spec.rb +55 -56
- data/spec/mongoid/relations/embedded/many_spec.rb +357 -367
- data/spec/mongoid/relations/embedded/one_spec.rb +98 -139
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +147 -241
- data/spec/mongoid/relations/options_spec.rb +1 -1
- data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
- data/spec/mongoid/relations/proxy_spec.rb +2 -2
- data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
- data/spec/mongoid/relations/referenced/many_spec.rb +379 -522
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +345 -417
- data/spec/mongoid/relations/referenced/one_spec.rb +148 -263
- data/spec/mongoid/relations/reflections_spec.rb +6 -6
- data/spec/mongoid/relations/synchronization_spec.rb +46 -50
- data/spec/mongoid/relations/targets/enumerable_spec.rb +116 -116
- data/spec/mongoid/relations/touchable_spec.rb +296 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +74 -126
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +111 -82
- data/spec/mongoid/sessions/factory_spec.rb +49 -28
- data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
- data/spec/mongoid/sessions/options_spec.rb +92 -0
- data/spec/mongoid/sessions_spec.rb +288 -177
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/state_spec.rb +10 -10
- data/spec/mongoid/threaded_spec.rb +17 -70
- data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
- data/spec/mongoid/timestamps/created_spec.rb +5 -5
- data/spec/mongoid/timestamps/updated/short_spec.rb +10 -10
- data/spec/mongoid/timestamps/updated_spec.rb +8 -12
- data/spec/mongoid/timestamps_spec.rb +7 -11
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +18 -18
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +7 -7
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +31 -38
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +126 -183
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +72 -87
- data/spec/spec_helper.rb +19 -17
- metadata +261 -283
- data/lib/mongoid/atomic/positionable.rb +0 -73
- data/lib/mongoid/components.rb +0 -92
- data/lib/mongoid/config/inflections.rb +0 -6
- data/lib/mongoid/contextual/eager.rb +0 -158
- data/lib/mongoid/criterion/findable.rb +0 -179
- data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
- data/lib/mongoid/identity_map.rb +0 -163
- data/lib/mongoid/json.rb +0 -16
- data/lib/mongoid/matchers.rb +0 -32
- data/lib/mongoid/matchers/strategies.rb +0 -97
- data/lib/mongoid/multi_parameter_attributes.rb +0 -105
- data/lib/mongoid/nested_attributes.rb +0 -78
- data/lib/mongoid/observer.rb +0 -192
- data/lib/mongoid/paranoia.rb +0 -136
- data/lib/mongoid/persistence.rb +0 -357
- data/lib/mongoid/persistence/atomic.rb +0 -231
- data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
- data/lib/mongoid/persistence/atomic/bit.rb +0 -35
- data/lib/mongoid/persistence/atomic/inc.rb +0 -45
- data/lib/mongoid/persistence/atomic/operation.rb +0 -154
- data/lib/mongoid/persistence/atomic/pop.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
- data/lib/mongoid/persistence/atomic/push.rb +0 -25
- data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
- data/lib/mongoid/persistence/atomic/rename.rb +0 -30
- data/lib/mongoid/persistence/atomic/sets.rb +0 -28
- data/lib/mongoid/persistence/atomic/unset.rb +0 -27
- data/lib/mongoid/persistence/deletion.rb +0 -31
- data/lib/mongoid/persistence/insertion.rb +0 -38
- data/lib/mongoid/persistence/modification.rb +0 -35
- data/lib/mongoid/persistence/operations.rb +0 -214
- data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
- data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
- data/lib/mongoid/persistence/operations/insert.rb +0 -34
- data/lib/mongoid/persistence/operations/remove.rb +0 -33
- data/lib/mongoid/persistence/operations/update.rb +0 -59
- data/lib/mongoid/persistence/operations/upsert.rb +0 -28
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid.rb +0 -2
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
- data/spec/app/models/actor_observer.rb +0 -15
- data/spec/app/models/callback_recorder.rb +0 -25
- data/spec/app/models/draft.rb +0 -9
- data/spec/app/models/paranoid_phone.rb +0 -25
- data/spec/app/models/paranoid_post.rb +0 -36
- data/spec/app/models/phone_observer.rb +0 -6
- data/spec/mongoid/#atomic_spec.rb# +0 -365
- data/spec/mongoid/attributes/processing_spec.rb +0 -149
- data/spec/mongoid/criterion/destructive_spec.rb +0 -101
- data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
- data/spec/mongoid/criterion/modification_spec.rb +0 -402
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
- data/spec/mongoid/identity_map_spec.rb +0 -564
- data/spec/mongoid/json_spec.rb +0 -33
- data/spec/mongoid/matchers/in_spec.rb +0 -25
- data/spec/mongoid/matchers/nin_spec.rb +0 -25
- data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
- data/spec/mongoid/observer_spec.rb +0 -290
- data/spec/mongoid/paranoia_spec.rb +0 -759
- data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
- data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
- data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
- data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
- data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
- data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
- data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
- data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
- data/spec/mongoid/persistence/atomic_spec.rb +0 -216
- data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
- data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
- data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
- data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
- data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
- data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
- data/spec/mongoid/persistence/operations_spec.rb +0 -313
- data/spec/mongoid/persistence_spec.rb +0 -2279
- data/spec/mongoid/unit_of_work_spec.rb +0 -196
- data/spec/mongoid/versioning_spec.rb +0 -540
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e868be748277deddf1b1ef5bc060551904de8ed
|
4
|
+
data.tar.gz: a285380f00b0d3f7dcb9d06f1d669e6b4262a980
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7f1bc5844c340f5a8335e7c74d80a78082402de62e75d025cf510409f14842a785bb70644655f93ccf38e33e0859dfb1c4237ef961d377a3838586c92c15878
|
7
|
+
data.tar.gz: 52d507c0df35681fd4f7afb28f3d23ea5b6ff1c455e96bde67c44ef3ae4039a6c195aa957453ff95d437bb8de67f583d6422cf1fe84648a984e8787e95fcba60
|
data/CHANGELOG.md
CHANGED
@@ -3,15 +3,323 @@
|
|
3
3
|
For instructions on upgrading to newer versions, visit
|
4
4
|
[mongoid.org](http://mongoid.org/en/mongoid/docs/upgrading.html).
|
5
5
|
|
6
|
-
##
|
6
|
+
## 4.0.0
|
7
|
+
|
8
|
+
### Major Changes (Backwards Incompatible)
|
9
|
+
|
10
|
+
* IdentityMap removed. (Arthur Neves)
|
11
|
+
|
12
|
+
* Eager load rework. Eager load now doesnt need the identity map to load
|
13
|
+
related documents. A set of preloaders can eager load the associations
|
14
|
+
passed to .includes method. (Arthur Neves)
|
15
|
+
|
16
|
+
* Mongoid now supports the new read preferences that the core drivers
|
17
|
+
provide. These include:
|
18
|
+
|
19
|
+
- `:primary`: Will always read from a primary node. (default)
|
20
|
+
- `:primary_preferred`: Attempt a primary first, then secondary if none available.
|
21
|
+
- `:secondary`: Will always read from a secondary node.
|
22
|
+
- `:secondary_preferred`: Attempt a secondary first, then primary if none available.
|
23
|
+
- `:nearest`: Attempt to read from the node with the lowest latency.
|
24
|
+
|
25
|
+
Sample syntax:
|
26
|
+
|
27
|
+
Person.with(read: :secondary).first
|
28
|
+
|
29
|
+
The `:consistency` option is no longer valid, use the `:read` option now.
|
30
|
+
|
31
|
+
* Mongoid now defaults all writes to propagate (formerly "safe mode") and now
|
32
|
+
has different propagate semantics:
|
33
|
+
|
34
|
+
- `{ w: -1 }`: Don't verify writes and raise no network errors.
|
35
|
+
- `{ w: 0 }`: Don't verify writes and raise network errors.
|
36
|
+
- `{ w: 1 }`: Verify writes on the primary node. (default)
|
37
|
+
- `{ w: n }`: Verify writes on n number of nodes.
|
38
|
+
- `{ w: "majority" }`: Verify writes on a majority of nodes.
|
39
|
+
|
40
|
+
Sample syntax:
|
41
|
+
|
42
|
+
Person.with(write: {w: :majority}).create!(name: "John")
|
43
|
+
|
44
|
+
The `:safe` option is no longer valid use the `:write` option now.
|
45
|
+
|
46
|
+
* \#3230 Array and Hash fields now validate that the correct types are
|
47
|
+
getting set, instead of allowing any value. (Rodrigo Saito)
|
48
|
+
|
49
|
+
* \#3043/\#2949 Rework on the internals of persistence options. (Arthur Neves)
|
50
|
+
|
51
|
+
* Mongoid now requires Active Model 4 or higher.
|
52
|
+
|
53
|
+
* `Document#set` now accepts multiple attributes in the form of a hash,
|
54
|
+
instead of the previous `(field, value)` args. Field aliases and typecasting
|
55
|
+
are also now supported in this operation.
|
56
|
+
|
57
|
+
document.set(name: "Photek", likes: 10000)
|
58
|
+
|
59
|
+
* `Document#rename` now accepts multiple attributes in the form of a hash,
|
60
|
+
instead of the previous `(field, value)` args. Field aliases are supported.
|
61
|
+
|
62
|
+
document.rename(first_name: "fn", last_name: "ln")
|
63
|
+
|
64
|
+
* `Document#inc` now accepts multiple attributes in the form of a hash, instead
|
65
|
+
of previously only being able to increment one value at a time. Aliases and
|
66
|
+
serialization is supported.
|
67
|
+
|
68
|
+
document.inc(score: 10, place: -1, lives: -10)
|
69
|
+
|
70
|
+
* `Document#pop` now accepts multiple attributes in the form of a hash, instead
|
71
|
+
of previously only being able to pop one value at a time. Aliases and
|
72
|
+
serialization is supported.
|
73
|
+
|
74
|
+
document.pop(names: 1, aliases: -1)
|
75
|
+
|
76
|
+
* `Document#bit` now accepts multiple attributes in the form of a hash, instead
|
77
|
+
of previously only being able to apply one set of operations at a time.
|
78
|
+
Aliases and serialization are supported.
|
79
|
+
|
80
|
+
document.bit(age: { and: 13 }, score: { or: 13 })
|
81
|
+
|
82
|
+
* `Document#pull` now accepts multiple attributes in the form of a hash, instead
|
83
|
+
of previously only being able to pull one value at a time. Aliases and
|
84
|
+
serialization is supported.
|
85
|
+
|
86
|
+
document.pull(names: "James", aliases: "007")
|
87
|
+
|
88
|
+
* `Document#pull_all` now accepts multiple attributes in the form of a hash,
|
89
|
+
instead of previously only being able to pull one value at a time. Aliases and
|
90
|
+
serialization is supported.
|
91
|
+
|
92
|
+
document.pull_all(names: ["James", "Bond"], aliases: ["007"])
|
93
|
+
|
94
|
+
* `Document#push_all` has been removed since it was deprecated in MongoDB 2.4.
|
95
|
+
Use `Document.push` instead.
|
96
|
+
|
97
|
+
* `Document#push` now accepts multiple attributes in the form of a hash, and
|
98
|
+
can handle the pushing of single values or multiple values to the field via
|
99
|
+
$push with $each. Aliases and serialization is supported.
|
100
|
+
|
101
|
+
document.push(names: "James", aliases: [ "007", "Jim" ])
|
102
|
+
|
103
|
+
* `Document#add_to_set` now accepts multiple attributes in the form of a hash,
|
104
|
+
and now aliases and serialization are supported.
|
105
|
+
|
106
|
+
document.add_to_set(names: "James", aliases: "007")
|
107
|
+
|
108
|
+
* Criteria atomic operations API is now changed to match the changes in the
|
109
|
+
single document atomic API, for example:
|
110
|
+
|
111
|
+
Band.where(name: "Depeche Mode").inc(likes: 10, followers: 20)
|
112
|
+
|
113
|
+
* \#3399 #create and #create! on relations can now take an array of attributes as
|
114
|
+
the first parameter to create multiple documents at once.
|
115
|
+
|
116
|
+
person.addresses.create([{ street: "Bond" }, { street: "Upper" }])
|
117
|
+
person.addresses.create!([{ street: "Bond" }, { street: "Upper" }])
|
118
|
+
|
119
|
+
* \#3141 `rake db:test:prepare` now sets up all defined indexes if Mongoid is the
|
120
|
+
only ODM/ORM in the environment.
|
121
|
+
|
122
|
+
* \#3138 `update_attributes` can now be accessed simply by calling `update`.
|
123
|
+
|
124
|
+
* \#3083 A new rake task: `rake mongoid:remove_undefined_indexes` has been added to
|
125
|
+
remove indexes from the database that are not explicitly defined in the models.
|
126
|
+
(Aidan Feldman)
|
127
|
+
|
128
|
+
* \#3029 The `relation_field` field that is added for a single use case with polymorphic
|
129
|
+
relations has been removed. So where the following would work before:
|
130
|
+
|
131
|
+
class Eye
|
132
|
+
include Mongoid::Document
|
133
|
+
belongs_to :eyeable, polymorphic: true
|
134
|
+
end
|
135
|
+
|
136
|
+
class Face
|
137
|
+
include Mongoid::Document
|
138
|
+
has_one :left_eye, class_name: "Eye", as: :eyeable
|
139
|
+
has_one :right_eye, class_name: "Eye", as: :eyeable
|
140
|
+
end
|
141
|
+
|
142
|
+
This would now need to be modeled as (with the appropriate migration):
|
143
|
+
|
144
|
+
class Eye
|
145
|
+
include Mongoid::Document
|
146
|
+
belongs_to :left_socket, class_name: "Face", inverse_of: :left_eye
|
147
|
+
belongs_to :right_socket, class_name: "Face", inverse_of: :right_eye
|
148
|
+
end
|
149
|
+
|
150
|
+
class Face
|
151
|
+
include Mongoid::Document
|
152
|
+
has_one :left_eye, class_name: "Eye", inverse_of: :left_socket
|
153
|
+
has_one :right_eye, class_name: "Eye", inverse_of: :right_socket
|
154
|
+
end
|
155
|
+
|
156
|
+
* \#3075 `update_attribute` now properly calls the setter method instead of
|
157
|
+
using `write_attribute`.
|
158
|
+
|
159
|
+
* \#3060 Allow atomically blocks to allow multiple calls of the same type.
|
160
|
+
(Brian Norton)
|
161
|
+
|
162
|
+
* \#3037 Model indexes are no longer stored in an `index_options` hash on the
|
163
|
+
model class. Instead, an array named `index_specifications` now exists on the
|
164
|
+
class which contains a list of `Indexable::Specification` objects. This is so
|
165
|
+
we could properly handle the case of indexes with the same keys but different
|
166
|
+
order.
|
167
|
+
|
168
|
+
* \#2956 Caching on queries now only happens when `cache` is specifically
|
169
|
+
called. (Arthur Neves)
|
170
|
+
|
171
|
+
* \#2898 Dirty attribute methods now properly handle field aliases.
|
172
|
+
(Niels Ganser)
|
173
|
+
|
174
|
+
* \#2659 `Mongoid::Railtie` now properly uses only one initializer and
|
175
|
+
the name has changed to `mongoid.load-config`.
|
176
|
+
|
177
|
+
* \#2656 `rake db:reseed` is now `rake db:reset` (Arthur Neves)
|
178
|
+
|
179
|
+
* \#2648 `Boolean` becomes `Mongoid::Boolean` to avoid polluting the global
|
180
|
+
namespace with a commonly used class by other libraries.
|
181
|
+
|
182
|
+
* \#2603 Return values from setters are now always the set value, regardless
|
183
|
+
of calling the setter or using send.
|
184
|
+
|
185
|
+
* \#2597 `Mongoid::Observer` was removed in line with Rails 4.
|
186
|
+
|
187
|
+
* \#2563 The `allow_dynamic_fields` configuration option has been removed as
|
188
|
+
dynamic fields are now allowed on a per-model level. In order to allow a
|
189
|
+
model to use dynamic fields, simply include the module in each.
|
190
|
+
(Josh Martin)
|
191
|
+
|
192
|
+
class Band
|
193
|
+
include Mongoid::Document
|
194
|
+
include Mongoid::Attributes::Dynamic
|
195
|
+
end
|
196
|
+
|
197
|
+
* \#2497 Calling `to_json` no longer tampers with the return value from the
|
198
|
+
driver, and proper returns `{ "$oid" : object_id.to_s }` instead of just
|
199
|
+
the string representation previously.
|
200
|
+
|
201
|
+
* \#2433 `Mongoid::Paranoia` has been removed.
|
202
|
+
|
203
|
+
* \#2432 `Mongoid::Versioning` has been removed.
|
204
|
+
|
205
|
+
* \#2218 Creating or instantiating documents that have default scopes will now
|
206
|
+
apply the default scope to the document, if the scope is not complex.
|
207
|
+
|
208
|
+
* \#2200 Mass assignment security now mirrors Rails 4's behavior.
|
209
|
+
|
210
|
+
* `delete_all` and `destroy_all` no longer take a `:conditions` hash but
|
211
|
+
just the raw attributes.
|
212
|
+
|
213
|
+
* \#1344 Atomic updates can now be executed in an `atomically` block, which will
|
214
|
+
delay any atomic updates on the document the block was called on until the
|
215
|
+
block is complete.
|
216
|
+
|
217
|
+
Update calls can be executed as normal in the block:
|
218
|
+
|
219
|
+
document.atomically do
|
220
|
+
document.inc(likes: 10)
|
221
|
+
document.bit(members: { and: 10 })
|
222
|
+
document.set(name: "Photek")
|
223
|
+
end
|
224
|
+
|
225
|
+
The document is also yielded to the block:
|
226
|
+
|
227
|
+
document.atomically do |doc|
|
228
|
+
doc.inc(likes: 10)
|
229
|
+
doc.bit(members: { and: 10 })
|
230
|
+
doc.set(name: "Photek")
|
231
|
+
end
|
232
|
+
|
233
|
+
The atomic commands are have a fluid interface:
|
234
|
+
|
235
|
+
document.atomically do |doc|
|
236
|
+
doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek")
|
237
|
+
end
|
238
|
+
|
239
|
+
If the fluid interface is leveraged without the `atomically` block, the
|
240
|
+
operations will persist in individual calls. For example, the following
|
241
|
+
would hit the database 3 times without the block provided:
|
242
|
+
|
243
|
+
doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek")
|
244
|
+
|
245
|
+
The block is only good for 1 document at a time, so embedded and root
|
246
|
+
document updates cannot be mixed at this time.
|
247
|
+
|
248
|
+
### New Features
|
249
|
+
|
250
|
+
* Mongoid now uses ActiveSupport::LogSubscriber to subscribe logs, and
|
251
|
+
ActiveSupport::Notifications to send operation logs. (Arthur Neves)
|
252
|
+
Example of log subscription:
|
253
|
+
|
254
|
+
ActiveSupport::Notifications.subscribe('query.moped') do |event|
|
255
|
+
..
|
256
|
+
end
|
257
|
+
|
258
|
+
* \#3319 Counters can now be reset from a document instance:
|
259
|
+
|
260
|
+
document.reset_counters(:relation)
|
261
|
+
|
262
|
+
* \#3302 Aliasing using `alias_attribute` now properly handles aliases in criteria.
|
263
|
+
|
264
|
+
* \#3155 Range field will persist the exclude_end when provided.
|
265
|
+
(Daniel Libanori)
|
266
|
+
|
267
|
+
* \#3146 Adding :overwrite field option, when it`s true, it wont check duplicates.
|
268
|
+
(Daniel Libanori)
|
269
|
+
|
270
|
+
* \#3002 Reloading the Rails console will also now clear Mongoid's identity map.
|
271
|
+
|
272
|
+
* \#2938 A configuration option `duplicate_fields_exception` has been added that
|
273
|
+
when set to `true` will raise an exception when defining a field that will
|
274
|
+
override an existing method. (Arthur Neves)
|
275
|
+
|
276
|
+
* \#2924 MongoDB 2.4 beta text search now has a DSL provided by Mongoid. Like
|
277
|
+
other queries, text searches are lazy evaluated, and available off the class
|
278
|
+
or criteria level.
|
279
|
+
|
280
|
+
Note that any 3rd party gem that provides a `text_search` method will now no
|
281
|
+
longer work with Mongoid, and will need to change its syntax. Examples:
|
282
|
+
|
283
|
+
Band.text_search("mode").project(name: 1).each do |doc|
|
284
|
+
# ...
|
285
|
+
end
|
286
|
+
|
287
|
+
Band.limit(10).text_search("phase").language("latin")
|
288
|
+
Band.where(:likes.gt => 1000).text_search("lucy")
|
289
|
+
|
290
|
+
* \#2855 Multiple extensions can now be supplied to relations. (Daniel Libanori)
|
7
291
|
|
8
292
|
### Resolved Issues
|
9
293
|
|
10
294
|
* \#3397 Fixed $ne matcher for embedded documents to match server behaviour.
|
11
295
|
|
12
|
-
* \#
|
296
|
+
* \#3348 Fixing compounded indexes having the same keys with
|
297
|
+
different directions. (Arthur Neves)
|
298
|
+
|
299
|
+
* \#2701 Fixing extra query on belongs_to binding. (Arthur Neves)
|
300
|
+
|
301
|
+
* \#3089 Allow demongoization of strings to floats (Daniel Libanori)
|
302
|
+
|
303
|
+
* \#3278 Counter cache should update the document in memory too. (Arthur Neves)
|
304
|
+
|
305
|
+
* \#3242 Has_many relation must use the inverse foreign_key. (Arthur Neves)
|
306
|
+
|
307
|
+
* \#3197 Improvements in the calls to `aggregates` on root and embedded
|
308
|
+
collections. (Wojciech Piekutowski)
|
309
|
+
|
310
|
+
* \#3144/\#3219 Fixing name colission on @_children ivar. (Arthur Neves)
|
311
|
+
|
312
|
+
* \#3088 Range field can accept a hash, which could be the attribute from the db.
|
313
|
+
(Daniel Libanori)
|
13
314
|
|
14
|
-
* \#
|
315
|
+
* \#3116 Relations instance variables are now all prefixed with `_`.
|
316
|
+
|
317
|
+
* \#3093 Only flatten 1 level when atomically pushing arrays.
|
318
|
+
|
319
|
+
* \#3063 `Document#becomes` now properly sets base object on errors.
|
320
|
+
(Adam Ross Cohen)
|
321
|
+
|
322
|
+
* \#2903 Removed unused string `to_a` extension.
|
15
323
|
|
16
324
|
## 3.1.6
|
17
325
|
|
@@ -101,6 +409,7 @@ For instructions on upgrading to newer versions, visit
|
|
101
409
|
### Resolved Issues
|
102
410
|
|
103
411
|
* Dont duplicate embedded documents when saving after calling becomes method.
|
412
|
+
(Arthur Neves)
|
104
413
|
|
105
414
|
* \#2961 Reloading a mongoid.yml configuration now properly clears previously
|
106
415
|
configured sessions.
|
@@ -111,11 +420,6 @@ For instructions on upgrading to newer versions, visit
|
|
111
420
|
* \#2921 Don't use type in identity map selection if inheritance is not
|
112
421
|
in play. (Arthur Neves)
|
113
422
|
|
114
|
-
* \#2899 Dirty attribute methods now properly handle field aliases.
|
115
|
-
(Niels Ganser)
|
116
|
-
|
117
|
-
* \#2895 Allow scopes that return nil to still be chainable. (niedhui)
|
118
|
-
|
119
423
|
* \#2893 Removed memoization of collection name and database name so lambdas
|
120
424
|
with `store_in` work properly when changing.
|
121
425
|
|
@@ -293,12 +597,14 @@ For instructions on upgrading to newer versions, visit
|
|
293
597
|
* \#2465 Documents now have an `attribute_before_type_cast` for proper
|
294
598
|
handling of validations. (Gerad Suyderhoud)
|
295
599
|
|
296
|
-
* \#2443 `expire_after_seconds` is now a valid index option
|
600
|
+
* \#2443 `expire_after_seconds` is now a valid index option
|
601
|
+
(http://docs.mongodb.org/manual/core/indexes/#ttl-indexes,
|
602
|
+
http://docs.mongodb.org/manual/tutorial/expire-data/).
|
297
603
|
|
298
604
|
class Event
|
299
605
|
include Mongoid::Document
|
300
|
-
field :
|
301
|
-
index({
|
606
|
+
field :created_at, type: DateTime
|
607
|
+
index({ created_at: 1 }, { expire_after_seconds: 3600 })
|
302
608
|
end
|
303
609
|
|
304
610
|
* \#2373 Relations with the `touch: true` option will now be automatically
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Mongoid [](http://travis-ci.org/mongoid/mongoid) [](https://codeclimate.com/github/mongoid/mongoid) [](https://coveralls.io/r/mongoid/mongoid?branch=master)
|
2
2
|
========
|
3
3
|
|
4
4
|
Mongoid is an ODM (Object-Document-Mapper) framework for MongoDB in Ruby.
|
@@ -6,9 +6,10 @@ Mongoid is an ODM (Object-Document-Mapper) framework for MongoDB in Ruby.
|
|
6
6
|
Project Tracking
|
7
7
|
----------------
|
8
8
|
|
9
|
-
* [Mongoid Google Group](http://groups.google.com/group/mongoid)
|
10
9
|
* [Mongoid Website and Documentation](http://mongoid.org)
|
11
|
-
* [Mongoid
|
10
|
+
* [Mongoid Google Group](http://groups.google.com/group/mongoid)
|
11
|
+
* [Stackoverflow](http://stackoverflow.com/questions/tagged/mongoid)
|
12
|
+
* #mongoid on freenode IRC
|
12
13
|
|
13
14
|
Compatibility
|
14
15
|
-------------
|
@@ -24,8 +25,6 @@ Please see the new Mongoid website for up-to-date documentation:
|
|
24
25
|
Donating
|
25
26
|
--------
|
26
27
|
|
27
|
-
[Support Mongoid at Wepay](https://www.wepay.com/donations/mongoid)
|
28
|
-
|
29
28
|
[Support Mongoid at Pledgie](http://www.pledgie.com/campaigns/7757)
|
30
29
|
|
31
30
|
<a href='http://www.pledgie.com/campaigns/7757'>
|
data/lib/config/locales/en.yml
CHANGED
@@ -222,6 +222,10 @@ en:
|
|
222
222
|
from the child side which relation to go in."
|
223
223
|
resolution: "Set the values from the parent, or redefine the relation
|
224
224
|
with only a single definition in the parent."
|
225
|
+
invalid_value:
|
226
|
+
message: "Value of type %{value_class} cannot be written to a field of type %{field_class}"
|
227
|
+
summary: "Tried to set a value of type %{value_class} to a field of type %{field_class}"
|
228
|
+
resolution: "Verify if the value to be set correspond to field definition"
|
225
229
|
mixed_relations:
|
226
230
|
message: "Referencing a(n) %{embedded} document from the %{root}
|
227
231
|
document via a relational association is not allowed since the
|
@@ -411,12 +415,12 @@ en:
|
|
411
415
|
unknown_attribute:
|
412
416
|
message: "Attempted to set a value for '%{name}' which is not
|
413
417
|
allowed on the model %{klass}."
|
414
|
-
summary: "
|
415
|
-
attribute does not already exist in the attributes hash,
|
416
|
-
to call %{klass}#%{name}= for it is not allowed. This is
|
417
|
-
triggered by passing the attribute to any method that accepts an
|
418
|
+
summary: "Without including Mongoid::Attributes::Dynamic in your model
|
419
|
+
and the attribute does not already exist in the attributes hash,
|
420
|
+
attempting to call %{klass}#%{name}= for it is not allowed. This is
|
421
|
+
also triggered by passing the attribute to any method that accepts an
|
418
422
|
attributes hash, and is raised instead of getting a NoMethodError."
|
419
|
-
resolution: "You can
|
423
|
+
resolution: "You can include Mongoid::Attributes::Dynamic if you
|
420
424
|
expect to be writing values for undefined fields often."
|
421
425
|
unsaved_document:
|
422
426
|
message: "Attempted to save %{document} before the parent %{base}."
|
@@ -439,13 +443,6 @@ en:
|
|
439
443
|
summary: "The following errors were found: %{errors}"
|
440
444
|
resolution: "Try persisting the document with valid data or remove
|
441
445
|
the validations."
|
442
|
-
versioning_not_on_root:
|
443
|
-
message: "Versioning not allowed on embedded document: %{klass}."
|
444
|
-
summary: "Mongoid::Versioning behaviour is only allowed on documents
|
445
|
-
that are the root document in the hierarchy."
|
446
|
-
resolution: "Remove the versioning from the embedded %{klass} or
|
447
|
-
consider moving it to a root location in the hierarchy if
|
448
|
-
versioning is needed."
|
449
446
|
delete_restriction:
|
450
447
|
message: "Cannot delete %{document} because of dependent '%{relation}'."
|
451
448
|
summary: "When defining '%{relation}' with a :dependent => :restrict,
|
data/lib/mongoid.rb
CHANGED
@@ -1,34 +1,12 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
3
|
-
# Copyright (c) 2009 - 2011 Durran Jordan and friends.
|
4
|
-
#
|
5
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
6
|
-
# a copy of this software and associated documentation files (the
|
7
|
-
# "Software"), to deal in the Software without restriction, including
|
8
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
9
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
11
|
-
# the following conditions:
|
12
|
-
#
|
13
|
-
# The above copyright notice and this permission notice shall be
|
14
|
-
# included in all copies or substantial portions of the Software.
|
15
|
-
#
|
16
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
|
-
|
24
|
-
require 'support/ruby_version'
|
2
|
+
require "support/ruby_version"
|
25
3
|
|
26
4
|
require "delegate"
|
27
5
|
require "time"
|
28
6
|
require "set"
|
29
7
|
|
30
8
|
require "active_support/core_ext"
|
31
|
-
require
|
9
|
+
require "active_support/json"
|
32
10
|
require "active_support/inflector"
|
33
11
|
require "active_support/time_with_zone"
|
34
12
|
require "active_model"
|
@@ -36,49 +14,12 @@ require "active_model"
|
|
36
14
|
require "origin"
|
37
15
|
require "moped"
|
38
16
|
|
39
|
-
require "mongoid/
|
40
|
-
require "mongoid/evolvable"
|
41
|
-
require "mongoid/extensions"
|
42
|
-
require "mongoid/errors"
|
43
|
-
require "mongoid/threaded"
|
44
|
-
require "mongoid/relations"
|
45
|
-
require "mongoid/atomic"
|
46
|
-
require "mongoid/attributes"
|
47
|
-
require "mongoid/callbacks"
|
17
|
+
require "mongoid/version"
|
48
18
|
require "mongoid/config"
|
49
|
-
require "mongoid/contextual"
|
50
|
-
require "mongoid/copyable"
|
51
|
-
require "mongoid/equality"
|
52
|
-
require "mongoid/criteria"
|
53
|
-
require "mongoid/dirty"
|
54
|
-
require "mongoid/factory"
|
55
|
-
require "mongoid/fields"
|
56
|
-
require "mongoid/finders"
|
57
|
-
require "mongoid/hierarchy"
|
58
|
-
require "mongoid/identity_map"
|
59
|
-
require "mongoid/indexes"
|
60
|
-
require "mongoid/inspection"
|
61
|
-
require "mongoid/json"
|
62
19
|
require "mongoid/loggable"
|
63
|
-
require "mongoid/matchers"
|
64
|
-
require "mongoid/multi_parameter_attributes"
|
65
|
-
require "mongoid/nested_attributes"
|
66
|
-
require "mongoid/observer"
|
67
|
-
require "mongoid/persistence"
|
68
|
-
require "mongoid/reloading"
|
69
|
-
require "mongoid/scoping"
|
70
|
-
require "mongoid/serialization"
|
71
20
|
require "mongoid/sessions"
|
72
|
-
require "mongoid/sharding"
|
73
|
-
require "mongoid/state"
|
74
|
-
require "mongoid/timestamps"
|
75
|
-
require "mongoid/unit_of_work"
|
76
|
-
require "mongoid/validations"
|
77
|
-
require "mongoid/version"
|
78
|
-
require "mongoid/versioning"
|
79
|
-
require "mongoid/components"
|
80
|
-
require "mongoid/paranoia"
|
81
21
|
require "mongoid/document"
|
22
|
+
require "mongoid/log_subscriber"
|
82
23
|
|
83
24
|
# If we are using Rails then we will include the Mongoid railtie. This has all
|
84
25
|
# the nifty initializers that Mongoid needs.
|
@@ -86,27 +27,19 @@ if defined?(Rails)
|
|
86
27
|
require "mongoid/railtie"
|
87
28
|
end
|
88
29
|
|
89
|
-
# If we are using any Rack based application then we need the Mongoid rack
|
90
|
-
# middleware to ensure our app is running properly.
|
91
|
-
if defined?(Rack)
|
92
|
-
require "rack/mongoid"
|
93
|
-
end
|
94
|
-
|
95
30
|
# add english load path by default
|
96
31
|
I18n.load_path << File.join(File.dirname(__FILE__), "config", "locales", "en.yml")
|
97
32
|
|
98
33
|
module Mongoid
|
99
34
|
extend Loggable
|
100
|
-
extend UnitOfWork
|
101
35
|
extend self
|
102
36
|
|
103
|
-
MONGODB_VERSION = "2.
|
37
|
+
MONGODB_VERSION = "2.2.0"
|
104
38
|
|
105
39
|
# Sets the Mongoid configuration options. Best used by passing a block.
|
106
40
|
#
|
107
41
|
# @example Set up configuration options.
|
108
42
|
# Mongoid.configure do |config|
|
109
|
-
# config.allow_dynamic_fields = false
|
110
43
|
# config.use(name: "mongoid_test", host: "localhost", port: 27017)
|
111
44
|
# end
|
112
45
|
#
|
@@ -160,7 +93,5 @@ module Mongoid
|
|
160
93
|
# Mongoid.database = Mongo::Connection.new.db("test")
|
161
94
|
#
|
162
95
|
# @since 1.0.0
|
163
|
-
delegate(*(Config.public_instance_methods(false)
|
164
|
-
ActiveModel::Observing::ClassMethods.public_instance_methods(false) - [:logger=, :logger] <<
|
165
|
-
{ to: Config }))
|
96
|
+
delegate(*(Config.public_instance_methods(false) - [ :logger=, :logger ] << { to: Config }))
|
166
97
|
end
|