mongoid 7.1.5 → 7.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +9 -2
- data/Rakefile +33 -7
- data/lib/config/locales/en.yml +37 -1
- data/lib/mongoid.rb +23 -0
- data/lib/mongoid/association/depending.rb +1 -6
- data/lib/mongoid/association/many.rb +3 -3
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +36 -1
- data/lib/mongoid/association/referenced/has_many/proxy.rb +8 -1
- data/lib/mongoid/association/referenced/has_one/buildable.rb +9 -1
- data/lib/mongoid/association/referenced/has_one/proxy.rb +6 -1
- data/lib/mongoid/atomic/modifiers.rb +1 -1
- data/lib/mongoid/attributes/dynamic.rb +1 -1
- data/lib/mongoid/clients/factory.rb +17 -0
- data/lib/mongoid/composable.rb +1 -0
- data/lib/mongoid/config.rb +3 -0
- data/lib/mongoid/contextual/mongo.rb +23 -4
- data/lib/mongoid/copyable.rb +7 -3
- data/lib/mongoid/criteria.rb +57 -7
- data/lib/mongoid/criteria/queryable/key.rb +1 -1
- data/lib/mongoid/criteria/queryable/mergeable.rb +2 -2
- data/lib/mongoid/criteria/queryable/selectable.rb +21 -6
- data/lib/mongoid/criteria/queryable/selector.rb +3 -7
- data/lib/mongoid/criteria/queryable/storable.rb +3 -3
- data/lib/mongoid/document.rb +18 -5
- data/lib/mongoid/errors.rb +7 -0
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +25 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +33 -0
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +26 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +28 -0
- data/lib/mongoid/errors/invalid_field_operator.rb +33 -0
- data/lib/mongoid/errors/invalid_query.rb +41 -0
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +27 -10
- data/lib/mongoid/fields.rb +3 -0
- data/lib/mongoid/fields/validators/macro.rb +22 -9
- data/lib/mongoid/findable.rb +50 -14
- data/lib/mongoid/indexable.rb +2 -2
- data/lib/mongoid/interceptable.rb +3 -1
- data/lib/mongoid/matchable.rb +1 -149
- data/lib/mongoid/matcher.rb +127 -0
- data/lib/mongoid/matcher/all.rb +22 -0
- data/lib/mongoid/matcher/and.rb +21 -0
- data/lib/mongoid/matcher/elem_match.rb +35 -0
- data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
- data/lib/mongoid/matcher/eq.rb +11 -0
- data/lib/mongoid/matcher/eq_impl.rb +32 -0
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +21 -0
- data/lib/mongoid/matcher/exists.rb +15 -0
- data/lib/mongoid/matcher/expression.rb +40 -0
- data/lib/mongoid/matcher/expression_operator.rb +19 -0
- data/lib/mongoid/matcher/field_expression.rb +63 -0
- data/lib/mongoid/matcher/field_operator.rb +48 -0
- data/lib/mongoid/matcher/gt.rb +17 -0
- data/lib/mongoid/matcher/gte.rb +17 -0
- data/lib/mongoid/matcher/in.rb +25 -0
- data/lib/mongoid/matcher/lt.rb +17 -0
- data/lib/mongoid/matcher/lte.rb +17 -0
- data/lib/mongoid/matcher/ne.rb +16 -0
- data/lib/mongoid/matcher/nin.rb +11 -0
- data/lib/mongoid/matcher/nor.rb +25 -0
- data/lib/mongoid/matcher/not.rb +29 -0
- data/lib/mongoid/matcher/or.rb +21 -0
- data/lib/mongoid/matcher/regex.rb +41 -0
- data/lib/mongoid/matcher/size.rb +26 -0
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/query_cache.rb +64 -62
- data/lib/mongoid/reloadable.rb +2 -2
- data/lib/mongoid/serializable.rb +1 -1
- data/lib/mongoid/stringified_symbol.rb +53 -0
- data/lib/mongoid/traversable.rb +111 -4
- data/lib/mongoid/version.rb +1 -1
- data/spec/README.md +19 -4
- data/spec/integration/app_spec.rb +46 -13
- data/spec/integration/associations/embedded_spec.rb +94 -0
- data/spec/integration/associations/embeds_many_spec.rb +24 -0
- data/spec/integration/associations/embeds_one_spec.rb +24 -0
- data/spec/integration/associations/has_many_spec.rb +108 -13
- data/spec/integration/associations/has_one_spec.rb +108 -13
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
- data/spec/integration/atomic/modifiers_spec.rb +117 -0
- data/spec/integration/callbacks_models.rb +49 -0
- data/spec/integration/callbacks_spec.rb +216 -0
- data/spec/integration/discriminator_key_spec.rb +354 -0
- data/spec/integration/discriminator_value_spec.rb +207 -0
- data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -41
- data/spec/integration/matcher_operator_data/all.yml +140 -0
- data/spec/integration/matcher_operator_data/and.yml +93 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +363 -0
- data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
- data/spec/integration/matcher_operator_data/eq.yml +191 -0
- data/spec/integration/matcher_operator_data/exists.yml +213 -0
- data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
- data/spec/integration/matcher_operator_data/gt.yml +132 -0
- data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
- data/spec/integration/matcher_operator_data/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +16 -0
- data/spec/integration/matcher_operator_data/in.yml +194 -0
- data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
- data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
- data/spec/integration/matcher_operator_data/lt.yml +132 -0
- data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
- data/spec/integration/matcher_operator_data/lte.yml +132 -0
- data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/multiple.yml +29 -0
- data/spec/integration/matcher_operator_data/ne.yml +150 -0
- data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
- data/spec/integration/matcher_operator_data/nin.yml +114 -0
- data/spec/integration/matcher_operator_data/nor.yml +126 -0
- data/spec/integration/matcher_operator_data/not.yml +196 -0
- data/spec/integration/matcher_operator_data/or.yml +137 -0
- data/spec/integration/matcher_operator_data/regex.yml +174 -0
- data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
- data/spec/integration/matcher_operator_data/size.yml +174 -0
- data/spec/integration/matcher_operator_spec.rb +100 -0
- data/spec/integration/matcher_spec.rb +189 -0
- data/spec/integration/server_query_spec.rb +142 -0
- data/spec/integration/stringified_symbol_field_spec.rb +190 -0
- data/spec/lite_spec_helper.rb +4 -3
- data/spec/mongoid/association/depending_spec.rb +78 -26
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +50 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +33 -0
- data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +1 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +460 -186
- data/spec/mongoid/association/referenced/has_many_models.rb +21 -0
- data/spec/mongoid/association/referenced/has_one_models.rb +21 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +47 -0
- data/spec/mongoid/atomic/paths_spec.rb +41 -0
- data/spec/mongoid/atomic_spec.rb +23 -0
- data/spec/mongoid/attributes/nested_spec.rb +1 -1
- data/spec/mongoid/clients/factory_spec.rb +37 -0
- data/spec/mongoid/clients/sessions_spec.rb +1 -6
- data/spec/mongoid/config_spec.rb +28 -0
- data/spec/mongoid/contextual/mongo_spec.rb +70 -16
- data/spec/mongoid/copyable_spec.rb +197 -18
- data/spec/mongoid/copyable_spec_models.rb +28 -0
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +36 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +84 -82
- data/spec/mongoid/criteria_spec.rb +204 -39
- data/spec/mongoid/document_spec.rb +89 -15
- data/spec/mongoid/equality_spec.rb +0 -1
- data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +85 -0
- data/spec/mongoid/factory_spec.rb +261 -28
- data/spec/mongoid/fields_spec.rb +48 -2
- data/spec/mongoid/findable_spec.rb +32 -0
- data/spec/mongoid/indexable_spec.rb +28 -2
- data/spec/mongoid/inspectable_spec.rb +29 -2
- data/spec/mongoid/interceptable_spec.rb +2 -2
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +259 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +47 -0
- data/spec/mongoid/persistable/creatable_spec.rb +108 -25
- data/spec/mongoid/persistable/deletable_spec.rb +86 -0
- data/spec/mongoid/persistable/savable_spec.rb +174 -16
- data/spec/mongoid/query_cache_middleware_spec.rb +16 -3
- data/spec/mongoid/query_cache_spec.rb +442 -41
- data/spec/mongoid/reloadable_spec.rb +72 -0
- data/spec/mongoid/serializable_spec.rb +21 -3
- data/spec/mongoid/traversable_spec.rb +1100 -0
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +211 -0
- data/spec/shared/lib/mrss/constraints.rb +330 -0
- data/spec/shared/lib/mrss/docker_runner.rb +262 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +175 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +69 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +149 -0
- data/spec/shared/share/Dockerfile.erb +229 -0
- data/spec/shared/shlib/distro.sh +73 -0
- data/spec/shared/shlib/server.sh +270 -0
- data/spec/shared/shlib/set_env.sh +128 -0
- data/spec/spec_helper.rb +4 -2
- data/spec/support/constraints.rb +20 -222
- data/spec/support/helpers.rb +1 -1
- data/spec/{app → support}/models/account.rb +0 -0
- data/spec/{app → support}/models/acolyte.rb +0 -0
- data/spec/{app → support}/models/actor.rb +1 -1
- data/spec/{app → support}/models/actress.rb +0 -0
- data/spec/{app → support}/models/address.rb +0 -0
- data/spec/{app → support}/models/address_component.rb +0 -0
- data/spec/{app → support}/models/address_number.rb +0 -0
- data/spec/{app → support}/models/agency.rb +0 -0
- data/spec/{app → support}/models/agent.rb +0 -0
- data/spec/{app → support}/models/album.rb +0 -0
- data/spec/{app → support}/models/alert.rb +0 -0
- data/spec/{app → support}/models/animal.rb +0 -0
- data/spec/{app → support}/models/answer.rb +0 -0
- data/spec/{app → support}/models/appointment.rb +0 -0
- data/spec/support/models/armrest.rb +10 -0
- data/spec/{app → support}/models/array_field.rb +0 -0
- data/spec/{app → support}/models/article.rb +0 -0
- data/spec/{app → support}/models/artist.rb +0 -0
- data/spec/{app → support}/models/artwork.rb +0 -0
- data/spec/{app → support}/models/audio.rb +0 -0
- data/spec/{app → support}/models/augmentation.rb +0 -0
- data/spec/{app → support}/models/author.rb +0 -0
- data/spec/{app → support}/models/baby.rb +0 -0
- data/spec/{app → support}/models/band.rb +0 -0
- data/spec/{app → support}/models/bar.rb +0 -0
- data/spec/{app → support}/models/basic.rb +0 -0
- data/spec/{app → support}/models/bed.rb +0 -0
- data/spec/{app → support}/models/big_palette.rb +0 -0
- data/spec/{app → support}/models/birthday.rb +0 -0
- data/spec/{app → support}/models/bomb.rb +0 -0
- data/spec/{app → support}/models/book.rb +0 -0
- data/spec/{app → support}/models/breed.rb +0 -0
- data/spec/{app → support}/models/browser.rb +1 -1
- data/spec/{app → support}/models/building.rb +0 -0
- data/spec/{app → support}/models/building_address.rb +0 -0
- data/spec/{app → support}/models/bus.rb +0 -0
- data/spec/{app → support}/models/business.rb +0 -0
- data/spec/{app → support}/models/callback_test.rb +0 -0
- data/spec/{app → support}/models/canvas.rb +1 -1
- data/spec/{app → support}/models/car.rb +0 -0
- data/spec/{app → support}/models/cat.rb +0 -0
- data/spec/{app → support}/models/category.rb +0 -0
- data/spec/{app → support}/models/child.rb +0 -0
- data/spec/{app → support}/models/child_doc.rb +0 -0
- data/spec/{app → support}/models/church.rb +0 -0
- data/spec/{app → support}/models/circle.rb +0 -0
- data/spec/{app → support}/models/circuit.rb +0 -0
- data/spec/{app → support}/models/circus.rb +0 -0
- data/spec/{app → support}/models/code.rb +0 -0
- data/spec/{app → support}/models/coding.rb +1 -1
- data/spec/{app → support}/models/coding/pull_request.rb +0 -0
- data/spec/{app → support}/models/comment.rb +0 -0
- data/spec/{app → support}/models/company.rb +0 -0
- data/spec/{app → support}/models/consumption_period.rb +0 -0
- data/spec/{app → support}/models/contextable_item.rb +0 -0
- data/spec/{app → support}/models/contractor.rb +0 -0
- data/spec/{app → support}/models/cookie.rb +0 -0
- data/spec/{app → support}/models/country_code.rb +0 -0
- data/spec/{app → support}/models/courier_job.rb +0 -0
- data/spec/support/models/crate.rb +13 -0
- data/spec/support/models/customer.rb +11 -0
- data/spec/support/models/customer_address.rb +12 -0
- data/spec/support/models/deed.rb +8 -0
- data/spec/{app → support}/models/definition.rb +0 -0
- data/spec/{app → support}/models/delegating_patient.rb +0 -0
- data/spec/{app → support}/models/description.rb +0 -0
- data/spec/{app → support}/models/dictionary.rb +6 -0
- data/spec/{app → support}/models/division.rb +0 -0
- data/spec/{app → support}/models/doctor.rb +0 -0
- data/spec/{app → support}/models/dog.rb +0 -0
- data/spec/{app → support}/models/dokument.rb +0 -0
- data/spec/{app → support}/models/draft.rb +0 -0
- data/spec/{app → support}/models/dragon.rb +0 -0
- data/spec/{app → support}/models/driver.rb +1 -1
- data/spec/{app → support}/models/drug.rb +0 -0
- data/spec/{app → support}/models/dungeon.rb +0 -0
- data/spec/{app → support}/models/edit.rb +0 -0
- data/spec/{app → support}/models/email.rb +0 -0
- data/spec/{app → support}/models/employer.rb +0 -0
- data/spec/{app → support}/models/entry.rb +0 -0
- data/spec/{app → support}/models/eraser.rb +0 -0
- data/spec/{app → support}/models/even.rb +0 -0
- data/spec/{app → support}/models/event.rb +0 -0
- data/spec/{app → support}/models/exhibition.rb +0 -0
- data/spec/{app → support}/models/exhibitor.rb +0 -0
- data/spec/{app → support}/models/explosion.rb +0 -0
- data/spec/{app → support}/models/eye.rb +0 -0
- data/spec/{app → support}/models/eye_bowl.rb +0 -0
- data/spec/{app → support}/models/face.rb +0 -0
- data/spec/{app → support}/models/favorite.rb +0 -0
- data/spec/{app → support}/models/filesystem.rb +0 -0
- data/spec/{app → support}/models/fire_hydrant.rb +0 -0
- data/spec/{app → support}/models/firefox.rb +0 -0
- data/spec/{app → support}/models/fish.rb +0 -0
- data/spec/{app → support}/models/folder.rb +0 -0
- data/spec/{app → support}/models/folder_item.rb +0 -0
- data/spec/{app → support}/models/fruits.rb +0 -0
- data/spec/{app → support}/models/game.rb +0 -0
- data/spec/{app → support}/models/ghost.rb +0 -0
- data/spec/support/models/guitar.rb +5 -0
- data/spec/{app → support}/models/home.rb +0 -0
- data/spec/{app → support}/models/house.rb +0 -0
- data/spec/{app → support}/models/html_writer.rb +0 -0
- data/spec/{app → support}/models/id_key.rb +0 -0
- data/spec/support/models/idnodef.rb +8 -0
- data/spec/{app → support}/models/image.rb +0 -0
- data/spec/{app → support}/models/implant.rb +0 -0
- data/spec/support/models/instrument.rb +9 -0
- data/spec/{app → support}/models/item.rb +1 -1
- data/spec/{app → support}/models/jar.rb +0 -0
- data/spec/{app → support}/models/kaleidoscope.rb +0 -0
- data/spec/{app → support}/models/kangaroo.rb +0 -0
- data/spec/{app → support}/models/label.rb +0 -0
- data/spec/{app → support}/models/language.rb +0 -0
- data/spec/{app → support}/models/lat_lng.rb +0 -0
- data/spec/{app → support}/models/league.rb +0 -0
- data/spec/{app → support}/models/learner.rb +0 -0
- data/spec/{app → support}/models/line_item.rb +0 -0
- data/spec/{app → support}/models/location.rb +0 -0
- data/spec/{app → support}/models/login.rb +0 -0
- data/spec/{app → support}/models/manufacturer.rb +0 -0
- data/spec/{app → support}/models/meat.rb +0 -0
- data/spec/{app → support}/models/membership.rb +0 -0
- data/spec/{app → support}/models/message.rb +0 -0
- data/spec/{app → support}/models/minim.rb +0 -0
- data/spec/{app → support}/models/mixed_drink.rb +0 -0
- data/spec/support/models/mop.rb +16 -0
- data/spec/{app → support}/models/movie.rb +0 -0
- data/spec/{app → support}/models/my_hash.rb +0 -0
- data/spec/{app → support}/models/name.rb +0 -0
- data/spec/{app → support}/models/name_only.rb +0 -0
- data/spec/{app → support}/models/node.rb +0 -0
- data/spec/{app → support}/models/note.rb +0 -0
- data/spec/{app → support}/models/odd.rb +0 -0
- data/spec/support/models/order.rb +11 -0
- data/spec/{app → support}/models/ordered_post.rb +0 -0
- data/spec/{app → support}/models/ordered_preference.rb +0 -0
- data/spec/{app → support}/models/oscar.rb +0 -0
- data/spec/{app → support}/models/other_owner_object.rb +0 -0
- data/spec/{app → support}/models/override.rb +0 -0
- data/spec/{app → support}/models/ownable.rb +0 -0
- data/spec/{app → support}/models/owner.rb +2 -0
- data/spec/{app → support}/models/pack.rb +0 -0
- data/spec/{app → support}/models/page.rb +0 -0
- data/spec/{app → support}/models/page_question.rb +0 -0
- data/spec/{app → support}/models/palette.rb +1 -1
- data/spec/{app → support}/models/parent.rb +0 -0
- data/spec/{app → support}/models/parent_doc.rb +0 -0
- data/spec/{app → support}/models/passport.rb +0 -0
- data/spec/{app → support}/models/patient.rb +0 -0
- data/spec/{app → support}/models/pdf_writer.rb +0 -0
- data/spec/{app → support}/models/pencil.rb +0 -0
- data/spec/{app → support}/models/person.rb +3 -1
- data/spec/{app → support}/models/pet.rb +0 -0
- data/spec/{app → support}/models/pet_owner.rb +0 -0
- data/spec/{app → support}/models/phone.rb +0 -0
- data/spec/support/models/piano.rb +5 -0
- data/spec/{app → support}/models/pizza.rb +0 -0
- data/spec/{app → support}/models/player.rb +0 -0
- data/spec/{app → support}/models/post.rb +0 -0
- data/spec/{app → support}/models/post_genre.rb +0 -0
- data/spec/{app → support}/models/powerup.rb +0 -0
- data/spec/{app → support}/models/preference.rb +0 -0
- data/spec/{app → support}/models/princess.rb +0 -0
- data/spec/{app → support}/models/product.rb +0 -0
- data/spec/support/models/profile.rb +18 -0
- data/spec/{app → support}/models/pronunciation.rb +0 -0
- data/spec/{app → support}/models/pub.rb +0 -0
- data/spec/support/models/publication.rb +5 -0
- data/spec/{app → support}/models/publication/encyclopedia.rb +0 -0
- data/spec/{app → support}/models/publication/review.rb +0 -0
- data/spec/{app → support}/models/purchase.rb +0 -0
- data/spec/{app → support}/models/question.rb +0 -0
- data/spec/{app → support}/models/quiz.rb +0 -0
- data/spec/{app → support}/models/rating.rb +0 -0
- data/spec/{app → support}/models/record.rb +0 -0
- data/spec/{app → support}/models/registry.rb +0 -0
- data/spec/{app → support}/models/role.rb +0 -0
- data/spec/{app → support}/models/root_category.rb +0 -0
- data/spec/{app → support}/models/sandwich.rb +0 -0
- data/spec/{app → support}/models/scheduler.rb +0 -0
- data/spec/{app/models/profile.rb → support/models/scribe.rb} +2 -2
- data/spec/support/models/seat.rb +25 -0
- data/spec/{app → support}/models/seo.rb +0 -0
- data/spec/{app → support}/models/series.rb +1 -0
- data/spec/{app → support}/models/server.rb +0 -0
- data/spec/{app → support}/models/service.rb +0 -0
- data/spec/{app → support}/models/shape.rb +2 -2
- data/spec/{app → support}/models/shelf.rb +0 -0
- data/spec/{app → support}/models/shipment_address.rb +0 -0
- data/spec/{app → support}/models/shipping_container.rb +0 -0
- data/spec/{app → support}/models/shipping_pack.rb +0 -0
- data/spec/{app → support}/models/shop.rb +0 -0
- data/spec/{app → support}/models/short_agent.rb +0 -0
- data/spec/{app → support}/models/short_quiz.rb +0 -0
- data/spec/{app → support}/models/simple.rb +0 -0
- data/spec/{app → support}/models/slave.rb +0 -0
- data/spec/{app → support}/models/song.rb +0 -0
- data/spec/{app → support}/models/sound.rb +0 -0
- data/spec/{app → support}/models/square.rb +0 -0
- data/spec/{app → support}/models/staff.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
- data/spec/{app → support}/models/strategy.rb +0 -0
- data/spec/{app → support}/models/sub_item.rb +0 -0
- data/spec/{app → support}/models/subscription.rb +0 -0
- data/spec/{app → support}/models/survey.rb +0 -0
- data/spec/{app → support}/models/symptom.rb +0 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +0 -0
- data/spec/{app → support}/models/target.rb +0 -0
- data/spec/{app → support}/models/template.rb +0 -0
- data/spec/{app → support}/models/thing.rb +0 -0
- data/spec/{app → support}/models/title.rb +0 -0
- data/spec/{app → support}/models/tool.rb +2 -2
- data/spec/{app → support}/models/topping.rb +0 -0
- data/spec/support/models/toy.rb +10 -0
- data/spec/{app → support}/models/track.rb +0 -0
- data/spec/{app → support}/models/translation.rb +0 -0
- data/spec/{app → support}/models/tree.rb +0 -0
- data/spec/{app → support}/models/truck.rb +2 -0
- data/spec/{app → support}/models/updatable.rb +0 -0
- data/spec/{app → support}/models/user.rb +0 -0
- data/spec/{app → support}/models/user_account.rb +0 -0
- data/spec/{app → support}/models/validation_callback.rb +0 -0
- data/spec/{app → support}/models/vehicle.rb +7 -2
- data/spec/{app → support}/models/version.rb +0 -0
- data/spec/{app → support}/models/vertex.rb +0 -0
- data/spec/{app → support}/models/vet_visit.rb +0 -0
- data/spec/{app → support}/models/video.rb +0 -0
- data/spec/{app → support}/models/video_game.rb +0 -0
- data/spec/{app → support}/models/weapon.rb +0 -0
- data/spec/{app → support}/models/wiki_page.rb +1 -0
- data/spec/{app → support}/models/word.rb +0 -0
- data/spec/{app → support}/models/word_origin.rb +0 -0
- data/spec/{app → support}/models/writer.rb +2 -2
- data/spec/support/spec_config.rb +1 -1
- metadata +895 -755
- metadata.gz.sig +0 -0
- data/lib/mongoid/matchable/all.rb +0 -30
- data/lib/mongoid/matchable/and.rb +0 -32
- data/lib/mongoid/matchable/default.rb +0 -121
- data/lib/mongoid/matchable/elem_match.rb +0 -36
- data/lib/mongoid/matchable/eq.rb +0 -23
- data/lib/mongoid/matchable/exists.rb +0 -25
- data/lib/mongoid/matchable/gt.rb +0 -25
- data/lib/mongoid/matchable/gte.rb +0 -25
- data/lib/mongoid/matchable/in.rb +0 -26
- data/lib/mongoid/matchable/lt.rb +0 -25
- data/lib/mongoid/matchable/lte.rb +0 -25
- data/lib/mongoid/matchable/ne.rb +0 -23
- data/lib/mongoid/matchable/nin.rb +0 -24
- data/lib/mongoid/matchable/nor.rb +0 -38
- data/lib/mongoid/matchable/or.rb +0 -35
- data/lib/mongoid/matchable/regexp.rb +0 -30
- data/lib/mongoid/matchable/size.rb +0 -23
- data/spec/app/models/publication.rb +0 -5
- data/spec/mongoid/matchable/all_spec.rb +0 -34
- data/spec/mongoid/matchable/and_spec.rb +0 -190
- data/spec/mongoid/matchable/default_spec.rb +0 -140
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -109
- data/spec/mongoid/matchable/eq_spec.rb +0 -49
- data/spec/mongoid/matchable/exists_spec.rb +0 -60
- data/spec/mongoid/matchable/gt_spec.rb +0 -89
- data/spec/mongoid/matchable/gte_spec.rb +0 -87
- data/spec/mongoid/matchable/in_spec.rb +0 -52
- data/spec/mongoid/matchable/lt_spec.rb +0 -88
- data/spec/mongoid/matchable/lte_spec.rb +0 -88
- data/spec/mongoid/matchable/ne_spec.rb +0 -49
- data/spec/mongoid/matchable/nin_spec.rb +0 -51
- data/spec/mongoid/matchable/nor_spec.rb +0 -210
- data/spec/mongoid/matchable/or_spec.rb +0 -134
- data/spec/mongoid/matchable/regexp_spec.rb +0 -62
- data/spec/mongoid/matchable/size_spec.rb +0 -28
- data/spec/mongoid/matchable_spec.rb +0 -856
- data/spec/support/child_process_helper.rb +0 -76
- data/spec/support/lite_constraints.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb2c430462ea474d889d41fa20a7011b5ddfeeac215cddc762c2e2a4324e8ef9
|
4
|
+
data.tar.gz: 002a48e7013981c8c12f45edca4f5c9a5c75c9b99ac5f2fd46422532871ae775
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6985ec8a658d859e3a8f863eca20326d11aba2249488f10cff0bb6c01c8a4de759ab6726b1573e7e6a845ccf5b72213b8fe0374d699761e13608121216bafe98
|
7
|
+
data.tar.gz: fb681e64b86e56203d0029452b71f197bcadfb86b56ccadd514edc6bac416c68490ed708db5a09bc84cf638a43fb359d6ec977f31ca226429c0ca99de0af3120
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
|
2
|
-
[![
|
1
|
+
Mongoid
|
2
|
+
[![Gem Version][rubygems-img]][rubygems-url]
|
3
|
+
[![Inline docs][inch-img]][inch-url]
|
4
|
+
====
|
3
5
|
|
4
6
|
Mongoid is an ODM (Object-Document Mapper) framework for MongoDB in Ruby.
|
5
7
|
|
@@ -63,3 +65,8 @@ Credits
|
|
63
65
|
-------
|
64
66
|
|
65
67
|
Durran Jordan: durran at gmail dot com
|
68
|
+
|
69
|
+
[rubygems-img]: https://badge.fury.io/rb/mongoid.svg
|
70
|
+
[rubygems-url]: http://badge.fury.io/rb/mongoid
|
71
|
+
[inch-img]: http://inch-ci.org/github/mongodb/mongoid.svg?branch=master
|
72
|
+
[inch-url]: http://inch-ci.org/github/mongodb/mongoid
|
data/Rakefile
CHANGED
@@ -4,8 +4,13 @@ require "bundler"
|
|
4
4
|
require "bundler/gem_tasks"
|
5
5
|
Bundler.setup
|
6
6
|
|
7
|
+
ROOT = File.expand_path(File.join(File.dirname(__FILE__)))
|
8
|
+
|
9
|
+
$: << File.join(ROOT, 'spec/shared/lib')
|
10
|
+
|
7
11
|
require "rake"
|
8
12
|
require "rspec/core/rake_task"
|
13
|
+
require 'mrss/spec_organizer'
|
9
14
|
|
10
15
|
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
11
16
|
require "mongoid/version"
|
@@ -22,11 +27,8 @@ task :install => :build do
|
|
22
27
|
system "sudo gem install mongoid-#{Mongoid::VERSION}.gem"
|
23
28
|
end
|
24
29
|
|
25
|
-
task :release
|
26
|
-
|
27
|
-
system "git push --tags"
|
28
|
-
system "gem push mongoid-#{Mongoid::VERSION}.gem"
|
29
|
-
system "rm mongoid-#{Mongoid::VERSION}.gem"
|
30
|
+
task :release do
|
31
|
+
raise "Please use ./release.sh to release"
|
30
32
|
end
|
31
33
|
|
32
34
|
RSpec::Core::RakeTask.new("spec") do |spec|
|
@@ -38,6 +40,32 @@ RSpec::Core::RakeTask.new('spec:progress') do |spec|
|
|
38
40
|
spec.pattern = "spec/**/*_spec.rb"
|
39
41
|
end
|
40
42
|
|
43
|
+
CLASSIFIERS = [
|
44
|
+
[%r,^mongoid/attribute,, :attributes],
|
45
|
+
[%r,^mongoid/association/[or],, :associations_referenced],
|
46
|
+
[%r,^mongoid/association,, :associations],
|
47
|
+
[%r,^mongoid,, :unit],
|
48
|
+
[%r,^integration,, :integration],
|
49
|
+
[%r,^rails,, :rails],
|
50
|
+
]
|
51
|
+
|
52
|
+
RUN_PRIORITY = %i(
|
53
|
+
unit attributes associations_referenced associations
|
54
|
+
integration rails
|
55
|
+
)
|
56
|
+
|
57
|
+
def spec_organizer
|
58
|
+
Mrss::SpecOrganizer.new(
|
59
|
+
root: ROOT,
|
60
|
+
classifiers: CLASSIFIERS,
|
61
|
+
priority_order: RUN_PRIORITY,
|
62
|
+
)
|
63
|
+
end
|
64
|
+
|
65
|
+
task :ci do
|
66
|
+
spec_organizer.run
|
67
|
+
end
|
68
|
+
|
41
69
|
task :default => :spec
|
42
70
|
|
43
71
|
desc "Generate all documentation"
|
@@ -59,5 +87,3 @@ namespace :release do
|
|
59
87
|
end
|
60
88
|
end
|
61
89
|
end
|
62
|
-
|
63
|
-
task :release => ['release:check_private_key', 'release:do']
|
data/lib/config/locales/en.yml
CHANGED
@@ -7,6 +7,7 @@ en:
|
|
7
7
|
message_title: "message"
|
8
8
|
summary_title: "summary"
|
9
9
|
resolution_title: "resolution"
|
10
|
+
|
10
11
|
ambiguous_relationship:
|
11
12
|
message: "Ambiguous associations %{candidates} defined on %{klass}."
|
12
13
|
summary:
|
@@ -43,6 +44,8 @@ en:
|
|
43
44
|
resolution: "Most likely this is caused by passing parameters directly
|
44
45
|
through to the find, and the parameter either is not present or the
|
45
46
|
key from which it is accessed is incorrect."
|
47
|
+
destroy_restrict_with_error_dependencies_exist:
|
48
|
+
"is not empty and prevents the document from being destroyed"
|
46
49
|
document_not_destroyed:
|
47
50
|
message: "%{klass} with id %{id} was not destroyed."
|
48
51
|
summary: "When calling %{klass}#destroy! and a callback halts the destroy
|
@@ -105,6 +108,32 @@ en:
|
|
105
108
|
summary: "An invalid dependent strategy was defined for the association:
|
106
109
|
%{association}. The valid strategies are: %{valid_strategies}."
|
107
110
|
resolution: "Change the dependent strategy to one of the valid types."
|
111
|
+
invalid_discriminator_key_target:
|
112
|
+
message: "Setting the discriminator key on a child class is not allowed."
|
113
|
+
summary: "The discriminator key on the class %{class_name} was attempted
|
114
|
+
to be changed. Changing the discriminator key on a child class is not
|
115
|
+
allowed."
|
116
|
+
resolution: "Try setting the discriminator key on %{superclass} or one of %{class_name}'s
|
117
|
+
ancestors."
|
118
|
+
invalid_elem_match_operator:
|
119
|
+
message: "Invalid $elemMatch operator '%{operator}'."
|
120
|
+
summary: "You misspelled an operator or are using an operator that
|
121
|
+
Mongoid does not support."
|
122
|
+
resolution: "Valid field operators are: %{valid_operators}.
|
123
|
+
Ensure you are using one of these operators."
|
124
|
+
invalid_estimated_count_criteria:
|
125
|
+
message: "Invalid criteria for estimated_count."
|
126
|
+
summary: "Estimated count is strictly a collection-level operation and cannot be called
|
127
|
+
on a filtered critera."
|
128
|
+
resolution: "Try calling estimated_count directly on the class: %{class_name}.estimated_count.\n\n
|
129
|
+
\_If the class defines a default scope, use unscoped: %{class_name}.unscoped.estimated_count."
|
130
|
+
invalid_expression_operator:
|
131
|
+
message: "Invalid expression operator '%{operator}'."
|
132
|
+
summary: "You misspelled an operator, are using an operator that
|
133
|
+
Mongoid does not support, or are trying to use a field-level
|
134
|
+
operator on expression level."
|
135
|
+
resolution: "Valid expression operators are: %{valid_operators}.
|
136
|
+
Ensure you are using one of these operators."
|
108
137
|
invalid_field:
|
109
138
|
message: "Defining a field named '%{name}' is not allowed."
|
110
139
|
summary: "Defining this field would override the method '%{name}',
|
@@ -118,6 +147,13 @@ en:
|
|
118
147
|
allowed, and don't use these names. These include names that also
|
119
148
|
conflict with core Ruby methods on Object, Module, Enumerable, or
|
120
149
|
included gems that inject methods into these or Mongoid internals."
|
150
|
+
invalid_field_operator:
|
151
|
+
message: "Invalid field operator '%{operator}'."
|
152
|
+
summary: "You misspelled an operator, are using an operator that
|
153
|
+
Mongoid does not support, or are trying to use an expression-level
|
154
|
+
operator on field level."
|
155
|
+
resolution: "Valid field operators are: %{valid_operators}.
|
156
|
+
Ensure you are using one of these operators."
|
121
157
|
invalid_field_option:
|
122
158
|
message: "Invalid option :%{option} provided for field :%{name}."
|
123
159
|
summary: "Mongoid requires that you only provide valid options on each
|
@@ -543,7 +579,7 @@ en:
|
|
543
579
|
the validations."
|
544
580
|
delete_restriction:
|
545
581
|
message: "Cannot delete %{document} because of dependent '%{relation}'."
|
546
|
-
summary: "When defining '%{relation}' with a :dependent => :
|
582
|
+
summary: "When defining '%{relation}' with a :dependent => :restrict_with_error,
|
547
583
|
Mongoid will raise an error when attempting to delete the
|
548
584
|
%{document} when the child '%{relation}' still has documents in it."
|
549
585
|
resolution: "Don't attempt to delete the parent %{document} when
|
data/lib/mongoid.rb
CHANGED
@@ -111,4 +111,27 @@ module Mongoid
|
|
111
111
|
#
|
112
112
|
# @since 1.0.0
|
113
113
|
def_delegators Config, *(Config.public_instance_methods(false) - [ :logger=, :logger ])
|
114
|
+
|
115
|
+
|
116
|
+
# Module used to prepend the discriminator key assignment function to change
|
117
|
+
# the value assigned to the discriminator key to a string.
|
118
|
+
#
|
119
|
+
# @api private
|
120
|
+
module GlobalDiscriminatorKeyAssignment
|
121
|
+
# This class is used for obtaining the method definition location for
|
122
|
+
# Mongoid methods.
|
123
|
+
class InvalidFieldHost
|
124
|
+
include Mongoid::Document
|
125
|
+
end
|
126
|
+
|
127
|
+
def discriminator_key=(value)
|
128
|
+
Mongoid::Fields::Validators::Macro.validate_field_name(InvalidFieldHost, value)
|
129
|
+
value = value.to_s
|
130
|
+
super
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
class << self
|
135
|
+
prepend GlobalDiscriminatorKeyAssignment
|
136
|
+
end
|
114
137
|
end
|
@@ -41,11 +41,6 @@ module Mongoid
|
|
41
41
|
:restrict_with_error
|
42
42
|
]
|
43
43
|
|
44
|
-
# The error message when a strategy cannot delete objects because there are associated objects.
|
45
|
-
#
|
46
|
-
# @since 7.0
|
47
|
-
RESTRICT_ERROR_MSG = 'Cannot delete record because associated objects exist.'.freeze
|
48
|
-
|
49
44
|
# Attempt to add the cascading information for the document to know how
|
50
45
|
# to handle associated documents on a removal.
|
51
46
|
#
|
@@ -131,7 +126,7 @@ module Mongoid
|
|
131
126
|
|
132
127
|
def _dependent_restrict_with_error!(association)
|
133
128
|
if (relation = send(association.name)) && !relation.blank?
|
134
|
-
errors.add(association.name,
|
129
|
+
errors.add(association.name, :destroy_restrict_with_error_dependencies_exist)
|
135
130
|
throw(:abort, false)
|
136
131
|
end
|
137
132
|
end
|
@@ -11,7 +11,7 @@ module Mongoid
|
|
11
11
|
include ::Enumerable
|
12
12
|
|
13
13
|
def_delegators :criteria, :avg, :max, :min, :sum
|
14
|
-
def_delegators :_target, :length, :size
|
14
|
+
def_delegators :_target, :length, :size, :any?
|
15
15
|
|
16
16
|
# Is the association empty?
|
17
17
|
#
|
@@ -22,7 +22,7 @@ module Mongoid
|
|
22
22
|
#
|
23
23
|
# @since 2.1.0
|
24
24
|
def blank?
|
25
|
-
|
25
|
+
!any?
|
26
26
|
end
|
27
27
|
|
28
28
|
# Creates a new document on the references many association. This will
|
@@ -207,7 +207,7 @@ module Mongoid
|
|
207
207
|
#
|
208
208
|
# @return [ Document ] A matching document or a new/created one.
|
209
209
|
def find_or(method, attrs = {}, type = nil, &block)
|
210
|
-
attrs[
|
210
|
+
attrs[klass.discriminator_key] = type.discriminator_value if type
|
211
211
|
where(attrs).first || send(method, attrs, type, &block)
|
212
212
|
end
|
213
213
|
end
|
@@ -101,7 +101,7 @@ module Mongoid
|
|
101
101
|
|
102
102
|
# Delete the document from the association. This will set the foreign key
|
103
103
|
# on the document to nil. If the dependent options on the association are
|
104
|
-
# :
|
104
|
+
# :delete_all or :destroy the appropriate removal will occur.
|
105
105
|
#
|
106
106
|
# @example Delete the document.
|
107
107
|
# person.posts.delete(post)
|
@@ -216,6 +216,40 @@ module Mongoid
|
|
216
216
|
end
|
217
217
|
end
|
218
218
|
|
219
|
+
# Returns whether the association has any documents, optionally
|
220
|
+
# subject to the provided filters.
|
221
|
+
#
|
222
|
+
# This method returns true if the association has any persisted
|
223
|
+
# documents and if it has any not yet persisted documents.
|
224
|
+
#
|
225
|
+
# If the association is already loaded, this method inspects the
|
226
|
+
# loaded documents and does not query the database. If the
|
227
|
+
# association is not loaded, the argument-less and block-less
|
228
|
+
# version does not load the association; the other versions
|
229
|
+
# (that delegate to Enumerable) may or may not load the association
|
230
|
+
# completely depending on whether it is iterated to completion.
|
231
|
+
#
|
232
|
+
# This method can take a parameter and a block. The behavior with
|
233
|
+
# either the paramater or the block is delegated to the standard
|
234
|
+
# library Enumerable module.
|
235
|
+
#
|
236
|
+
# Note that when Enumerable's any? method is invoked with both
|
237
|
+
# a block and a pattern, it only uses the pattern.
|
238
|
+
#
|
239
|
+
# @param [ Object ] condition The condition that documents
|
240
|
+
# must satisfy. See Enumerable documentation for details.
|
241
|
+
#
|
242
|
+
# @return [ true, false ] If the association has any documents.
|
243
|
+
def any?(*args)
|
244
|
+
return super if args.any? || block_given?
|
245
|
+
|
246
|
+
if _loaded?
|
247
|
+
in_memory.length > 0
|
248
|
+
else
|
249
|
+
_unloaded.exists? || _added.length > 0
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
219
253
|
# Get the first document in the enumerable. Will check the persisted
|
220
254
|
# documents first. Does not load the entire enumerable.
|
221
255
|
#
|
@@ -395,7 +429,8 @@ module Mongoid
|
|
395
429
|
#
|
396
430
|
# @since 2.1.0
|
397
431
|
def reset
|
398
|
-
_loaded.clear
|
432
|
+
_loaded.clear
|
433
|
+
_added.clear
|
399
434
|
@executed = false
|
400
435
|
end
|
401
436
|
|
@@ -90,7 +90,7 @@ module Mongoid
|
|
90
90
|
|
91
91
|
# Delete the document from the association. This will set the foreign key
|
92
92
|
# on the document to nil. If the dependent options on the association are
|
93
|
-
# :
|
93
|
+
# :delete_all or :destroy the appropriate removal will occur.
|
94
94
|
#
|
95
95
|
# @example Delete the document.
|
96
96
|
# person.posts.delete(post)
|
@@ -170,6 +170,13 @@ module Mongoid
|
|
170
170
|
|
171
171
|
# Determine if any documents in this association exist in the database.
|
172
172
|
#
|
173
|
+
# If the association contains documents but all of the documents
|
174
|
+
# exist only in the application, i.e. have not been persisted to the
|
175
|
+
# database, this method returns false.
|
176
|
+
#
|
177
|
+
# This method queries the database on each invocation even if the
|
178
|
+
# association is already loaded into memory.
|
179
|
+
#
|
173
180
|
# @example Are there persisted documents?
|
174
181
|
# person.posts.exists?
|
175
182
|
#
|
@@ -35,6 +35,14 @@ module Mongoid
|
|
35
35
|
private
|
36
36
|
|
37
37
|
def clear_associated(object)
|
38
|
+
unless inverse
|
39
|
+
raise Errors::InverseNotFound.new(
|
40
|
+
@owner_class,
|
41
|
+
name,
|
42
|
+
object.class,
|
43
|
+
foreign_key,
|
44
|
+
)
|
45
|
+
end
|
38
46
|
if object && (associated = object.send(inverse))
|
39
47
|
associated.substitute(nil)
|
40
48
|
end
|
@@ -46,7 +54,7 @@ module Mongoid
|
|
46
54
|
end
|
47
55
|
|
48
56
|
def execute_query(object, base)
|
49
|
-
query_criteria(object, base).limit(
|
57
|
+
query_criteria(object, base).limit(1).first(id_sort: :none)
|
50
58
|
end
|
51
59
|
|
52
60
|
def with_polymorphic_criterion(criteria, base)
|
@@ -54,9 +54,14 @@ module Mongoid
|
|
54
54
|
#
|
55
55
|
# @since 2.0.0.rc.1
|
56
56
|
def substitute(replacement)
|
57
|
+
# If the same object currently associated is being assigned,
|
58
|
+
# rebind the association and save the target but do not destroy
|
59
|
+
# the target.
|
60
|
+
|
57
61
|
unbind_one
|
58
62
|
if persistable?
|
59
|
-
if
|
63
|
+
# TODO can this entire method be skipped if self == replacement?
|
64
|
+
if _association.destructive? && self != replacement
|
60
65
|
send(_association.dependent)
|
61
66
|
else
|
62
67
|
save if persisted?
|
@@ -193,7 +193,7 @@ module Mongoid
|
|
193
193
|
def push_conflict?(field)
|
194
194
|
name = field.split(".", 2)[0]
|
195
195
|
set_fields.has_key?(name) || pull_fields.has_key?(name) ||
|
196
|
-
(push_fields.keys.count { |item| item
|
196
|
+
(push_fields.keys.count { |item| item.split('.', 2).first == name } > 1)
|
197
197
|
end
|
198
198
|
|
199
199
|
# Get the conflicting pull modifications.
|
@@ -116,7 +116,7 @@ module Mongoid
|
|
116
116
|
#
|
117
117
|
# @since 4.0.0
|
118
118
|
def inspect_dynamic_fields
|
119
|
-
keys = attributes.keys - fields.keys - relations.keys - ["_id",
|
119
|
+
keys = attributes.keys - fields.keys - relations.keys - ["_id", self.class.discriminator_key]
|
120
120
|
return keys.map do |name|
|
121
121
|
"#{name}: #{attributes[name].inspect}"
|
122
122
|
end
|
@@ -69,11 +69,28 @@ module Mongoid
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
+
MONGOID_WRAPPING_LIBRARY = {
|
73
|
+
name: 'Mongoid',
|
74
|
+
version: VERSION,
|
75
|
+
}.freeze
|
76
|
+
|
77
|
+
def driver_version
|
78
|
+
Mongo::VERSION.split('.')[0...2].map(&:to_i)
|
79
|
+
end
|
80
|
+
|
72
81
|
def options(configuration)
|
73
82
|
config = configuration.dup
|
74
83
|
options = config.delete(:options) || {}
|
75
84
|
options[:platform] = PLATFORM_DETAILS
|
76
85
|
options[:app_name] = Mongoid::Config.app_name if Mongoid::Config.app_name
|
86
|
+
if (driver_version <=> [2, 13]) >= 0
|
87
|
+
wrap_lib = if options[:wrapping_libraries]
|
88
|
+
[MONGOID_WRAPPING_LIBRARY] + options[:wrapping_libraries]
|
89
|
+
else
|
90
|
+
[MONGOID_WRAPPING_LIBRARY]
|
91
|
+
end
|
92
|
+
options[:wrapping_libraries] = wrap_lib
|
93
|
+
end
|
77
94
|
options.reject{ |k, v| k == :hosts }.to_hash.symbolize_keys!
|
78
95
|
end
|
79
96
|
end
|
data/lib/mongoid/composable.rb
CHANGED