mongoid 3.1.7 → 4.0.2
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 +470 -9
- data/README.md +10 -7
- data/lib/config/locales/en.yml +34 -20
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/atomic.rb +3 -14
- 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/attributes.rb +63 -99
- data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
- data/lib/mongoid/composable.rb +105 -0
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/map_reduce.rb +4 -2
- data/lib/mongoid/contextual/memory.rb +23 -11
- data/lib/mongoid/contextual/mongo.rb +75 -57
- data/lib/mongoid/contextual/none.rb +90 -0
- data/lib/mongoid/contextual/text_search.rb +178 -0
- data/lib/mongoid/contextual.rb +2 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
- 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 +28 -8
- data/lib/mongoid/criteria/permission.rb +70 -0
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/criteria.rb +39 -34
- data/lib/mongoid/document.rb +39 -24
- data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/errors/readonly_document.rb +24 -0
- data/lib/mongoid/errors.rb +4 -1
- data/lib/mongoid/extensions/array.rb +3 -3
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/boolean.rb +15 -17
- data/lib/mongoid/extensions/date.rb +1 -1
- data/lib/mongoid/extensions/date_time.rb +3 -3
- data/lib/mongoid/extensions/float.rb +2 -1
- data/lib/mongoid/extensions/hash.rb +3 -3
- data/lib/mongoid/extensions/integer.rb +1 -1
- data/lib/mongoid/extensions/object.rb +7 -7
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +9 -3
- data/lib/mongoid/extensions/regexp.rb +1 -1
- data/lib/mongoid/extensions/set.rb +1 -1
- data/lib/mongoid/extensions/string.rb +6 -18
- data/lib/mongoid/extensions/symbol.rb +1 -1
- data/lib/mongoid/extensions/time.rb +3 -3
- data/lib/mongoid/extensions/time_with_zone.rb +1 -1
- data/lib/mongoid/extensions.rb +15 -7
- data/lib/mongoid/factory.rb +8 -6
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/localized.rb +1 -1
- data/lib/mongoid/fields/standard.rb +5 -17
- data/lib/mongoid/fields/validators/macro.rb +15 -5
- data/lib/mongoid/fields.rb +41 -8
- data/lib/mongoid/{finders.rb → findable.rb} +35 -7
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
- data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
- data/lib/mongoid/log_subscriber.rb +55 -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/matchable.rb +152 -0
- data/lib/mongoid/persistable/creatable.rb +189 -0
- data/lib/mongoid/persistable/deletable.rb +149 -0
- data/lib/mongoid/persistable/destroyable.rb +60 -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 +153 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/persistable.rb +216 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/query_cache.rb +255 -0
- data/lib/mongoid/railtie.rb +34 -60
- data/lib/mongoid/railties/database.rake +9 -25
- data/lib/mongoid/relations/accessors.rb +15 -51
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +2 -25
- data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
- 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 +4 -2
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -6
- 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/builders.rb +2 -2
- 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/base.rb +149 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
- data/lib/mongoid/relations/eager/has_many.rb +38 -0
- data/lib/mongoid/relations/eager/has_one.rb +30 -0
- data/lib/mongoid/relations/eager.rb +46 -0
- data/lib/mongoid/relations/embedded/batchable.rb +4 -5
- data/lib/mongoid/relations/embedded/in.rb +4 -4
- data/lib/mongoid/relations/embedded/many.rb +14 -32
- data/lib/mongoid/relations/embedded/one.rb +1 -1
- data/lib/mongoid/relations/macros.rb +3 -4
- data/lib/mongoid/relations/many.rb +51 -31
- data/lib/mongoid/relations/marshalable.rb +3 -3
- data/lib/mongoid/relations/metadata.rb +14 -79
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/one.rb +1 -1
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +21 -41
- data/lib/mongoid/relations/referenced/in.rb +4 -20
- data/lib/mongoid/relations/referenced/many.rb +22 -35
- data/lib/mongoid/relations/referenced/many_to_many.rb +19 -42
- data/lib/mongoid/relations/referenced/one.rb +6 -25
- data/lib/mongoid/relations/synchronization.rb +4 -4
- data/lib/mongoid/relations/targets/enumerable.rb +10 -10
- data/lib/mongoid/relations/touchable.rb +34 -1
- data/lib/mongoid/relations.rb +11 -25
- data/lib/mongoid/{reloading.rb → reloadable.rb} +7 -5
- data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +185 -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 +16 -3
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/{state.rb → stateful.rb} +13 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/tasks/database.rake +31 -0
- data/lib/mongoid/tasks/database.rb +107 -0
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/threaded.rb +26 -172
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
- data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
- 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 +25 -21
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid.rb +10 -76
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +46 -25
- 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 +0 -122
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +2 -1
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +8 -3
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +3 -3
- 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/contextable_item.rb +5 -0
- 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/dog.rb +1 -1
- 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/edit.rb +5 -0
- data/spec/app/models/even.rb +7 -0
- data/spec/app/models/event.rb +1 -1
- 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 +1 -3
- data/spec/app/models/id_key.rb +6 -0
- 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/line_item.rb +1 -1
- data/spec/app/models/login.rb +1 -1
- data/spec/app/models/message.rb +8 -0
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +3 -1
- data/spec/app/models/odd.rb +7 -0
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +16 -10
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +3 -3
- data/spec/app/models/post.rb +5 -3
- data/spec/app/models/preference.rb +1 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +10 -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/symptom.rb +1 -1
- 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 +3 -3
- data/spec/app/models/video.rb +1 -5
- data/spec/app/models/wiki_page.rb +2 -5
- 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} +474 -592
- data/spec/mongoid/attributes/readonly_spec.rb +58 -18
- data/spec/mongoid/attributes_spec.rb +334 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
- 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 +59 -55
- 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 +156 -94
- data/spec/mongoid/contextual/mongo_spec.rb +238 -150
- data/spec/mongoid/contextual/none_spec.rb +127 -0
- data/spec/mongoid/contextual/text_search_spec.rb +209 -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 +1252 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
- data/spec/mongoid/criteria_spec.rb +713 -2419
- data/spec/mongoid/document_spec.rb +171 -121
- 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_destroyed_spec.rb +33 -0
- 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 +5 -5
- 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 +8 -8
- 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/readonly_document_spec.rb +29 -0
- 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 +8 -8
- 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 +29 -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 +38 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +263 -217
- data/spec/mongoid/findable_spec.rb +509 -0
- 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} +117 -116
- data/spec/mongoid/log_subscriber_spec.rb +75 -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 +553 -0
- data/spec/mongoid/persistable/deletable_spec.rb +218 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +192 -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 +498 -0
- data/spec/mongoid/persistable/settable_spec.rb +162 -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} +9 -9
- data/spec/mongoid/query_cache_spec.rb +263 -0
- 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 +37 -17
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
- 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 +24 -35
- 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 +12 -25
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
- data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
- data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
- data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
- 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 +117 -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 +56 -57
- data/spec/mongoid/relations/embedded/many_spec.rb +467 -372
- data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +180 -255
- 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 +587 -527
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +401 -424
- data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
- 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 +118 -118
- data/spec/mongoid/relations/touchable_spec.rb +333 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +38 -55
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -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 +108 -0
- data/spec/mongoid/sessions_spec.rb +319 -178
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
- data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
- data/spec/mongoid/tasks/database_spec.rb +160 -0
- 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/timeless_spec.rb +6 -6
- data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
- data/spec/mongoid/timestamps/updated_spec.rb +9 -13
- data/spec/mongoid/timestamps_spec.rb +9 -13
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +19 -350
- data/spec/spec_helper.rb +26 -15
- metadata +262 -247
- 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/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/strategies.rb +0 -97
- data/lib/mongoid/matchers.rb +0 -32
- 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/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/atomic.rb +0 -231
- 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/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/operations.rb +0 -214
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/persistence.rb +0 -357
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rack/mongoid.rb +0 -2
- 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/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/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/finders_spec.rb +0 -321
- 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
data/lib/mongoid.rb
CHANGED
|
@@ -1,34 +1,13 @@
|
|
|
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
|
|
|
8
|
+
require "active_support"
|
|
30
9
|
require "active_support/core_ext"
|
|
31
|
-
require
|
|
10
|
+
require "active_support/json"
|
|
32
11
|
require "active_support/inflector"
|
|
33
12
|
require "active_support/time_with_zone"
|
|
34
13
|
require "active_model"
|
|
@@ -36,49 +15,14 @@ require "active_model"
|
|
|
36
15
|
require "origin"
|
|
37
16
|
require "moped"
|
|
38
17
|
|
|
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"
|
|
18
|
+
require "mongoid/version"
|
|
48
19
|
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
20
|
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
21
|
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
22
|
require "mongoid/document"
|
|
23
|
+
require "mongoid/log_subscriber"
|
|
24
|
+
require "mongoid/tasks/database"
|
|
25
|
+
require "mongoid/query_cache"
|
|
82
26
|
|
|
83
27
|
# If we are using Rails then we will include the Mongoid railtie. This has all
|
|
84
28
|
# the nifty initializers that Mongoid needs.
|
|
@@ -86,28 +30,20 @@ if defined?(Rails)
|
|
|
86
30
|
require "mongoid/railtie"
|
|
87
31
|
end
|
|
88
32
|
|
|
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
33
|
# add english load path by default
|
|
96
34
|
I18n.load_path << File.join(File.dirname(__FILE__), "config", "locales", "en.yml")
|
|
97
35
|
|
|
98
36
|
module Mongoid
|
|
99
37
|
extend Loggable
|
|
100
|
-
extend UnitOfWork
|
|
101
38
|
extend self
|
|
102
39
|
|
|
103
|
-
MONGODB_VERSION = "2.
|
|
40
|
+
MONGODB_VERSION = "2.2.0"
|
|
104
41
|
|
|
105
42
|
# Sets the Mongoid configuration options. Best used by passing a block.
|
|
106
43
|
#
|
|
107
44
|
# @example Set up configuration options.
|
|
108
45
|
# Mongoid.configure do |config|
|
|
109
|
-
# config.
|
|
110
|
-
# config.use(name: "mongoid_test", host: "localhost", port: 27017)
|
|
46
|
+
# config.connect_to("mongoid_test")
|
|
111
47
|
# end
|
|
112
48
|
#
|
|
113
49
|
# @return [ Config ] The configuration object.
|
|
@@ -160,7 +96,5 @@ module Mongoid
|
|
|
160
96
|
# Mongoid.database = Mongo::Connection.new.db("test")
|
|
161
97
|
#
|
|
162
98
|
# @since 1.0.0
|
|
163
|
-
delegate(*(Config.public_instance_methods(false)
|
|
164
|
-
ActiveModel::Observing::ClassMethods.public_instance_methods(false) - [:logger=, :logger] <<
|
|
165
|
-
{ to: Config }))
|
|
99
|
+
delegate(*(Config.public_instance_methods(false) - [ :logger=, :logger ] << { to: Config }))
|
|
166
100
|
end
|
|
@@ -11,35 +11,60 @@ development:
|
|
|
11
11
|
hosts:
|
|
12
12
|
- localhost:27017
|
|
13
13
|
options:
|
|
14
|
-
# Change
|
|
15
|
-
#
|
|
16
|
-
#
|
|
14
|
+
# Change the default write concern. (default = { w: 1 })
|
|
15
|
+
# write:
|
|
16
|
+
# w: 1
|
|
17
17
|
|
|
18
|
-
# Change the default consistency model to
|
|
19
|
-
#
|
|
20
|
-
# to master. (default:
|
|
21
|
-
#
|
|
18
|
+
# Change the default consistency model to primary, secondary.
|
|
19
|
+
# 'secondary' will send reads to secondaries, 'primary' sends everything
|
|
20
|
+
# to master. (default: primary)
|
|
21
|
+
# read: secondary_preferred
|
|
22
22
|
|
|
23
23
|
# How many times Moped should attempt to retry an operation after
|
|
24
|
-
# failure. (default:
|
|
25
|
-
# max_retries:
|
|
24
|
+
# failure. (default: The number of nodes in the cluster)
|
|
25
|
+
# max_retries: 20
|
|
26
26
|
|
|
27
27
|
# The time in seconds that Moped should wait before retrying an
|
|
28
|
-
# operation on failure. (default:
|
|
29
|
-
# retry_interval:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
# operation on failure. (default: 0.25)
|
|
29
|
+
# retry_interval: 0.25
|
|
30
|
+
|
|
31
|
+
# The connection pool size per-node. This should match or exceed the
|
|
32
|
+
# number of threads for a multi-threaded application. (default: 5)
|
|
33
|
+
# pool_size: 5
|
|
34
|
+
|
|
35
|
+
# The time in seconds that Moped should wait for the pool to provide
|
|
36
|
+
# an available connection. This number should probably remain at the
|
|
37
|
+
# default, unless for some reason you absolutely need to limit the
|
|
38
|
+
# pool_size, as this wait is only used when the pool is saturated.
|
|
39
|
+
# (default: 0.5)
|
|
40
|
+
# pool_timeout: 0.5
|
|
41
|
+
|
|
42
|
+
# The time in seconds before Moped will timeout connection and node
|
|
43
|
+
# operations. (default: 5)
|
|
44
|
+
# timeout: 5
|
|
45
|
+
|
|
46
|
+
# The amount of time in seconds between forced refreshes of node
|
|
47
|
+
# information including the discovery of new peers. (default: 300)
|
|
48
|
+
# refresh_interval: 300
|
|
49
|
+
|
|
50
|
+
# The amount of time in seconds that a node will be flagged as down.
|
|
51
|
+
# (default: 30)
|
|
52
|
+
# down_interval: 30
|
|
53
|
+
|
|
54
|
+
# Whether connections should use SSL. (default: nil/false)
|
|
55
|
+
# ssl: false
|
|
56
|
+
|
|
57
|
+
# Whether Moped will use the existing seeds/nodes to find other peers.
|
|
58
|
+
# (default: true)
|
|
59
|
+
# auto_discover: true
|
|
35
60
|
|
|
36
|
-
# Enable the identity map, needed for eager loading. (default: false)
|
|
37
|
-
# identity_map_enabled: false
|
|
38
61
|
|
|
62
|
+
# Configure Mongoid specific options. (optional)
|
|
63
|
+
options:
|
|
39
64
|
# Includes the root model name in json serialization. (default: false)
|
|
40
65
|
# include_root_in_json: false
|
|
41
66
|
|
|
42
|
-
# Include the _type field in
|
|
67
|
+
# Include the _type field in serialization. (default: false)
|
|
43
68
|
# include_type_for_serialization: false
|
|
44
69
|
|
|
45
70
|
# Preload all models in development, needed when models use
|
|
@@ -57,11 +82,7 @@ development:
|
|
|
57
82
|
# existing method. (default: false)
|
|
58
83
|
# scope_overwrite_exception: false
|
|
59
84
|
|
|
60
|
-
#
|
|
61
|
-
# admin access. (default: false)
|
|
62
|
-
# skip_version_check: false
|
|
63
|
-
|
|
64
|
-
# User Active Support's time zone in conversions. (default: true)
|
|
85
|
+
# Use Active Support's time zone in conversions. (default: true)
|
|
65
86
|
# use_activesupport_time_zone: true
|
|
66
87
|
|
|
67
88
|
# Ensure all times are UTC in the app side. (default: false)
|
|
@@ -73,7 +94,7 @@ test:
|
|
|
73
94
|
hosts:
|
|
74
95
|
- localhost:27017
|
|
75
96
|
options:
|
|
76
|
-
|
|
97
|
+
read: primary
|
|
77
98
|
# In the test environment we lower the retries and retry interval to
|
|
78
99
|
# low amounts for fast failures.
|
|
79
100
|
max_retries: 1
|
|
@@ -12,7 +12,6 @@ module Mongoid
|
|
|
12
12
|
|
|
13
13
|
class_option :timestamps, type: :boolean
|
|
14
14
|
class_option :parent, type: :string, desc: "The parent class for the generated model"
|
|
15
|
-
class_option :versioning, type: :boolean, default: false, desc: "Enable mongoid versioning"
|
|
16
15
|
class_option :collection, type: :string, desc: "The collection for storing model's documents"
|
|
17
16
|
|
|
18
17
|
def create_model_file
|
|
@@ -6,9 +6,6 @@ class <%= class_name %><%= " < #{options[:parent].classify}" if options[:parent]
|
|
|
6
6
|
<% if options[:timestamps] -%>
|
|
7
7
|
include Mongoid::Timestamps
|
|
8
8
|
<% end -%>
|
|
9
|
-
<% if options[:versioning] -%>
|
|
10
|
-
include Mongoid::Versioning
|
|
11
|
-
<% end -%>
|
|
12
9
|
<% if options[:collection] -%>
|
|
13
10
|
store_in collection: "<%= options[:collection] %>"
|
|
14
11
|
<% end -%>
|
|
@@ -11,44 +11,6 @@ module Mongoid
|
|
|
11
11
|
File.expand_path("../#{base_name}/#{generator_name}/templates", __FILE__)
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
|
-
|
|
15
|
-
class ActiveModel < ::Rails::Generators::ActiveModel
|
|
16
|
-
def self.all(klass)
|
|
17
|
-
"#{klass}.all"
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def self.find(klass, params=nil)
|
|
21
|
-
"#{klass}.find(#{params})"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def self.build(klass, params=nil)
|
|
25
|
-
if params
|
|
26
|
-
"#{klass}.new(#{params})"
|
|
27
|
-
else
|
|
28
|
-
"#{klass}.new"
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def save
|
|
33
|
-
"#{name}.save"
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def update_attributes(params=nil)
|
|
37
|
-
"#{name}.update_attributes(#{params})"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def errors
|
|
41
|
-
"#{name}.errors"
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def delete
|
|
45
|
-
"#{name}.delete"
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def destroy
|
|
49
|
-
"#{name}.destroy"
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
14
|
end
|
|
53
15
|
end
|
|
54
16
|
|
|
@@ -56,8 +18,9 @@ module Rails
|
|
|
56
18
|
module Generators
|
|
57
19
|
class GeneratedAttribute
|
|
58
20
|
def type_class
|
|
59
|
-
return "Time" if type
|
|
60
|
-
return "String" if type
|
|
21
|
+
return "Time" if type == :datetime
|
|
22
|
+
return "String" if type == :text
|
|
23
|
+
return "Mongoid::Boolean" if type == :boolean
|
|
61
24
|
type.to_s.camelcase
|
|
62
25
|
end
|
|
63
26
|
end
|
data/lib/rails/mongoid.rb
CHANGED
|
@@ -3,98 +3,6 @@ module Rails
|
|
|
3
3
|
module Mongoid
|
|
4
4
|
extend self
|
|
5
5
|
|
|
6
|
-
# Create indexes for each model given the provided globs and the class is
|
|
7
|
-
# not embedded.
|
|
8
|
-
#
|
|
9
|
-
# @example Create all the indexes.
|
|
10
|
-
# Rails::Mongoid.create_indexes("app/models/**/*.rb")
|
|
11
|
-
#
|
|
12
|
-
# @param [ Array<String> ] globs The file matching globs.
|
|
13
|
-
#
|
|
14
|
-
# @return [ Array<Class> ] The indexed models.
|
|
15
|
-
#
|
|
16
|
-
# @since 2.1.0
|
|
17
|
-
def create_indexes(*globs)
|
|
18
|
-
models(*globs).each do |model|
|
|
19
|
-
next if model.index_options.empty?
|
|
20
|
-
if !model.embedded? || model.cyclic?
|
|
21
|
-
model.create_indexes
|
|
22
|
-
logger.info("MONGOID: Created indexes on #{model}:")
|
|
23
|
-
model.index_options.each_pair do |index, options|
|
|
24
|
-
logger.info("MONGOID: Index: #{index}, Options: #{options}")
|
|
25
|
-
end
|
|
26
|
-
model
|
|
27
|
-
else
|
|
28
|
-
logger.info("MONGOID: Index ignored on: #{model}, please define in the root model.")
|
|
29
|
-
nil
|
|
30
|
-
end
|
|
31
|
-
end.compact
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# Remove indexes for each model given the provided globs and the class is
|
|
35
|
-
# not embedded.
|
|
36
|
-
#
|
|
37
|
-
# @example Remove all the indexes.
|
|
38
|
-
# Rails::Mongoid.create_indexes("app/models/**/*.rb")
|
|
39
|
-
#
|
|
40
|
-
# @param [ Array<String> ] globs The file matching globs.
|
|
41
|
-
#
|
|
42
|
-
# @return [ Array<Class> ] The un-indexed models.
|
|
43
|
-
#
|
|
44
|
-
def remove_indexes(*globs)
|
|
45
|
-
models(*globs).each do |model|
|
|
46
|
-
next if model.embedded?
|
|
47
|
-
indexes = model.collection.indexes.map{ |doc| doc["name"] }
|
|
48
|
-
indexes.delete_one("_id_")
|
|
49
|
-
model.remove_indexes
|
|
50
|
-
logger.info("MONGOID: Removing indexes on: #{model} for: #{indexes.join(', ')}.")
|
|
51
|
-
model
|
|
52
|
-
end.compact
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Return all models matching the globs or, if no globs are specified, all
|
|
56
|
-
# possible models known from engines, the app, any gems, etc.
|
|
57
|
-
#
|
|
58
|
-
# @example Return *all* models. Return all models under app/models/
|
|
59
|
-
# Rails::Mongoid.models
|
|
60
|
-
# Rails::Mongoid.models("app/models/**/*.rb")
|
|
61
|
-
#
|
|
62
|
-
# @param [ String ] glob The file matching glob.
|
|
63
|
-
#
|
|
64
|
-
# @return [ Array<Class> ] The models.
|
|
65
|
-
#
|
|
66
|
-
def models(*globs)
|
|
67
|
-
all_possible_models = globs.empty?
|
|
68
|
-
|
|
69
|
-
if globs.empty?
|
|
70
|
-
engines_models_paths = Rails.application.railties.engines.map{|engine| engine.paths["app/models"].expanded}
|
|
71
|
-
root_models_paths = Rails.application.paths["app/models"]
|
|
72
|
-
models_paths = engines_models_paths.push(root_models_paths).flatten
|
|
73
|
-
globs.replace(models_paths.map{|path| "#{path}/**/*.rb"})
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
models = []
|
|
77
|
-
|
|
78
|
-
globs.flatten.compact.each do |glob|
|
|
79
|
-
Dir.glob(glob).map do |file|
|
|
80
|
-
begin
|
|
81
|
-
model = determine_model(file, logger)
|
|
82
|
-
models.push(model)
|
|
83
|
-
rescue => e
|
|
84
|
-
logger.error(%Q{MONGOID: Failed to determine model from #{file}:
|
|
85
|
-
#{e.class}:#{e.message}
|
|
86
|
-
#{e.backtrace.join("\n")}
|
|
87
|
-
})
|
|
88
|
-
nil
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
models = (::Mongoid.models | models) if all_possible_models
|
|
94
|
-
|
|
95
|
-
models.compact.sort_by { |model| model.name || '' }
|
|
96
|
-
end
|
|
97
|
-
|
|
98
6
|
# Use the application configuration to get every model and require it, so
|
|
99
7
|
# that indexing and inheritance work in both development and production
|
|
100
8
|
# with the same results.
|
|
@@ -144,35 +52,5 @@ module Rails
|
|
|
144
52
|
Logger.new($stdout).warn(e.message)
|
|
145
53
|
end
|
|
146
54
|
end
|
|
147
|
-
|
|
148
|
-
# Given the provided file name, determine the model and return the class.
|
|
149
|
-
#
|
|
150
|
-
# @example Determine the model from the file.
|
|
151
|
-
# Rails::Mongoid.determine_model("app/models/person.rb")
|
|
152
|
-
#
|
|
153
|
-
# @param [ String ] file The filename.
|
|
154
|
-
#
|
|
155
|
-
# @return [ Class ] The model.
|
|
156
|
-
#
|
|
157
|
-
# @since 2.1.0
|
|
158
|
-
def determine_model(file, logger)
|
|
159
|
-
return nil unless file =~ /app\/models\/(.*).rb$/
|
|
160
|
-
return nil unless logger
|
|
161
|
-
|
|
162
|
-
model_path = $1.split('/')
|
|
163
|
-
begin
|
|
164
|
-
parts = model_path.map { |path| path.camelize }
|
|
165
|
-
name = parts.join("::")
|
|
166
|
-
klass = name.constantize
|
|
167
|
-
rescue NameError, LoadError
|
|
168
|
-
logger.info("MONGOID: Attempted to constantize #{name}, trying without namespacing.")
|
|
169
|
-
klass = parts.last.constantize rescue nil
|
|
170
|
-
end
|
|
171
|
-
klass if klass && klass.ancestors.include?(::Mongoid::Document)
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
def logger
|
|
175
|
-
@logger ||= Logger.new($stdout)
|
|
176
|
-
end
|
|
177
55
|
end
|
|
178
56
|
end
|
data/lib/support/ruby_version.rb
CHANGED
|
@@ -19,7 +19,7 @@ end
|
|
|
19
19
|
if invalid_version?
|
|
20
20
|
message = %{
|
|
21
21
|
Mongoid requires MRI version 1.9.3+ or JRuby 1.6.0+ running in 1.9 mode.
|
|
22
|
-
|
|
22
|
+
Your current Ruby version is defined as #{RUBY_VERSION}. Please see:
|
|
23
23
|
http://mongoid.org/en/mongoid/docs/tips.html#ruby for details.
|
|
24
24
|
}
|
|
25
25
|
raise_version_error(message)
|
data/spec/app/models/account.rb
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
class Account
|
|
2
2
|
include Mongoid::Document
|
|
3
3
|
|
|
4
|
-
field :_id, type: String, default: ->{ name.try(:parameterize) }
|
|
4
|
+
field :_id, type: String, overwrite: true, default: ->{ name.try(:parameterize) }
|
|
5
5
|
|
|
6
6
|
field :number, type: String
|
|
7
7
|
field :balance, type: String
|
|
8
8
|
field :nickname, type: String
|
|
9
9
|
field :name, type: String
|
|
10
|
-
field :balanced, type: Boolean, default: ->{ balance? ? true : false }
|
|
10
|
+
field :balanced, type: Mongoid::Boolean, default: ->{ balance? ? true : false }
|
|
11
11
|
|
|
12
12
|
field :overridden, type: String
|
|
13
13
|
|
|
@@ -18,10 +18,6 @@ class Account
|
|
|
18
18
|
has_and_belongs_to_many :agents
|
|
19
19
|
has_one :comment, validate: false
|
|
20
20
|
|
|
21
|
-
attr_accessible :nickname, as: [ :default, :admin ]
|
|
22
|
-
attr_accessible :name, as: [ :default, :admin ]
|
|
23
|
-
attr_accessible :balance, as: :default
|
|
24
|
-
|
|
25
21
|
validates_presence_of :name
|
|
26
22
|
validates_presence_of :nickname, on: :upsert
|
|
27
23
|
validates_length_of :name, maximum: 10, on: :create
|
data/spec/app/models/acolyte.rb
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
class Acolyte
|
|
2
2
|
include Mongoid::Document
|
|
3
|
+
include Mongoid::Attributes::Dynamic
|
|
3
4
|
field :status
|
|
4
5
|
field :name
|
|
5
6
|
|
|
6
7
|
embeds_many :versions, as: :memorable
|
|
7
8
|
belongs_to :church
|
|
8
9
|
|
|
9
|
-
default_scope asc(:name)
|
|
10
|
+
default_scope ->{ asc(:name) }
|
|
10
11
|
scope :active, ->{ where(status: "active") }
|
|
11
12
|
scope :named, ->{ where(:name.exists => true) }
|
|
12
13
|
|
data/spec/app/models/actor.rb
CHANGED
data/spec/app/models/address.rb
CHANGED
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
class Address
|
|
2
2
|
include Mongoid::Document
|
|
3
3
|
|
|
4
|
-
field :_id, type: String, default: ->{ street.try(:parameterize) }
|
|
4
|
+
field :_id, type: String, overwrite: true, default: ->{ street.try(:parameterize) }
|
|
5
5
|
|
|
6
6
|
attr_accessor :mode
|
|
7
7
|
|
|
8
8
|
field :address_type
|
|
9
9
|
field :number, type: Integer
|
|
10
|
+
field :no, type: Integer
|
|
11
|
+
field :h, as: :house, type: Integer
|
|
10
12
|
field :street
|
|
11
13
|
field :city
|
|
12
14
|
field :state
|
|
13
15
|
field :post_code
|
|
14
16
|
field :parent_title
|
|
15
17
|
field :services, type: Array
|
|
18
|
+
field :aliases, as: :a, type: Array
|
|
19
|
+
field :test, type: Array
|
|
16
20
|
field :latlng, type: Array
|
|
17
21
|
field :map, type: Hash
|
|
18
22
|
field :move_in, type: DateTime
|
|
23
|
+
field :end_date, type: Date
|
|
19
24
|
field :s, type: String, as: :suite
|
|
20
25
|
field :name, localize: true
|
|
21
26
|
|
|
@@ -38,8 +43,8 @@ class Address
|
|
|
38
43
|
belongs_to :account
|
|
39
44
|
belongs_to :band
|
|
40
45
|
|
|
41
|
-
scope :without_postcode, where(postcode: nil)
|
|
42
|
-
scope :rodeo, where(street: "Rodeo Dr") do
|
|
46
|
+
scope :without_postcode, ->{ where(postcode: nil) }
|
|
47
|
+
scope :rodeo, ->{ where(street: "Rodeo Dr") } do
|
|
43
48
|
def mansion?
|
|
44
49
|
all? { |address| address.street == "Rodeo Dr" }
|
|
45
50
|
end
|
data/spec/app/models/animal.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class Appointment
|
|
2
2
|
include Mongoid::Document
|
|
3
|
-
field :active, type: Boolean, default: true
|
|
4
|
-
field :timed, type: Boolean, default: true
|
|
3
|
+
field :active, type: Mongoid::Boolean, default: true
|
|
4
|
+
field :timed, type: Mongoid::Boolean, default: true
|
|
5
5
|
embedded_in :person
|
|
6
|
-
default_scope where(active: true)
|
|
6
|
+
default_scope ->{ where(active: true) }
|
|
7
7
|
end
|
data/spec/app/models/article.rb
CHANGED
|
@@ -2,12 +2,9 @@ class Article
|
|
|
2
2
|
include Mongoid::Document
|
|
3
3
|
|
|
4
4
|
field :title, type: String
|
|
5
|
-
field :is_rss, type: Boolean, default: false
|
|
5
|
+
field :is_rss, type: Mongoid::Boolean, default: false
|
|
6
6
|
field :user_login, type: String
|
|
7
7
|
|
|
8
|
-
attr_accessible :title, as: [:default, :parser]
|
|
9
|
-
attr_accessible :is_rss, as: :parser
|
|
10
|
-
attr_accessible :user_login
|
|
11
8
|
has_and_belongs_to_many :tags, validate: false
|
|
12
9
|
has_and_belongs_to_many :preferences, inverse_of: nil, validate: false
|
|
13
10
|
end
|
data/spec/app/models/author.rb
CHANGED
data/spec/app/models/band.rb
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
class Band
|
|
2
2
|
include Mongoid::Document
|
|
3
|
+
include Mongoid::Attributes::Dynamic
|
|
3
4
|
field :name, type: String
|
|
4
|
-
field :active, type: Boolean, default: true
|
|
5
|
+
field :active, type: Mongoid::Boolean, default: true
|
|
5
6
|
field :origin, type: String
|
|
6
7
|
field :genres, type: Array
|
|
7
8
|
field :member_count, type: Integer
|
|
@@ -9,7 +10,7 @@ class Band
|
|
|
9
10
|
field :likes, type: Integer
|
|
10
11
|
field :views, type: Integer
|
|
11
12
|
field :rating, type: Float
|
|
12
|
-
field :upserted, type: Boolean, default: false
|
|
13
|
+
field :upserted, type: Mongoid::Boolean, default: false
|
|
13
14
|
field :created, type: DateTime
|
|
14
15
|
field :sales, type: BigDecimal
|
|
15
16
|
field :y, as: :years, type: Integer
|
data/spec/app/models/bar.rb
CHANGED
data/spec/app/models/book.rb
CHANGED
data/spec/app/models/building.rb
CHANGED
data/spec/app/models/bus.rb
CHANGED
data/spec/app/models/canvas.rb
CHANGED