mongoid_rails4 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +3213 -0
- data/LICENSE +20 -0
- data/README.md +62 -0
- data/Rakefile +35 -0
- data/lib/config/locales/en.yml +448 -0
- data/lib/mongoid.rb +104 -0
- data/lib/mongoid/atomic.rb +384 -0
- data/lib/mongoid/atomic/modifiers.rb +317 -0
- data/lib/mongoid/atomic/paths.rb +3 -0
- data/lib/mongoid/atomic/paths/embedded.rb +28 -0
- data/lib/mongoid/atomic/paths/embedded/many.rb +44 -0
- data/lib/mongoid/atomic/paths/embedded/one.rb +43 -0
- data/lib/mongoid/atomic/paths/root.rb +39 -0
- data/lib/mongoid/attributes.rb +284 -0
- data/lib/mongoid/attributes/dynamic.rb +154 -0
- data/lib/mongoid/attributes/nested.rb +82 -0
- data/lib/mongoid/attributes/processing.rb +147 -0
- data/lib/mongoid/attributes/readonly.rb +56 -0
- data/lib/mongoid/changeable.rb +379 -0
- data/lib/mongoid/composable.rb +104 -0
- data/lib/mongoid/config.rb +263 -0
- data/lib/mongoid/config/environment.rb +44 -0
- data/lib/mongoid/config/options.rb +74 -0
- data/lib/mongoid/config/validators.rb +3 -0
- data/lib/mongoid/config/validators/option.rb +25 -0
- data/lib/mongoid/config/validators/session.rb +140 -0
- data/lib/mongoid/contextual.rb +54 -0
- data/lib/mongoid/contextual/aggregable/memory.rb +109 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +147 -0
- data/lib/mongoid/contextual/atomic.rb +180 -0
- data/lib/mongoid/contextual/command.rb +61 -0
- data/lib/mongoid/contextual/eager.rb +158 -0
- data/lib/mongoid/contextual/find_and_modify.rb +69 -0
- data/lib/mongoid/contextual/geo_near.rb +238 -0
- data/lib/mongoid/contextual/map_reduce.rb +324 -0
- data/lib/mongoid/contextual/memory.rb +440 -0
- data/lib/mongoid/contextual/mongo.rb +676 -0
- data/lib/mongoid/contextual/queryable.rb +25 -0
- data/lib/mongoid/contextual/text_search.rb +180 -0
- data/lib/mongoid/copyable.rb +67 -0
- data/lib/mongoid/criteria.rb +562 -0
- data/lib/mongoid/criteria/findable.rb +179 -0
- data/lib/mongoid/criteria/inspectable.rb +25 -0
- data/lib/mongoid/criteria/marshalable.rb +50 -0
- data/lib/mongoid/criteria/modifiable.rb +189 -0
- data/lib/mongoid/criteria/scopable.rb +158 -0
- data/lib/mongoid/document.rb +361 -0
- data/lib/mongoid/equality.rb +66 -0
- data/lib/mongoid/errors.rb +40 -0
- data/lib/mongoid/errors/ambiguous_relationship.rb +51 -0
- data/lib/mongoid/errors/callback.rb +25 -0
- data/lib/mongoid/errors/delete_restriction.rb +29 -0
- data/lib/mongoid/errors/document_not_found.rb +111 -0
- data/lib/mongoid/errors/eager_load.rb +22 -0
- data/lib/mongoid/errors/invalid_collection.rb +18 -0
- data/lib/mongoid/errors/invalid_config_option.rb +27 -0
- data/lib/mongoid/errors/invalid_field.rb +64 -0
- data/lib/mongoid/errors/invalid_field_option.rb +35 -0
- data/lib/mongoid/errors/invalid_find.rb +19 -0
- data/lib/mongoid/errors/invalid_includes.rb +32 -0
- data/lib/mongoid/errors/invalid_index.rb +28 -0
- data/lib/mongoid/errors/invalid_options.rb +28 -0
- data/lib/mongoid/errors/invalid_path.rb +21 -0
- data/lib/mongoid/errors/invalid_scope.rb +24 -0
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +38 -0
- data/lib/mongoid/errors/invalid_storage_options.rb +27 -0
- data/lib/mongoid/errors/invalid_time.rb +22 -0
- data/lib/mongoid/errors/inverse_not_found.rb +29 -0
- data/lib/mongoid/errors/mixed_relations.rb +32 -0
- data/lib/mongoid/errors/mixed_session_configuration.rb +28 -0
- data/lib/mongoid/errors/mongoid_error.rb +92 -0
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +28 -0
- data/lib/mongoid/errors/no_default_session.rb +23 -0
- data/lib/mongoid/errors/no_environment.rb +19 -0
- data/lib/mongoid/errors/no_map_reduce_output.rb +24 -0
- data/lib/mongoid/errors/no_metadata.rb +21 -0
- data/lib/mongoid/errors/no_parent.rb +24 -0
- data/lib/mongoid/errors/no_session_config.rb +22 -0
- data/lib/mongoid/errors/no_session_database.rb +27 -0
- data/lib/mongoid/errors/no_session_hosts.rb +27 -0
- data/lib/mongoid/errors/no_sessions_config.rb +20 -0
- data/lib/mongoid/errors/readonly_attribute.rb +25 -0
- data/lib/mongoid/errors/scope_overwrite.rb +21 -0
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +20 -0
- data/lib/mongoid/errors/unknown_attribute.rb +25 -0
- data/lib/mongoid/errors/unsaved_document.rb +19 -0
- data/lib/mongoid/errors/unsupported_javascript.rb +27 -0
- data/lib/mongoid/errors/validations.rb +29 -0
- data/lib/mongoid/evolvable.rb +19 -0
- data/lib/mongoid/extensions.rb +35 -0
- data/lib/mongoid/extensions/array.rb +180 -0
- data/lib/mongoid/extensions/big_decimal.rb +69 -0
- data/lib/mongoid/extensions/boolean.rb +21 -0
- data/lib/mongoid/extensions/date.rb +77 -0
- data/lib/mongoid/extensions/date_time.rb +73 -0
- data/lib/mongoid/extensions/false_class.rb +38 -0
- data/lib/mongoid/extensions/float.rb +56 -0
- data/lib/mongoid/extensions/hash.rb +209 -0
- data/lib/mongoid/extensions/integer.rb +67 -0
- data/lib/mongoid/extensions/module.rb +28 -0
- data/lib/mongoid/extensions/nil_class.rb +33 -0
- data/lib/mongoid/extensions/object.rb +274 -0
- data/lib/mongoid/extensions/object_id.rb +54 -0
- data/lib/mongoid/extensions/range.rb +79 -0
- data/lib/mongoid/extensions/regexp.rb +27 -0
- data/lib/mongoid/extensions/set.rb +55 -0
- data/lib/mongoid/extensions/string.rb +199 -0
- data/lib/mongoid/extensions/symbol.rb +54 -0
- data/lib/mongoid/extensions/time.rb +88 -0
- data/lib/mongoid/extensions/time_with_zone.rb +56 -0
- data/lib/mongoid/extensions/true_class.rb +38 -0
- data/lib/mongoid/factory.rb +46 -0
- data/lib/mongoid/fields.rb +542 -0
- data/lib/mongoid/fields/foreign_key.rb +174 -0
- data/lib/mongoid/fields/localized.rb +73 -0
- data/lib/mongoid/fields/standard.rb +273 -0
- data/lib/mongoid/fields/validators.rb +2 -0
- data/lib/mongoid/fields/validators/macro.rb +92 -0
- data/lib/mongoid/findable.rb +133 -0
- data/lib/mongoid/identity_map.rb +163 -0
- data/lib/mongoid/indexable.rb +147 -0
- data/lib/mongoid/indexable/specification.rb +115 -0
- data/lib/mongoid/indexable/validators/options.rb +103 -0
- data/lib/mongoid/inspectable.rb +59 -0
- data/lib/mongoid/interceptable.rb +265 -0
- data/lib/mongoid/loggable.rb +69 -0
- data/lib/mongoid/matchable.rb +152 -0
- data/lib/mongoid/matchable/all.rb +27 -0
- data/lib/mongoid/matchable/and.rb +30 -0
- data/lib/mongoid/matchable/default.rb +72 -0
- data/lib/mongoid/matchable/exists.rb +23 -0
- data/lib/mongoid/matchable/gt.rb +21 -0
- data/lib/mongoid/matchable/gte.rb +21 -0
- data/lib/mongoid/matchable/in.rb +24 -0
- data/lib/mongoid/matchable/lt.rb +21 -0
- data/lib/mongoid/matchable/lte.rb +21 -0
- data/lib/mongoid/matchable/ne.rb +21 -0
- data/lib/mongoid/matchable/nin.rb +21 -0
- data/lib/mongoid/matchable/or.rb +33 -0
- data/lib/mongoid/matchable/size.rb +21 -0
- data/lib/mongoid/persistable.rb +207 -0
- data/lib/mongoid/persistable/creatable.rb +189 -0
- data/lib/mongoid/persistable/deletable.rb +149 -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 +156 -0
- data/lib/mongoid/railties/database.rake +97 -0
- data/lib/mongoid/railties/document.rb +12 -0
- data/lib/mongoid/relations.rb +162 -0
- data/lib/mongoid/relations/accessors.rb +299 -0
- data/lib/mongoid/relations/auto_save.rb +106 -0
- data/lib/mongoid/relations/binding.rb +218 -0
- data/lib/mongoid/relations/bindings.rb +9 -0
- data/lib/mongoid/relations/bindings/embedded/in.rb +63 -0
- data/lib/mongoid/relations/bindings/embedded/many.rb +50 -0
- data/lib/mongoid/relations/bindings/embedded/one.rb +55 -0
- data/lib/mongoid/relations/bindings/referenced/in.rb +65 -0
- data/lib/mongoid/relations/bindings/referenced/many.rb +42 -0
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +67 -0
- data/lib/mongoid/relations/bindings/referenced/one.rb +44 -0
- data/lib/mongoid/relations/builder.rb +57 -0
- data/lib/mongoid/relations/builders.rb +104 -0
- data/lib/mongoid/relations/builders/embedded/in.rb +29 -0
- data/lib/mongoid/relations/builders/embedded/many.rb +36 -0
- data/lib/mongoid/relations/builders/embedded/one.rb +30 -0
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +174 -0
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +126 -0
- data/lib/mongoid/relations/builders/referenced/in.rb +26 -0
- data/lib/mongoid/relations/builders/referenced/many.rb +27 -0
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +40 -0
- data/lib/mongoid/relations/builders/referenced/one.rb +26 -0
- data/lib/mongoid/relations/cascading.rb +56 -0
- data/lib/mongoid/relations/cascading/delete.rb +44 -0
- data/lib/mongoid/relations/cascading/destroy.rb +43 -0
- data/lib/mongoid/relations/cascading/nullify.rb +35 -0
- data/lib/mongoid/relations/cascading/restrict.rb +39 -0
- data/lib/mongoid/relations/constraint.rb +49 -0
- data/lib/mongoid/relations/conversions.rb +34 -0
- data/lib/mongoid/relations/counter_cache.rb +105 -0
- data/lib/mongoid/relations/cyclic.rb +107 -0
- data/lib/mongoid/relations/embedded/batchable.rb +355 -0
- data/lib/mongoid/relations/embedded/in.rb +231 -0
- data/lib/mongoid/relations/embedded/many.rb +639 -0
- data/lib/mongoid/relations/embedded/one.rb +223 -0
- data/lib/mongoid/relations/macros.rb +356 -0
- data/lib/mongoid/relations/many.rb +208 -0
- data/lib/mongoid/relations/marshalable.rb +32 -0
- data/lib/mongoid/relations/metadata.rb +1174 -0
- data/lib/mongoid/relations/nested_builder.rb +74 -0
- data/lib/mongoid/relations/one.rb +48 -0
- data/lib/mongoid/relations/options.rb +48 -0
- data/lib/mongoid/relations/polymorphic.rb +39 -0
- data/lib/mongoid/relations/proxy.rb +270 -0
- data/lib/mongoid/relations/referenced/in.rb +297 -0
- data/lib/mongoid/relations/referenced/many.rb +787 -0
- data/lib/mongoid/relations/referenced/many_to_many.rb +486 -0
- data/lib/mongoid/relations/referenced/one.rb +290 -0
- data/lib/mongoid/relations/reflections.rb +62 -0
- data/lib/mongoid/relations/synchronization.rb +169 -0
- data/lib/mongoid/relations/targets.rb +2 -0
- data/lib/mongoid/relations/targets/enumerable.rb +473 -0
- data/lib/mongoid/relations/touchable.rb +94 -0
- data/lib/mongoid/reloadable.rb +95 -0
- data/lib/mongoid/scopable.rb +379 -0
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/serializable.rb +170 -0
- data/lib/mongoid/sessions.rb +330 -0
- data/lib/mongoid/sessions/factory.rb +129 -0
- data/lib/mongoid/sessions/mongo_uri.rb +93 -0
- data/lib/mongoid/sessions/options.rb +141 -0
- data/lib/mongoid/sessions/validators.rb +2 -0
- data/lib/mongoid/sessions/validators/storage.rb +49 -0
- data/lib/mongoid/shardable.rb +65 -0
- data/lib/mongoid/state.rb +97 -0
- data/lib/mongoid/threaded.rb +383 -0
- data/lib/mongoid/threaded/lifecycle.rb +164 -0
- data/lib/mongoid/timestamps.rb +15 -0
- data/lib/mongoid/timestamps/created.rb +30 -0
- data/lib/mongoid/timestamps/created/short.rb +19 -0
- data/lib/mongoid/timestamps/short.rb +10 -0
- data/lib/mongoid/timestamps/updated.rb +39 -0
- data/lib/mongoid/timestamps/updated/short.rb +19 -0
- data/lib/mongoid/traversable.rb +192 -0
- data/lib/mongoid/unit_of_work.rb +61 -0
- data/lib/mongoid/validatable.rb +180 -0
- data/lib/mongoid/validatable/associated.rb +48 -0
- data/lib/mongoid/validatable/format.rb +20 -0
- data/lib/mongoid/validatable/length.rb +20 -0
- data/lib/mongoid/validatable/localizable.rb +30 -0
- data/lib/mongoid/validatable/macros.rb +94 -0
- data/lib/mongoid/validatable/presence.rb +86 -0
- data/lib/mongoid/validatable/queryable.rb +30 -0
- data/lib/mongoid/validatable/uniqueness.rb +330 -0
- data/lib/mongoid/version.rb +4 -0
- data/lib/rack/mongoid.rb +2 -0
- data/lib/rack/mongoid/middleware/identity_map.rb +39 -0
- data/lib/rails/generators/mongoid/config/config_generator.rb +25 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +76 -0
- data/lib/rails/generators/mongoid/model/model_generator.rb +25 -0
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +19 -0
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +17 -0
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +4 -0
- data/lib/rails/generators/mongoid_generator.rb +65 -0
- data/lib/rails/mongoid.rb +180 -0
- data/lib/support/ruby_version.rb +26 -0
- data/spec/app/models/account.rb +28 -0
- data/spec/app/models/acolyte.rb +17 -0
- data/spec/app/models/actor.rb +18 -0
- data/spec/app/models/actress.rb +2 -0
- data/spec/app/models/address.rb +77 -0
- data/spec/app/models/address_component.rb +5 -0
- data/spec/app/models/address_number.rb +6 -0
- data/spec/app/models/agency.rb +5 -0
- data/spec/app/models/agent.rb +12 -0
- data/spec/app/models/album.rb +14 -0
- data/spec/app/models/alert.rb +5 -0
- data/spec/app/models/animal.rb +25 -0
- data/spec/app/models/answer.rb +4 -0
- data/spec/app/models/appointment.rb +7 -0
- data/spec/app/models/article.rb +10 -0
- data/spec/app/models/artist.rb +66 -0
- data/spec/app/models/artwork.rb +4 -0
- data/spec/app/models/audio.rb +5 -0
- data/spec/app/models/augmentation.rb +11 -0
- data/spec/app/models/author.rb +4 -0
- data/spec/app/models/band.rb +26 -0
- data/spec/app/models/bar.rb +10 -0
- data/spec/app/models/basic.rb +6 -0
- data/spec/app/models/bed.rb +1 -0
- data/spec/app/models/big_palette.rb +2 -0
- data/spec/app/models/birthday.rb +13 -0
- data/spec/app/models/book.rb +13 -0
- data/spec/app/models/breed.rb +4 -0
- data/spec/app/models/browser.rb +6 -0
- data/spec/app/models/building.rb +5 -0
- data/spec/app/models/building_address.rb +5 -0
- data/spec/app/models/bus.rb +7 -0
- data/spec/app/models/business.rb +5 -0
- data/spec/app/models/callback_recorder.rb +25 -0
- data/spec/app/models/callback_test.rb +9 -0
- data/spec/app/models/canvas.rb +25 -0
- data/spec/app/models/car.rb +1 -0
- data/spec/app/models/cat.rb +8 -0
- data/spec/app/models/category.rb +8 -0
- data/spec/app/models/child.rb +4 -0
- data/spec/app/models/child_doc.rb +22 -0
- data/spec/app/models/church.rb +4 -0
- data/spec/app/models/circle.rb +3 -0
- data/spec/app/models/circuit.rb +4 -0
- data/spec/app/models/circus.rb +7 -0
- data/spec/app/models/code.rb +5 -0
- data/spec/app/models/comment.rb +16 -0
- data/spec/app/models/contractor.rb +5 -0
- data/spec/app/models/cookie.rb +6 -0
- data/spec/app/models/country_code.rb +8 -0
- data/spec/app/models/definition.rb +7 -0
- data/spec/app/models/description.rb +11 -0
- data/spec/app/models/dictionary.rb +10 -0
- data/spec/app/models/division.rb +10 -0
- data/spec/app/models/doctor.rb +12 -0
- data/spec/app/models/dog.rb +7 -0
- data/spec/app/models/dokument.rb +5 -0
- data/spec/app/models/dragon.rb +4 -0
- data/spec/app/models/driver.rb +7 -0
- data/spec/app/models/drug.rb +6 -0
- data/spec/app/models/dungeon.rb +4 -0
- data/spec/app/models/email.rb +6 -0
- data/spec/app/models/employer.rb +5 -0
- data/spec/app/models/entry.rb +6 -0
- data/spec/app/models/eraser.rb +1 -0
- data/spec/app/models/event.rb +22 -0
- data/spec/app/models/exhibition.rb +4 -0
- data/spec/app/models/exhibitor.rb +5 -0
- data/spec/app/models/eye.rb +9 -0
- data/spec/app/models/eye_bowl.rb +9 -0
- data/spec/app/models/face.rb +8 -0
- data/spec/app/models/favorite.rb +6 -0
- data/spec/app/models/filesystem.rb +5 -0
- data/spec/app/models/fire_hydrant.rb +6 -0
- data/spec/app/models/firefox.rb +4 -0
- data/spec/app/models/fish.rb +7 -0
- data/spec/app/models/folder.rb +7 -0
- data/spec/app/models/folder_item.rb +9 -0
- data/spec/app/models/fruits.rb +28 -0
- data/spec/app/models/game.rb +19 -0
- data/spec/app/models/ghost.rb +7 -0
- data/spec/app/models/home.rb +4 -0
- data/spec/app/models/house.rb +6 -0
- data/spec/app/models/html_writer.rb +3 -0
- data/spec/app/models/image.rb +22 -0
- data/spec/app/models/implant.rb +16 -0
- data/spec/app/models/item.rb +8 -0
- data/spec/app/models/jar.rb +7 -0
- data/spec/app/models/label.rb +40 -0
- data/spec/app/models/language.rb +5 -0
- data/spec/app/models/lat_lng.rb +15 -0
- data/spec/app/models/league.rb +11 -0
- data/spec/app/models/learner.rb +2 -0
- data/spec/app/models/line_item.rb +6 -0
- data/spec/app/models/location.rb +8 -0
- data/spec/app/models/login.rb +8 -0
- data/spec/app/models/manufacturer.rb +7 -0
- data/spec/app/models/meat.rb +4 -0
- data/spec/app/models/membership.rb +4 -0
- data/spec/app/models/mixed_drink.rb +4 -0
- data/spec/app/models/movie.rb +13 -0
- data/spec/app/models/my_hash.rb +2 -0
- data/spec/app/models/name.rb +23 -0
- data/spec/app/models/node.rb +5 -0
- data/spec/app/models/note.rb +12 -0
- data/spec/app/models/ordered_post.rb +6 -0
- data/spec/app/models/ordered_preference.rb +6 -0
- data/spec/app/models/oscar.rb +15 -0
- data/spec/app/models/override.rb +16 -0
- data/spec/app/models/ownable.rb +6 -0
- data/spec/app/models/owner.rb +6 -0
- data/spec/app/models/pack.rb +3 -0
- data/spec/app/models/page.rb +5 -0
- data/spec/app/models/page_question.rb +4 -0
- data/spec/app/models/palette.rb +7 -0
- data/spec/app/models/parent.rb +5 -0
- data/spec/app/models/parent_doc.rb +6 -0
- data/spec/app/models/passport.rb +5 -0
- data/spec/app/models/patient.rb +9 -0
- data/spec/app/models/pdf_writer.rb +3 -0
- data/spec/app/models/pencil.rb +1 -0
- data/spec/app/models/person.rb +205 -0
- data/spec/app/models/pet.rb +23 -0
- data/spec/app/models/pet_owner.rb +6 -0
- data/spec/app/models/phone.rb +11 -0
- data/spec/app/models/pizza.rb +7 -0
- data/spec/app/models/player.rb +35 -0
- data/spec/app/models/post.rb +44 -0
- data/spec/app/models/powerup.rb +11 -0
- data/spec/app/models/preference.rb +9 -0
- data/spec/app/models/princess.rb +8 -0
- data/spec/app/models/product.rb +15 -0
- data/spec/app/models/profile.rb +5 -0
- data/spec/app/models/pronunciation.rb +5 -0
- data/spec/app/models/purchase.rb +4 -0
- data/spec/app/models/question.rb +8 -0
- data/spec/app/models/quiz.rb +7 -0
- data/spec/app/models/rating.rb +8 -0
- data/spec/app/models/record.rb +46 -0
- data/spec/app/models/registry.rb +4 -0
- data/spec/app/models/role.rb +7 -0
- data/spec/app/models/root_category.rb +4 -0
- data/spec/app/models/sandwich.rb +4 -0
- data/spec/app/models/scheduler.rb +7 -0
- data/spec/app/models/seo.rb +7 -0
- data/spec/app/models/series.rb +4 -0
- data/spec/app/models/server.rb +13 -0
- data/spec/app/models/service.rb +22 -0
- data/spec/app/models/shape.rb +12 -0
- data/spec/app/models/shelf.rb +5 -0
- data/spec/app/models/shipping_container.rb +5 -0
- data/spec/app/models/shipping_pack.rb +3 -0
- data/spec/app/models/shop.rb +6 -0
- data/spec/app/models/short_agent.rb +4 -0
- data/spec/app/models/short_quiz.rb +5 -0
- data/spec/app/models/slave.rb +6 -0
- data/spec/app/models/song.rb +8 -0
- data/spec/app/models/sound.rb +5 -0
- data/spec/app/models/square.rb +4 -0
- data/spec/app/models/strategy.rb +3 -0
- data/spec/app/models/sub_item.rb +3 -0
- data/spec/app/models/subscription.rb +4 -0
- data/spec/app/models/survey.rb +5 -0
- data/spec/app/models/symptom.rb +6 -0
- data/spec/app/models/tag.rb +8 -0
- data/spec/app/models/target.rb +5 -0
- data/spec/app/models/template.rb +5 -0
- data/spec/app/models/thing.rb +9 -0
- data/spec/app/models/title.rb +3 -0
- data/spec/app/models/tool.rb +8 -0
- data/spec/app/models/topping.rb +5 -0
- data/spec/app/models/track.rb +38 -0
- data/spec/app/models/translation.rb +5 -0
- data/spec/app/models/tree.rb +9 -0
- data/spec/app/models/truck.rb +3 -0
- data/spec/app/models/user.rb +21 -0
- data/spec/app/models/user_account.rb +10 -0
- data/spec/app/models/validation_callback.rb +10 -0
- data/spec/app/models/vehicle.rb +11 -0
- data/spec/app/models/version.rb +5 -0
- data/spec/app/models/vet_visit.rb +5 -0
- data/spec/app/models/video.rb +13 -0
- data/spec/app/models/weapon.rb +11 -0
- data/spec/app/models/wiki_page.rb +14 -0
- data/spec/app/models/word.rb +15 -0
- data/spec/app/models/word_origin.rb +11 -0
- data/spec/app/models/writer.rb +11 -0
- data/spec/config/mongoid.yml +38 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +456 -0
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +118 -0
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +110 -0
- data/spec/mongoid/atomic/paths/root_spec.rb +48 -0
- data/spec/mongoid/atomic/paths_spec.rb +270 -0
- data/spec/mongoid/atomic_spec.rb +365 -0
- data/spec/mongoid/attributes/nested_spec.rb +4832 -0
- data/spec/mongoid/attributes/readonly_spec.rb +169 -0
- data/spec/mongoid/attributes_spec.rb +1412 -0
- data/spec/mongoid/changeable_spec.rb +1507 -0
- data/spec/mongoid/composable_spec.rb +24 -0
- data/spec/mongoid/config/environment_spec.rb +83 -0
- data/spec/mongoid/config/options_spec.rb +56 -0
- data/spec/mongoid/config_spec.rb +318 -0
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +293 -0
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +455 -0
- data/spec/mongoid/contextual/atomic_spec.rb +529 -0
- data/spec/mongoid/contextual/find_and_modify_spec.rb +220 -0
- data/spec/mongoid/contextual/geo_near_spec.rb +405 -0
- data/spec/mongoid/contextual/map_reduce_spec.rb +464 -0
- data/spec/mongoid/contextual/memory_spec.rb +1236 -0
- data/spec/mongoid/contextual/mongo_spec.rb +1843 -0
- data/spec/mongoid/contextual/text_search_spec.rb +207 -0
- data/spec/mongoid/copyable_spec.rb +393 -0
- data/spec/mongoid/criteria/findable_spec.rb +1189 -0
- data/spec/mongoid/criteria/inspectable_spec.rb +27 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +28 -0
- data/spec/mongoid/criteria/modifiable_spec.rb +1063 -0
- data/spec/mongoid/criteria/scopable_spec.rb +391 -0
- data/spec/mongoid/criteria_spec.rb +3821 -0
- data/spec/mongoid/document_spec.rb +1205 -0
- data/spec/mongoid/equality_spec.rb +241 -0
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +29 -0
- data/spec/mongoid/errors/callback_spec.rb +29 -0
- data/spec/mongoid/errors/delete_restriction_spec.rb +29 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +104 -0
- data/spec/mongoid/errors/eager_load_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_collection_spec.rb +36 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_field_option_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_field_spec.rb +37 -0
- data/spec/mongoid/errors/invalid_find_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_includes_spec.rb +40 -0
- data/spec/mongoid/errors/invalid_index_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_options_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_path_spec.rb +23 -0
- data/spec/mongoid/errors/invalid_scope_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +17 -0
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_time_spec.rb +29 -0
- data/spec/mongoid/errors/inverse_not_found_spec.rb +29 -0
- data/spec/mongoid/errors/mixed_relations_spec.rb +29 -0
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +29 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +48 -0
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +29 -0
- data/spec/mongoid/errors/no_environment_spec.rb +29 -0
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +29 -0
- data/spec/mongoid/errors/no_metadata_spec.rb +23 -0
- data/spec/mongoid/errors/no_parent_spec.rb +29 -0
- data/spec/mongoid/errors/no_session_config_spec.rb +29 -0
- data/spec/mongoid/errors/no_session_database_spec.rb +29 -0
- data/spec/mongoid/errors/no_session_hosts_spec.rb +29 -0
- data/spec/mongoid/errors/no_sessions_config_spec.rb +29 -0
- data/spec/mongoid/errors/readonly_attribute_spec.rb +29 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +29 -0
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +29 -0
- data/spec/mongoid/errors/unknown_attribute_spec.rb +29 -0
- data/spec/mongoid/errors/unsaved_document_spec.rb +37 -0
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +29 -0
- data/spec/mongoid/errors/validations_spec.rb +45 -0
- data/spec/mongoid/extensions/array_spec.rb +638 -0
- data/spec/mongoid/extensions/big_decimal_spec.rb +104 -0
- data/spec/mongoid/extensions/binary_spec.rb +60 -0
- data/spec/mongoid/extensions/boolean_spec.rb +135 -0
- data/spec/mongoid/extensions/date_spec.rb +235 -0
- data/spec/mongoid/extensions/date_time_spec.rb +155 -0
- data/spec/mongoid/extensions/false_class_spec.rb +42 -0
- data/spec/mongoid/extensions/float_spec.rb +133 -0
- data/spec/mongoid/extensions/hash_spec.rb +333 -0
- data/spec/mongoid/extensions/integer_spec.rb +136 -0
- data/spec/mongoid/extensions/module_spec.rb +42 -0
- data/spec/mongoid/extensions/nil_class_spec.rb +11 -0
- data/spec/mongoid/extensions/object_id_spec.rb +946 -0
- data/spec/mongoid/extensions/object_spec.rb +292 -0
- data/spec/mongoid/extensions/range_spec.rb +105 -0
- data/spec/mongoid/extensions/regexp_spec.rb +47 -0
- data/spec/mongoid/extensions/set_spec.rb +33 -0
- data/spec/mongoid/extensions/string_spec.rb +357 -0
- data/spec/mongoid/extensions/symbol_spec.rb +76 -0
- data/spec/mongoid/extensions/time_spec.rb +467 -0
- data/spec/mongoid/extensions/time_with_zone_spec.rb +405 -0
- data/spec/mongoid/extensions/true_class_spec.rb +42 -0
- data/spec/mongoid/extensions_spec.rb +15 -0
- data/spec/mongoid/factory_spec.rb +185 -0
- data/spec/mongoid/fields/foreign_key_spec.rb +694 -0
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +184 -0
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +201 -0
- data/spec/mongoid/fields/localized_spec.rb +386 -0
- data/spec/mongoid/fields/standard_spec.rb +166 -0
- data/spec/mongoid/fields_spec.rb +1229 -0
- data/spec/mongoid/findable_spec.rb +342 -0
- data/spec/mongoid/identity_map_spec.rb +564 -0
- data/spec/mongoid/indexable/specification_spec.rb +87 -0
- data/spec/mongoid/indexable_spec.rb +504 -0
- data/spec/mongoid/inspectable_spec.rb +49 -0
- data/spec/mongoid/interceptable_spec.rb +1564 -0
- data/spec/mongoid/loggable_spec.rb +21 -0
- data/spec/mongoid/matchable/all_spec.rb +31 -0
- data/spec/mongoid/matchable/and_spec.rb +162 -0
- data/spec/mongoid/matchable/default_spec.rb +130 -0
- data/spec/mongoid/matchable/exists_spec.rb +57 -0
- data/spec/mongoid/matchable/gt_spec.rb +75 -0
- data/spec/mongoid/matchable/gte_spec.rb +74 -0
- data/spec/mongoid/matchable/in_spec.rb +25 -0
- data/spec/mongoid/matchable/lt_spec.rb +74 -0
- data/spec/mongoid/matchable/lte_spec.rb +74 -0
- data/spec/mongoid/matchable/ne_spec.rb +25 -0
- data/spec/mongoid/matchable/nin_spec.rb +25 -0
- data/spec/mongoid/matchable/or_spec.rb +106 -0
- data/spec/mongoid/matchable/size_spec.rb +25 -0
- data/spec/mongoid/matchable_spec.rb +532 -0
- 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 +522 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
- data/spec/mongoid/persistable_spec.rb +206 -0
- data/spec/mongoid/positional_spec.rb +227 -0
- data/spec/mongoid/railties/document_spec.rb +24 -0
- data/spec/mongoid/relations/accessors_spec.rb +736 -0
- data/spec/mongoid/relations/auto_save_spec.rb +261 -0
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +171 -0
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +54 -0
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +77 -0
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +241 -0
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +153 -0
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +178 -0
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +131 -0
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +34 -0
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +132 -0
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +99 -0
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +234 -0
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +250 -0
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +241 -0
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +137 -0
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +178 -0
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +124 -0
- data/spec/mongoid/relations/builders_spec.rb +226 -0
- data/spec/mongoid/relations/cascading/delete_spec.rb +101 -0
- data/spec/mongoid/relations/cascading/destroy_spec.rb +47 -0
- data/spec/mongoid/relations/cascading/nullify_spec.rb +32 -0
- data/spec/mongoid/relations/cascading/restrict_spec.rb +68 -0
- data/spec/mongoid/relations/cascading_spec.rb +355 -0
- data/spec/mongoid/relations/constraint_spec.rb +74 -0
- data/spec/mongoid/relations/conversions_spec.rb +126 -0
- data/spec/mongoid/relations/counter_cache_spec.rb +205 -0
- data/spec/mongoid/relations/cyclic_spec.rb +156 -0
- data/spec/mongoid/relations/embedded/dirty_spec.rb +65 -0
- data/spec/mongoid/relations/embedded/in_spec.rb +579 -0
- data/spec/mongoid/relations/embedded/many_spec.rb +3781 -0
- data/spec/mongoid/relations/embedded/one_spec.rb +1014 -0
- data/spec/mongoid/relations/macros_spec.rb +613 -0
- data/spec/mongoid/relations/metadata_spec.rb +1917 -0
- data/spec/mongoid/relations/options_spec.rb +35 -0
- data/spec/mongoid/relations/polymorphic_spec.rb +128 -0
- data/spec/mongoid/relations/proxy_spec.rb +48 -0
- data/spec/mongoid/relations/referenced/in_spec.rb +1435 -0
- data/spec/mongoid/relations/referenced/many_spec.rb +3546 -0
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +3556 -0
- data/spec/mongoid/relations/referenced/one_spec.rb +1289 -0
- data/spec/mongoid/relations/reflections_spec.rb +101 -0
- data/spec/mongoid/relations/synchronization_spec.rb +449 -0
- data/spec/mongoid/relations/targets/enumerable_spec.rb +1710 -0
- data/spec/mongoid/relations/touchable_spec.rb +296 -0
- data/spec/mongoid/relations_spec.rb +188 -0
- data/spec/mongoid/reloadable_spec.rb +305 -0
- data/spec/mongoid/scopable_spec.rb +926 -0
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/serializable_spec.rb +862 -0
- data/spec/mongoid/sessions/factory_spec.rb +312 -0
- data/spec/mongoid/sessions/mongo_uri_spec.rb +103 -0
- data/spec/mongoid/sessions/options_spec.rb +71 -0
- data/spec/mongoid/sessions_spec.rb +1078 -0
- data/spec/mongoid/shardable_spec.rb +61 -0
- data/spec/mongoid/state_spec.rb +102 -0
- data/spec/mongoid/threaded_spec.rb +258 -0
- data/spec/mongoid/timestamps/created/short_spec.rb +51 -0
- data/spec/mongoid/timestamps/created_spec.rb +44 -0
- data/spec/mongoid/timestamps/updated/short_spec.rb +90 -0
- data/spec/mongoid/timestamps/updated_spec.rb +86 -0
- data/spec/mongoid/timestamps_spec.rb +112 -0
- data/spec/mongoid/traversable_spec.rb +244 -0
- data/spec/mongoid/unit_of_work_spec.rb +196 -0
- data/spec/mongoid/validatable/associated_spec.rb +183 -0
- data/spec/mongoid/validatable/format_spec.rb +83 -0
- data/spec/mongoid/validatable/length_spec.rb +119 -0
- data/spec/mongoid/validatable/numericality_spec.rb +30 -0
- data/spec/mongoid/validatable/presence_spec.rb +511 -0
- data/spec/mongoid/validatable/uniqueness_spec.rb +2305 -0
- data/spec/mongoid/validatable_spec.rb +309 -0
- data/spec/mongoid_spec.rb +74 -0
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +72 -0
- data/spec/rails/mongoid_spec.rb +462 -0
- data/spec/spec_helper.rb +103 -0
- metadata +1159 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid
|
3
|
+
|
4
|
+
# This module contains the behaviour for getting the various states a
|
5
|
+
# document can transition through.
|
6
|
+
module State
|
7
|
+
|
8
|
+
attr_writer :destroyed, :flagged_for_destroy, :new_record
|
9
|
+
|
10
|
+
# Returns true if the +Document+ has not been persisted to the database,
|
11
|
+
# false if it has. This is determined by the variable @new_record
|
12
|
+
# and NOT if the object has an id.
|
13
|
+
#
|
14
|
+
# @example Is the document new?
|
15
|
+
# person.new_record?
|
16
|
+
#
|
17
|
+
# @return [ true, false ] True if new, false if not.
|
18
|
+
def new_record?
|
19
|
+
@new_record ||= false
|
20
|
+
end
|
21
|
+
|
22
|
+
# Checks if the document has been saved to the database. Returns false
|
23
|
+
# if the document has been destroyed.
|
24
|
+
#
|
25
|
+
# @example Is the document persisted?
|
26
|
+
# person.persisted?
|
27
|
+
#
|
28
|
+
# @return [ true, false ] True if persisted, false if not.
|
29
|
+
def persisted?
|
30
|
+
!new_record? && !destroyed?
|
31
|
+
end
|
32
|
+
|
33
|
+
# Returns whether or not the document has been flagged for deletion, but
|
34
|
+
# not destroyed yet. Used for atomic pulls of child documents.
|
35
|
+
#
|
36
|
+
# @example Is the document flagged?
|
37
|
+
# document.flagged_for_destroy?
|
38
|
+
#
|
39
|
+
# @return [ true, false ] If the document is flagged.
|
40
|
+
#
|
41
|
+
# @since 2.3.2
|
42
|
+
def flagged_for_destroy?
|
43
|
+
@flagged_for_destroy ||= false
|
44
|
+
end
|
45
|
+
alias :marked_for_destruction? :flagged_for_destroy?
|
46
|
+
|
47
|
+
# Returns true if the +Document+ has been succesfully destroyed, and false
|
48
|
+
# if it hasn't. This is determined by the variable @destroyed and NOT
|
49
|
+
# by checking the database.
|
50
|
+
#
|
51
|
+
# @example Is the document destroyed?
|
52
|
+
# person.destroyed?
|
53
|
+
#
|
54
|
+
# @return [ true, false ] True if destroyed, false if not.
|
55
|
+
def destroyed?
|
56
|
+
@destroyed ||= false
|
57
|
+
end
|
58
|
+
alias :deleted? :destroyed?
|
59
|
+
|
60
|
+
# Determine if the document can be pushed.
|
61
|
+
#
|
62
|
+
# @example Is this pushable?
|
63
|
+
# person.pushable?
|
64
|
+
#
|
65
|
+
# @return [ true, false ] Is the document new and embedded?
|
66
|
+
def pushable?
|
67
|
+
new_record? &&
|
68
|
+
embedded_many? &&
|
69
|
+
_parent.persisted? &&
|
70
|
+
!_parent.delayed_atomic_sets[atomic_path]
|
71
|
+
end
|
72
|
+
|
73
|
+
# Determine if the document can be set.
|
74
|
+
#
|
75
|
+
# @example Is this settable?
|
76
|
+
# person.settable?
|
77
|
+
#
|
78
|
+
# @return [ true, false ] Is this document a new embeds one?
|
79
|
+
#
|
80
|
+
# @since 2.1.0
|
81
|
+
def settable?
|
82
|
+
new_record? && embedded_one? && _parent.persisted?
|
83
|
+
end
|
84
|
+
|
85
|
+
# Is the document updateable?
|
86
|
+
#
|
87
|
+
# @example Is the document updateable?
|
88
|
+
# person.updateable?
|
89
|
+
#
|
90
|
+
# @return [ true, false ] If the document is changed and persisted.
|
91
|
+
#
|
92
|
+
# @since 2.1.0
|
93
|
+
def updateable?
|
94
|
+
persisted? && changed?
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,383 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "mongoid/threaded/lifecycle"
|
3
|
+
|
4
|
+
module Mongoid
|
5
|
+
|
6
|
+
# This module contains logic for easy access to objects that have a lifecycle
|
7
|
+
# on the current thread.
|
8
|
+
module Threaded
|
9
|
+
extend self
|
10
|
+
|
11
|
+
# Begin entry into a named thread local stack.
|
12
|
+
#
|
13
|
+
# @example Begin entry into the stack.
|
14
|
+
# Threaded.begin_execution(:create)
|
15
|
+
#
|
16
|
+
# @param [ String ] name The name of the stack
|
17
|
+
#
|
18
|
+
# @return [ true ] True.
|
19
|
+
#
|
20
|
+
# @since 2.4.0
|
21
|
+
def begin_execution(name)
|
22
|
+
stack(name).push(true)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Get the global database override.
|
26
|
+
#
|
27
|
+
# @example Get the global database override.
|
28
|
+
# Threaded.database_override
|
29
|
+
#
|
30
|
+
# @return [ String, Symbol ] The override.
|
31
|
+
#
|
32
|
+
# @since 3.0.0
|
33
|
+
def database_override
|
34
|
+
Thread.current["[mongoid]:db-override"]
|
35
|
+
end
|
36
|
+
|
37
|
+
# Set the global database override.
|
38
|
+
#
|
39
|
+
# @example Set the global database override.
|
40
|
+
# Threaded.database_override = :testing
|
41
|
+
#
|
42
|
+
# @param [ String, Symbol ] The global override name.
|
43
|
+
#
|
44
|
+
# @return [ String, Symbol ] The override.
|
45
|
+
#
|
46
|
+
# @since 3.0.0
|
47
|
+
def database_override=(name)
|
48
|
+
Thread.current["[mongoid]:db-override"] = name
|
49
|
+
end
|
50
|
+
|
51
|
+
# Get the database sessions from the current thread.
|
52
|
+
#
|
53
|
+
# @example Get the database sessions.
|
54
|
+
# Threaded.sessions
|
55
|
+
#
|
56
|
+
# @return [ Hash ] The sessions.
|
57
|
+
#
|
58
|
+
# @since 3.0.0
|
59
|
+
def sessions
|
60
|
+
Thread.current["[mongoid]:sessions"] ||= {}
|
61
|
+
end
|
62
|
+
|
63
|
+
# Are in the middle of executing the named stack
|
64
|
+
#
|
65
|
+
# @example Are we in the stack execution?
|
66
|
+
# Threaded.executing?(:create)
|
67
|
+
#
|
68
|
+
# @param [ Symbol ] name The name of the stack
|
69
|
+
#
|
70
|
+
# @return [ true ] If the stack is being executed.
|
71
|
+
#
|
72
|
+
# @since 2.4.0
|
73
|
+
def executing?(name)
|
74
|
+
!stack(name).empty?
|
75
|
+
end
|
76
|
+
|
77
|
+
# Exit from a named thread local stack.
|
78
|
+
#
|
79
|
+
# @example Exit from the stack.
|
80
|
+
# Threaded.exit_execution(:create)
|
81
|
+
#
|
82
|
+
# @param [ Symbol ] name The name of the stack
|
83
|
+
#
|
84
|
+
# @return [ true ] True.
|
85
|
+
#
|
86
|
+
# @since 2.4.0
|
87
|
+
def exit_execution(name)
|
88
|
+
stack(name).pop
|
89
|
+
end
|
90
|
+
|
91
|
+
# Get the named stack.
|
92
|
+
#
|
93
|
+
# @example Get a stack by name
|
94
|
+
# Threaded.stack(:create)
|
95
|
+
#
|
96
|
+
# @param [ Symbol ] name The name of the stack
|
97
|
+
#
|
98
|
+
# @return [ Array ] The stack.
|
99
|
+
#
|
100
|
+
# @since 2.4.0
|
101
|
+
def stack(name)
|
102
|
+
Thread.current["[mongoid]:#{name}-stack"] ||= []
|
103
|
+
end
|
104
|
+
|
105
|
+
# Begin autosaving a document on the current thread.
|
106
|
+
#
|
107
|
+
# @example Begin autosave.
|
108
|
+
# Threaded.begin_autosave(doc)
|
109
|
+
#
|
110
|
+
# @param [ Document ] document The document to autosave.
|
111
|
+
#
|
112
|
+
# @since 3.0.0
|
113
|
+
def begin_autosave(document)
|
114
|
+
autosaves_for(document.class).push(document.id)
|
115
|
+
end
|
116
|
+
|
117
|
+
# Begin validating a document on the current thread.
|
118
|
+
#
|
119
|
+
# @example Begin validation.
|
120
|
+
# Threaded.begin_validate(doc)
|
121
|
+
#
|
122
|
+
# @param [ Document ] document The document to validate.
|
123
|
+
#
|
124
|
+
# @since 2.1.9
|
125
|
+
def begin_validate(document)
|
126
|
+
validations_for(document.class).push(document.id)
|
127
|
+
end
|
128
|
+
|
129
|
+
# Exit autosaving a document on the current thread.
|
130
|
+
#
|
131
|
+
# @example Exit autosave.
|
132
|
+
# Threaded.exit_autosave(doc)
|
133
|
+
#
|
134
|
+
# @param [ Document ] document The document to autosave.
|
135
|
+
#
|
136
|
+
# @since 3.0.0
|
137
|
+
def exit_autosave(document)
|
138
|
+
autosaves_for(document.class).delete_one(document.id)
|
139
|
+
end
|
140
|
+
|
141
|
+
# Exit validating a document on the current thread.
|
142
|
+
#
|
143
|
+
# @example Exit validation.
|
144
|
+
# Threaded.exit_validate(doc)
|
145
|
+
#
|
146
|
+
# @param [ Document ] document The document to validate.
|
147
|
+
#
|
148
|
+
# @since 2.1.9
|
149
|
+
def exit_validate(document)
|
150
|
+
validations_for(document.class).delete_one(document.id)
|
151
|
+
end
|
152
|
+
|
153
|
+
# Get the identity map off the current thread.
|
154
|
+
#
|
155
|
+
# @example Get the identity map.
|
156
|
+
# Threaded.identity_map
|
157
|
+
#
|
158
|
+
# @return [ IdentityMap ] The identity map.
|
159
|
+
#
|
160
|
+
# @since 2.1.0
|
161
|
+
def identity_map
|
162
|
+
Thread.current["[mongoid]:identity-map"] ||= IdentityMap.new
|
163
|
+
end
|
164
|
+
|
165
|
+
# Is the identity map enabled on the current thread?
|
166
|
+
#
|
167
|
+
# @example Is the identity map enabled?
|
168
|
+
# Threaded.identity_map_enabled?
|
169
|
+
#
|
170
|
+
# @return [ true, false ] If the identity map is enabled.
|
171
|
+
#
|
172
|
+
# @since 3.0.0
|
173
|
+
def identity_map_enabled?
|
174
|
+
Thread.current["[mongoid]:identity-map-enabled"] != false
|
175
|
+
end
|
176
|
+
|
177
|
+
# Disable the identity map on either the current thread or all threads.
|
178
|
+
#
|
179
|
+
# @example Disable the identity map on all threads.
|
180
|
+
# Threaded.disable_identity_map(:all)
|
181
|
+
#
|
182
|
+
# @example Disable the identity map on the current thread.
|
183
|
+
# Threaded.disable_identity_map(:current)
|
184
|
+
#
|
185
|
+
# @param [ Symbol ] option The disabling option.
|
186
|
+
#
|
187
|
+
# @since 3.0.0
|
188
|
+
def disable_identity_map(option)
|
189
|
+
if option == :all
|
190
|
+
Thread.list.each do |thread|
|
191
|
+
thread["[mongoid]:identity-map-enabled"] = false
|
192
|
+
end
|
193
|
+
else
|
194
|
+
Thread.current["[mongoid]:identity-map-enabled"] = false
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
# Enable the identity map on either the current thread or all threads.
|
199
|
+
#
|
200
|
+
# @example Enable the identity map on all threads.
|
201
|
+
# Threaded.enable_identity_map(:all)
|
202
|
+
#
|
203
|
+
# @example Enable the identity map on the current thread.
|
204
|
+
# Threaded.enable_identity_map(:current)
|
205
|
+
#
|
206
|
+
# @param [ Symbol ] option The disabling option.
|
207
|
+
#
|
208
|
+
# @since 3.0.0
|
209
|
+
def enable_identity_map(option)
|
210
|
+
if option == :all
|
211
|
+
Thread.list.each do |thread|
|
212
|
+
thread["[mongoid]:identity-map-enabled"] = true
|
213
|
+
end
|
214
|
+
else
|
215
|
+
Thread.current["[mongoid]:identity-map-enabled"] = true
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
# Get the field selection options from the current thread.
|
220
|
+
#
|
221
|
+
# @example Get the field selection options.
|
222
|
+
# Threaded.selection
|
223
|
+
#
|
224
|
+
# @param [ Integer ] criteria_instance_id The criteria instance id.
|
225
|
+
#
|
226
|
+
# @return [ Hash ] The field selection.
|
227
|
+
#
|
228
|
+
# @since 2.4.4
|
229
|
+
def selection(criteria_instance_id)
|
230
|
+
selections = Thread.current["[mongoid][selections]"]
|
231
|
+
selections[criteria_instance_id] if selections
|
232
|
+
end
|
233
|
+
|
234
|
+
# Set the field selection on the current thread.
|
235
|
+
#
|
236
|
+
# @example Set the field selection.
|
237
|
+
# Threaded.set_selection(Person, { field: 1 })
|
238
|
+
#
|
239
|
+
# @param [ Integer ] criteria_instance_id The criteria instance id.
|
240
|
+
# @param [ Hash ] value The current field selection.
|
241
|
+
#
|
242
|
+
# @return [ Hash ] The field selection.
|
243
|
+
#
|
244
|
+
# @since 2.4.4
|
245
|
+
def set_selection(criteria_instance_id, value)
|
246
|
+
Thread.current["[mongoid][selections]"] ||= {}
|
247
|
+
Thread.current["[mongoid][selections]"][criteria_instance_id] = value
|
248
|
+
end
|
249
|
+
|
250
|
+
# Delete the field selection on the current thread.
|
251
|
+
#
|
252
|
+
# @example Delete the field selection.
|
253
|
+
# Threaded.delete_selection(Person)
|
254
|
+
#
|
255
|
+
# @param [ Integer ] criteria_instance_id The criteria instance id.
|
256
|
+
#
|
257
|
+
# @return [ Boolean ] Whether there was a field selection.
|
258
|
+
#
|
259
|
+
# @since 3.0.7
|
260
|
+
def delete_selection(criteria_instance_id)
|
261
|
+
selections = Thread.current["[mongoid][selections]"]
|
262
|
+
return false unless selections
|
263
|
+
!!selections.delete(criteria_instance_id)
|
264
|
+
end
|
265
|
+
|
266
|
+
# Get the global session override.
|
267
|
+
#
|
268
|
+
# @example Get the global session override.
|
269
|
+
# Threaded.session_override
|
270
|
+
#
|
271
|
+
# @return [ String, Symbol ] The override.
|
272
|
+
#
|
273
|
+
# @since 3.0.0
|
274
|
+
def session_override
|
275
|
+
Thread.current["[mongoid]:session-override"]
|
276
|
+
end
|
277
|
+
|
278
|
+
# Set the global session override.
|
279
|
+
#
|
280
|
+
# @example Set the global session override.
|
281
|
+
# Threaded.session_override = :testing
|
282
|
+
#
|
283
|
+
# @param [ String, Symbol ] The global override name.
|
284
|
+
#
|
285
|
+
# @return [ String, Symbol ] The override.
|
286
|
+
#
|
287
|
+
# @since 3.0.0
|
288
|
+
def session_override=(name)
|
289
|
+
Thread.current["[mongoid]:session-override"] = name
|
290
|
+
end
|
291
|
+
|
292
|
+
# Get the mongoid scope stack for chained criteria.
|
293
|
+
#
|
294
|
+
# @example Get the scope stack.
|
295
|
+
# Threaded.scope_stack
|
296
|
+
#
|
297
|
+
# @return [ Hash ] The scope stack.
|
298
|
+
#
|
299
|
+
# @since 2.1.0
|
300
|
+
def scope_stack
|
301
|
+
Thread.current["[mongoid]:scope-stack"] ||= {}
|
302
|
+
end
|
303
|
+
|
304
|
+
# Is the document autosaved on the current thread?
|
305
|
+
#
|
306
|
+
# @example Is the document autosaved?
|
307
|
+
# Threaded.autosaved?(doc)
|
308
|
+
#
|
309
|
+
# @param [ Document ] document The document to check.
|
310
|
+
#
|
311
|
+
# @return [ true, false ] If the document is autosaved.
|
312
|
+
#
|
313
|
+
# @since 2.1.9
|
314
|
+
def autosaved?(document)
|
315
|
+
autosaves_for(document.class).include?(document.id)
|
316
|
+
end
|
317
|
+
|
318
|
+
# Is the document validated on the current thread?
|
319
|
+
#
|
320
|
+
# @example Is the document validated?
|
321
|
+
# Threaded.validated?(doc)
|
322
|
+
#
|
323
|
+
# @param [ Document ] document The document to check.
|
324
|
+
#
|
325
|
+
# @return [ true, false ] If the document is validated.
|
326
|
+
#
|
327
|
+
# @since 2.1.9
|
328
|
+
def validated?(document)
|
329
|
+
validations_for(document.class).include?(document.id)
|
330
|
+
end
|
331
|
+
|
332
|
+
# Get all autosaves on the current thread.
|
333
|
+
#
|
334
|
+
# @example Get all autosaves.
|
335
|
+
# Threaded.autosaves
|
336
|
+
#
|
337
|
+
# @return [ Hash ] The current autosaves.
|
338
|
+
#
|
339
|
+
# @since 3.0.0
|
340
|
+
def autosaves
|
341
|
+
Thread.current["[mongoid]:autosaves"] ||= {}
|
342
|
+
end
|
343
|
+
|
344
|
+
# Get all validations on the current thread.
|
345
|
+
#
|
346
|
+
# @example Get all validations.
|
347
|
+
# Threaded.validations
|
348
|
+
#
|
349
|
+
# @return [ Hash ] The current validations.
|
350
|
+
#
|
351
|
+
# @since 2.1.9
|
352
|
+
def validations
|
353
|
+
Thread.current["[mongoid]:validations"] ||= {}
|
354
|
+
end
|
355
|
+
|
356
|
+
# Get all autosaves on the current thread for the class.
|
357
|
+
#
|
358
|
+
# @example Get all autosaves.
|
359
|
+
# Threaded.autosaves_for(Person)
|
360
|
+
#
|
361
|
+
# @param [ Class ] The class to check.
|
362
|
+
#
|
363
|
+
# @return [ Array ] The current autosaves.
|
364
|
+
#
|
365
|
+
# @since 3.0.0
|
366
|
+
def autosaves_for(klass)
|
367
|
+
autosaves[klass] ||= []
|
368
|
+
end
|
369
|
+
# Get all validations on the current thread for the class.
|
370
|
+
#
|
371
|
+
# @example Get all validations.
|
372
|
+
# Threaded.validations_for(Person)
|
373
|
+
#
|
374
|
+
# @param [ Class ] The class to check.
|
375
|
+
#
|
376
|
+
# @return [ Array ] The current validations.
|
377
|
+
#
|
378
|
+
# @since 2.1.9
|
379
|
+
def validations_for(klass)
|
380
|
+
validations[klass] ||= []
|
381
|
+
end
|
382
|
+
end
|
383
|
+
end
|