mongoid 5.4.0 → 6.4.8
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/README.md +3 -3
- data/Rakefile +26 -0
- data/lib/config/locales/en.yml +40 -0
- data/lib/mongoid/atomic/modifiers.rb +2 -2
- data/lib/mongoid/atomic.rb +5 -5
- data/lib/mongoid/attributes/readonly.rb +22 -0
- data/lib/mongoid/attributes.rb +22 -21
- data/lib/mongoid/cacheable.rb +36 -0
- data/lib/mongoid/changeable.rb +36 -0
- data/lib/mongoid/clients/options.rb +55 -250
- data/lib/mongoid/clients/sessions.rb +113 -0
- data/lib/mongoid/clients/storage_options.rb +2 -69
- data/lib/mongoid/clients.rb +10 -63
- data/lib/mongoid/composable.rb +29 -2
- data/lib/mongoid/config.rb +1 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +4 -4
- data/lib/mongoid/contextual/map_reduce.rb +7 -3
- data/lib/mongoid/contextual/memory.rb +9 -4
- data/lib/mongoid/contextual/mongo.rb +65 -30
- data/lib/mongoid/contextual/none.rb +12 -0
- data/lib/mongoid/copyable.rb +13 -6
- data/lib/mongoid/criteria/marshalable.rb +2 -2
- data/lib/mongoid/criteria/modifiable.rb +29 -3
- data/lib/mongoid/criteria/options.rb +25 -0
- data/lib/mongoid/criteria/queryable/aggregable.rb +120 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +185 -0
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +37 -0
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +34 -0
- data/lib/mongoid/criteria/queryable/extensions/date.rb +63 -0
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +53 -0
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +200 -0
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +86 -0
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +90 -0
- data/lib/mongoid/criteria/queryable/extensions/object.rb +206 -0
- data/lib/mongoid/criteria/queryable/extensions/range.rb +70 -0
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +79 -0
- data/lib/mongoid/criteria/queryable/extensions/set.rb +34 -0
- data/lib/mongoid/criteria/queryable/extensions/string.rb +137 -0
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +79 -0
- data/lib/mongoid/criteria/queryable/extensions/time.rb +60 -0
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +54 -0
- data/lib/mongoid/criteria/queryable/extensions.rb +28 -0
- data/lib/mongoid/criteria/queryable/forwardable.rb +65 -0
- data/lib/mongoid/criteria/queryable/key.rb +103 -0
- data/lib/mongoid/criteria/queryable/macroable.rb +27 -0
- data/lib/mongoid/criteria/queryable/mergeable.rb +273 -0
- data/lib/mongoid/criteria/queryable/optional.rb +429 -0
- data/lib/mongoid/criteria/queryable/options.rb +153 -0
- data/lib/mongoid/criteria/queryable/pipeline.rb +111 -0
- data/lib/mongoid/criteria/queryable/selectable.rb +689 -0
- data/lib/mongoid/criteria/queryable/selector.rb +212 -0
- data/lib/mongoid/criteria/queryable/smash.rb +104 -0
- data/lib/mongoid/criteria/queryable.rb +87 -0
- data/lib/mongoid/criteria.rb +6 -2
- data/lib/mongoid/document.rb +34 -41
- data/lib/mongoid/errors/ambiguous_relationship.rb +1 -1
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +1 -1
- data/lib/mongoid/errors/invalid_field.rb +2 -2
- data/lib/mongoid/errors/invalid_persistence_option.rb +29 -0
- data/lib/mongoid/errors/invalid_relation.rb +66 -0
- data/lib/mongoid/errors/invalid_session_use.rb +24 -0
- data/lib/mongoid/errors.rb +3 -0
- data/lib/mongoid/evolvable.rb +1 -1
- data/lib/mongoid/extensions/big_decimal.rb +17 -8
- data/lib/mongoid/extensions/date.rb +4 -1
- data/lib/mongoid/extensions/decimal128.rb +3 -3
- data/lib/mongoid/extensions/hash.rb +1 -0
- data/lib/mongoid/extensions/regexp.rb +1 -0
- data/lib/mongoid/extensions/string.rb +6 -3
- data/lib/mongoid/extensions/time.rb +4 -1
- data/lib/mongoid/extensions.rb +0 -4
- data/lib/mongoid/factory.rb +2 -1
- data/lib/mongoid/fields/validators/macro.rb +18 -0
- data/lib/mongoid/findable.rb +2 -2
- data/lib/mongoid/indexable.rb +16 -14
- data/lib/mongoid/interceptable.rb +9 -22
- data/lib/mongoid/matchable/all.rb +2 -2
- data/lib/mongoid/matchable/and.rb +3 -3
- data/lib/mongoid/matchable/default.rb +2 -2
- data/lib/mongoid/matchable/elem_match.rb +28 -0
- data/lib/mongoid/matchable/exists.rb +2 -2
- data/lib/mongoid/matchable/gt.rb +4 -2
- data/lib/mongoid/matchable/gte.rb +4 -2
- data/lib/mongoid/matchable/in.rb +2 -2
- data/lib/mongoid/matchable/lt.rb +4 -2
- data/lib/mongoid/matchable/lte.rb +4 -2
- data/lib/mongoid/matchable/ne.rb +2 -2
- data/lib/mongoid/matchable/nin.rb +2 -2
- data/lib/mongoid/matchable/nor.rb +37 -0
- data/lib/mongoid/matchable/or.rb +3 -3
- data/lib/mongoid/matchable/regexp.rb +3 -3
- data/lib/mongoid/matchable/size.rb +2 -2
- data/lib/mongoid/matchable.rb +16 -7
- data/lib/mongoid/persistable/creatable.rb +5 -3
- data/lib/mongoid/persistable/deletable.rb +5 -3
- data/lib/mongoid/persistable/destroyable.rb +1 -5
- data/lib/mongoid/persistable/settable.rb +5 -5
- data/lib/mongoid/persistable/updatable.rb +7 -14
- data/lib/mongoid/persistable/upsertable.rb +2 -1
- data/lib/mongoid/persistable.rb +4 -6
- data/lib/mongoid/persistence_context.rb +220 -0
- data/lib/mongoid/query_cache.rb +67 -23
- data/lib/mongoid/railtie.rb +17 -1
- data/lib/mongoid/railties/controller_runtime.rb +86 -0
- data/lib/mongoid/relations/accessors.rb +3 -0
- data/lib/mongoid/relations/auto_save.rb +12 -4
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +4 -4
- data/lib/mongoid/relations/counter_cache.rb +15 -5
- data/lib/mongoid/relations/eager/base.rb +3 -3
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +2 -2
- data/lib/mongoid/relations/eager/has_many.rb +1 -1
- data/lib/mongoid/relations/eager.rb +6 -11
- data/lib/mongoid/relations/embedded/batchable.rb +20 -18
- data/lib/mongoid/relations/embedded/in.rb +13 -1
- data/lib/mongoid/relations/embedded/many.rb +51 -10
- data/lib/mongoid/relations/embedded/one.rb +14 -1
- data/lib/mongoid/relations/macros.rb +9 -1
- data/lib/mongoid/relations/many.rb +4 -0
- data/lib/mongoid/relations/metadata.rb +3 -3
- data/lib/mongoid/relations/options.rb +2 -2
- data/lib/mongoid/relations/proxy.rb +1 -31
- data/lib/mongoid/relations/referenced/in.rb +19 -10
- data/lib/mongoid/relations/referenced/many.rb +30 -26
- data/lib/mongoid/relations/referenced/many_to_many.rb +20 -13
- data/lib/mongoid/relations/referenced/one.rb +15 -1
- data/lib/mongoid/relations/synchronization.rb +12 -12
- data/lib/mongoid/relations/targets/enumerable.rb +24 -4
- data/lib/mongoid/relations/touchable.rb +7 -4
- data/lib/mongoid/reloadable.rb +2 -2
- data/lib/mongoid/scopable.rb +3 -3
- data/lib/mongoid/serializable.rb +1 -1
- data/lib/mongoid/stateful.rb +1 -0
- data/lib/mongoid/tasks/database.rb +3 -2
- data/lib/mongoid/threaded.rb +74 -0
- data/lib/mongoid/traversable.rb +1 -1
- data/lib/mongoid/validatable/uniqueness.rb +1 -2
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid.rb +6 -6
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +18 -3
- data/spec/app/models/agent.rb +2 -0
- data/spec/app/models/album.rb +5 -1
- data/spec/app/models/array_field.rb +7 -0
- data/spec/app/models/artist.rb +21 -0
- data/spec/app/models/band.rb +3 -0
- data/spec/app/models/book.rb +2 -1
- data/spec/app/models/delegating_patient.rb +16 -0
- data/spec/app/models/dokument.rb +1 -0
- data/spec/app/models/ordered_post.rb +5 -0
- data/spec/app/models/oscar.rb +1 -2
- data/spec/app/models/page.rb +1 -1
- data/spec/app/models/person.rb +3 -3
- data/spec/app/models/princess.rb +2 -0
- data/spec/app/models/record.rb +1 -0
- data/spec/app/models/subscription.rb +1 -0
- data/spec/app/models/thing.rb +1 -1
- data/spec/config/mongoid.yml +15 -0
- data/spec/integration/document_spec.rb +22 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +3 -3
- data/spec/mongoid/atomic_spec.rb +5 -5
- data/spec/mongoid/attributes/nested_spec.rb +18 -14
- data/spec/mongoid/attributes/readonly_spec.rb +87 -44
- data/spec/mongoid/attributes_spec.rb +90 -5
- data/spec/mongoid/cacheable_spec.rb +112 -0
- data/spec/mongoid/changeable_spec.rb +58 -0
- data/spec/mongoid/clients/factory_spec.rb +80 -28
- data/spec/mongoid/clients/options_spec.rb +396 -95
- data/spec/mongoid/clients/sessions_spec.rb +334 -0
- data/spec/mongoid/clients_spec.rb +243 -101
- data/spec/mongoid/composable_spec.rb +7 -0
- data/spec/mongoid/config_spec.rb +67 -11
- data/spec/mongoid/contextual/atomic_spec.rb +3 -3
- data/spec/mongoid/contextual/geo_near_spec.rb +1 -0
- data/spec/mongoid/contextual/mongo_spec.rb +275 -22
- data/spec/mongoid/contextual/none_spec.rb +15 -0
- data/spec/mongoid/copyable_spec.rb +13 -4
- data/spec/mongoid/criteria/modifiable_spec.rb +297 -16
- data/spec/mongoid/criteria/options_spec.rb +29 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +370 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +523 -0
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +59 -0
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +58 -0
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +213 -0
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +330 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +405 -0
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +58 -0
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +65 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +327 -0
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +65 -0
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +77 -0
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +108 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +309 -0
- data/spec/mongoid/{extensions/origin → criteria/queryable/extensions}/regexp_raw_spec.rb +2 -2
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +90 -0
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +39 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +302 -0
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +167 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +376 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +347 -0
- data/spec/mongoid/criteria/queryable/forwardable_spec.rb +87 -0
- data/spec/mongoid/criteria/queryable/key_spec.rb +52 -0
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +49 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +1799 -0
- data/spec/mongoid/criteria/queryable/options_spec.rb +360 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +200 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +137 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +4242 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +844 -0
- data/spec/mongoid/criteria/queryable/smash_spec.rb +30 -0
- data/spec/mongoid/criteria/scopable_spec.rb +81 -0
- data/spec/mongoid/criteria_spec.rb +156 -22
- data/spec/mongoid/document_spec.rb +100 -90
- data/spec/mongoid/errors/invalid_relation_spec.rb +37 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +6 -3
- data/spec/mongoid/extensions/big_decimal_spec.rb +321 -19
- data/spec/mongoid/extensions/boolean_spec.rb +14 -0
- data/spec/mongoid/extensions/date_spec.rb +2 -6
- data/spec/mongoid/extensions/date_time_spec.rb +2 -6
- data/spec/mongoid/extensions/decimal128_spec.rb +1 -1
- data/spec/mongoid/extensions/float_spec.rb +8 -1
- data/spec/mongoid/extensions/hash_spec.rb +15 -0
- data/spec/mongoid/extensions/integer_spec.rb +8 -1
- data/spec/mongoid/extensions/object_spec.rb +11 -0
- data/spec/mongoid/extensions/regexp_spec.rb +23 -0
- data/spec/mongoid/extensions/string_spec.rb +53 -4
- data/spec/mongoid/extensions/time_spec.rb +2 -6
- data/spec/mongoid/extensions/time_with_zone_spec.rb +2 -6
- data/spec/mongoid/factory_spec.rb +11 -0
- data/spec/mongoid/fields_spec.rb +1 -1
- data/spec/mongoid/findable_spec.rb +47 -2
- data/spec/mongoid/indexable_spec.rb +15 -3
- data/spec/mongoid/interceptable_spec.rb +85 -19
- data/spec/mongoid/matchable/all_spec.rb +4 -4
- data/spec/mongoid/matchable/and_spec.rb +10 -10
- data/spec/mongoid/matchable/default_spec.rb +12 -12
- data/spec/mongoid/matchable/elem_match_spec.rb +86 -0
- data/spec/mongoid/matchable/exists_spec.rb +5 -5
- data/spec/mongoid/matchable/gt_spec.rb +18 -7
- data/spec/mongoid/matchable/gte_spec.rb +17 -7
- data/spec/mongoid/matchable/in_spec.rb +5 -5
- data/spec/mongoid/matchable/lt_spec.rb +18 -7
- data/spec/mongoid/matchable/lte_spec.rb +18 -7
- data/spec/mongoid/matchable/ne_spec.rb +5 -5
- data/spec/mongoid/matchable/nin_spec.rb +5 -5
- data/spec/mongoid/matchable/nor_spec.rb +209 -0
- data/spec/mongoid/matchable/or_spec.rb +7 -7
- data/spec/mongoid/matchable/regexp_spec.rb +5 -5
- data/spec/mongoid/matchable/size_spec.rb +3 -3
- data/spec/mongoid/matchable_spec.rb +199 -54
- data/spec/mongoid/persistable/creatable_spec.rb +7 -2
- data/spec/mongoid/persistable/deletable_spec.rb +35 -1
- data/spec/mongoid/persistable/destroyable_spec.rb +25 -2
- data/spec/mongoid/persistable/incrementable_spec.rb +6 -6
- data/spec/mongoid/persistable/savable_spec.rb +34 -29
- data/spec/mongoid/persistable/settable_spec.rb +77 -27
- data/spec/mongoid/persistable/updatable_spec.rb +182 -3
- data/spec/mongoid/persistable_spec.rb +16 -16
- data/spec/mongoid/persistence_context_spec.rb +694 -0
- data/spec/mongoid/positional_spec.rb +1 -1
- data/spec/mongoid/query_cache_spec.rb +170 -12
- data/spec/mongoid/relations/accessors_spec.rb +1 -1
- data/spec/mongoid/relations/auto_save_spec.rb +39 -6
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +4 -4
- data/spec/mongoid/relations/builders_spec.rb +37 -10
- data/spec/mongoid/relations/counter_cache_spec.rb +64 -3
- data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +16 -0
- data/spec/mongoid/relations/eager_spec.rb +40 -0
- data/spec/mongoid/relations/embedded/many_spec.rb +305 -59
- data/spec/mongoid/relations/embedded/one_spec.rb +2 -1
- data/spec/mongoid/relations/macros_spec.rb +415 -7
- data/spec/mongoid/relations/metadata_spec.rb +15 -1
- data/spec/mongoid/relations/proxy_spec.rb +27 -1
- data/spec/mongoid/relations/referenced/in_spec.rb +41 -1
- data/spec/mongoid/relations/referenced/many_spec.rb +35 -25
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +14 -26
- data/spec/mongoid/relations/synchronization_spec.rb +48 -2
- data/spec/mongoid/relations/targets/enumerable_spec.rb +108 -0
- data/spec/mongoid/relations/touchable_spec.rb +40 -0
- data/spec/mongoid/reloadable_spec.rb +51 -0
- data/spec/mongoid/scopable_spec.rb +13 -0
- data/spec/mongoid/serializable_spec.rb +0 -50
- data/spec/mongoid/threaded_spec.rb +68 -0
- data/spec/mongoid/validatable/presence_spec.rb +1 -1
- data/spec/mongoid/validatable/uniqueness_spec.rb +18 -9
- data/spec/mongoid/validatable_spec.rb +16 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +110 -0
- data/spec/spec_helper.rb +101 -8
- data/spec/support/cluster_config.rb +158 -0
- data/spec/support/constraints.rb +101 -0
- data/spec/support/macros.rb +20 -0
- data/spec/support/session_registry.rb +50 -0
- data/spec/support/spec_config.rb +42 -0
- data.tar.gz.sig +0 -0
- metadata +163 -61
- metadata.gz.sig +0 -0
- data/lib/mongoid/clients/thread_options.rb +0 -19
- data/lib/mongoid/extensions/origin/regexp_raw.rb +0 -43
- data/lib/mongoid/railties/document.rb +0 -12
- data/spec/mongoid/railties/document_spec.rb +0 -24
data/lib/mongoid.rb
CHANGED
@@ -12,11 +12,11 @@ require "active_support/inflector"
|
|
12
12
|
require "active_support/time_with_zone"
|
13
13
|
require "active_model"
|
14
14
|
|
15
|
-
require "origin"
|
16
15
|
require "mongo"
|
17
16
|
|
18
17
|
require "mongoid/version"
|
19
18
|
require "mongoid/config"
|
19
|
+
require "mongoid/persistence_context"
|
20
20
|
require "mongoid/loggable"
|
21
21
|
require "mongoid/clients"
|
22
22
|
require "mongoid/document"
|
@@ -42,7 +42,7 @@ module Mongoid
|
|
42
42
|
PLATFORM_DETAILS = "mongoid-#{VERSION}".freeze
|
43
43
|
|
44
44
|
# The minimum MongoDB version supported.
|
45
|
-
MONGODB_VERSION = "2.
|
45
|
+
MONGODB_VERSION = "2.6.0"
|
46
46
|
|
47
47
|
# Sets the Mongoid configuration options. Best used by passing a block.
|
48
48
|
#
|
@@ -65,7 +65,7 @@ module Mongoid
|
|
65
65
|
#
|
66
66
|
# @return [ Mongo::Client ] The default client.
|
67
67
|
#
|
68
|
-
# @since
|
68
|
+
# @since 5.0.0
|
69
69
|
def default_client
|
70
70
|
Clients.default
|
71
71
|
end
|
@@ -77,7 +77,7 @@ module Mongoid
|
|
77
77
|
#
|
78
78
|
# @return [ true ] True.
|
79
79
|
#
|
80
|
-
# @since
|
80
|
+
# @since 5.0.0
|
81
81
|
def disconnect_clients
|
82
82
|
Clients.disconnect
|
83
83
|
end
|
@@ -89,7 +89,7 @@ module Mongoid
|
|
89
89
|
#
|
90
90
|
# @return [ Mongo::Client ] The named client.
|
91
91
|
#
|
92
|
-
# @since
|
92
|
+
# @since 5.0.0
|
93
93
|
def client(name)
|
94
94
|
Clients.with_name(name)
|
95
95
|
end
|
@@ -101,5 +101,5 @@ module Mongoid
|
|
101
101
|
# Mongoid.database = Mongo::Connection.new.db("test")
|
102
102
|
#
|
103
103
|
# @since 1.0.0
|
104
|
-
delegate(*(Config.public_instance_methods(false) - [ :logger=, :logger ]
|
104
|
+
delegate(*(Config.public_instance_methods(false) - [ :logger=, :logger ]), to: Config)
|
105
105
|
end
|
@@ -11,6 +11,10 @@ development:
|
|
11
11
|
hosts:
|
12
12
|
- localhost:27017
|
13
13
|
options:
|
14
|
+
# Note that all options listed below are Ruby driver client options (the mongo gem).
|
15
|
+
# Please refer to the driver documentation of the version of the mongo gem you are using
|
16
|
+
# for the most up-to-date list of options.
|
17
|
+
#
|
14
18
|
# Change the default write concern. (default = { w: 1 })
|
15
19
|
# write:
|
16
20
|
# w: 1
|
@@ -34,11 +38,13 @@ development:
|
|
34
38
|
# - 'dbOwner'
|
35
39
|
|
36
40
|
# Change the default authentication mechanism. Valid options are: :scram,
|
37
|
-
# :mongodb_cr, :mongodb_x509, and :plain.
|
38
|
-
#
|
41
|
+
# :mongodb_cr, :mongodb_x509, and :plain. Note that all authentication
|
42
|
+
# mechanisms require username and password, with the exception of :mongodb_x509.
|
43
|
+
# Default on mongoDB 3.0 is :scram, default on 2.4 and 2.6 is :plain.
|
39
44
|
# auth_mech: :scram
|
40
45
|
|
41
|
-
# The database or source to authenticate the user against.
|
46
|
+
# The database or source to authenticate the user against.
|
47
|
+
# (default: the database specified above or admin)
|
42
48
|
# auth_source: admin
|
43
49
|
|
44
50
|
# Force a the driver cluster to behave in a certain manner instead of auto-
|
@@ -120,6 +126,10 @@ development:
|
|
120
126
|
# existing method. (default: false)
|
121
127
|
# scope_overwrite_exception: false
|
122
128
|
|
129
|
+
# Raise an error when defining a field with the same name as an
|
130
|
+
# existing method. (default: false)
|
131
|
+
# duplicate_fields_exception: false
|
132
|
+
|
123
133
|
# Use Active Support's time zone in conversions. (default: true)
|
124
134
|
# use_activesupport_time_zone: true
|
125
135
|
|
@@ -131,6 +141,11 @@ development:
|
|
131
141
|
# otherwise.(default: :info)
|
132
142
|
# log_level: :info
|
133
143
|
|
144
|
+
# Control whether `belongs_to` association is required. By default
|
145
|
+
# `belongs_to` will trigger a validation error if the association
|
146
|
+
# is not present. (default: true)
|
147
|
+
# belongs_to_required_by_default: true
|
148
|
+
|
134
149
|
# Application name that is printed to the mongodb logs upon establishing a
|
135
150
|
# connection in server versions >= 3.4. Note that the name cannot exceed 128 bytes.
|
136
151
|
# app_name: MyApplicationName
|
data/spec/app/models/agent.rb
CHANGED
data/spec/app/models/album.rb
CHANGED
data/spec/app/models/artist.rb
CHANGED
@@ -13,16 +13,37 @@ class Artist
|
|
13
13
|
after_create :create_songs
|
14
14
|
before_save :before_save_stub
|
15
15
|
before_destroy :before_destroy_stub
|
16
|
+
before_update :before_update_stub
|
16
17
|
|
17
18
|
protected
|
18
19
|
def before_create_stub
|
19
20
|
true
|
20
21
|
end
|
21
22
|
|
23
|
+
def before_update_stub
|
24
|
+
true
|
25
|
+
end
|
26
|
+
|
27
|
+
def before_update_fail_stub
|
28
|
+
throw(:abort)
|
29
|
+
end
|
30
|
+
|
31
|
+
def before_save_fail_stub
|
32
|
+
throw(:abort)
|
33
|
+
end
|
34
|
+
|
35
|
+
def before_create_fail_stub
|
36
|
+
throw(:abort)
|
37
|
+
end
|
38
|
+
|
22
39
|
def before_save_stub
|
23
40
|
true
|
24
41
|
end
|
25
42
|
|
43
|
+
def before_destroy_fail_stub
|
44
|
+
throw(:abort)
|
45
|
+
end
|
46
|
+
|
26
47
|
def before_destroy_stub
|
27
48
|
true
|
28
49
|
end
|
data/spec/app/models/band.rb
CHANGED
@@ -20,8 +20,11 @@ class Band
|
|
20
20
|
|
21
21
|
embeds_many :records, cascade_callbacks: true
|
22
22
|
embeds_many :notes, as: :noteable, cascade_callbacks: true, validate: false
|
23
|
+
embeds_many :labels
|
23
24
|
embeds_one :label, cascade_callbacks: true
|
24
25
|
|
26
|
+
has_many :same_name, class_name: 'Agent', inverse_of: :same_name
|
27
|
+
|
25
28
|
after_upsert do |doc|
|
26
29
|
doc.upserted = true
|
27
30
|
end
|
data/spec/app/models/book.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
class Book
|
2
2
|
include Mongoid::Document
|
3
3
|
include Mongoid::Attributes::Dynamic
|
4
|
+
include Mongoid::Timestamps
|
4
5
|
field :title, type: String
|
5
6
|
field :chapters, type: Integer
|
6
7
|
belongs_to :series
|
@@ -11,5 +12,5 @@ class Book
|
|
11
12
|
doc.chapters = 5
|
12
13
|
end
|
13
14
|
|
14
|
-
embeds_many :pages
|
15
|
+
embeds_many :pages, cascade_callbacks: true
|
15
16
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
class DelegatingPatient
|
5
|
+
include Mongoid::Document
|
6
|
+
|
7
|
+
embeds_one :email
|
8
|
+
|
9
|
+
# Instance level delegation
|
10
|
+
delegate :address, to: :email
|
11
|
+
|
12
|
+
class << self
|
13
|
+
# Class level delegation
|
14
|
+
delegate :default_client, to: ::Mongoid
|
15
|
+
end
|
16
|
+
end
|
data/spec/app/models/dokument.rb
CHANGED
data/spec/app/models/oscar.rb
CHANGED
data/spec/app/models/page.rb
CHANGED
data/spec/app/models/person.rb
CHANGED
@@ -36,6 +36,7 @@ class Person
|
|
36
36
|
field :overridden_setter, type: String
|
37
37
|
field :arrays, type: Array
|
38
38
|
field :range, type: Range
|
39
|
+
field :species, type: Symbol
|
39
40
|
|
40
41
|
index age: 1
|
41
42
|
index addresses: 1
|
@@ -43,8 +44,6 @@ class Person
|
|
43
44
|
index name: 1
|
44
45
|
index title: 1
|
45
46
|
|
46
|
-
index({ ssn: 1 }, { unique: true })
|
47
|
-
|
48
47
|
attr_reader :rescored
|
49
48
|
|
50
49
|
embeds_many :favorites, order: :title.desc, inverse_of: :perp, validate: false
|
@@ -134,7 +133,8 @@ class Person
|
|
134
133
|
self.score_without_rescoring = score
|
135
134
|
end
|
136
135
|
|
137
|
-
|
136
|
+
alias_method :score_without_rescoring=, :score=
|
137
|
+
alias_method :score=, :score_with_rescoring=
|
138
138
|
|
139
139
|
def update_addresses
|
140
140
|
addresses.each do |address|
|
data/spec/app/models/princess.rb
CHANGED
data/spec/app/models/record.rb
CHANGED
data/spec/app/models/thing.rb
CHANGED
data/spec/config/mongoid.yml
CHANGED
@@ -17,6 +17,10 @@ test:
|
|
17
17
|
database: reports
|
18
18
|
hosts:
|
19
19
|
- <%=ENV["MONGOID_SPEC_HOST"]%>:<%=ENV["MONGOID_SPEC_PORT"]%>
|
20
|
+
options:
|
21
|
+
user: "mongoid-user"
|
22
|
+
password: "password"
|
23
|
+
auth_source: "admin"
|
20
24
|
options:
|
21
25
|
include_root_in_json: false
|
22
26
|
include_type_for_serialization: false
|
@@ -26,4 +30,15 @@ test:
|
|
26
30
|
use_activesupport_time_zone: true
|
27
31
|
use_utc: false
|
28
32
|
log_level: :warn
|
33
|
+
belongs_to_required_by_default: false
|
29
34
|
app_name: 'testing'
|
35
|
+
test_with_max_staleness:
|
36
|
+
clients:
|
37
|
+
default:
|
38
|
+
database: mongoid_test
|
39
|
+
hosts:
|
40
|
+
- <%=ENV["MONGOID_SPEC_HOST"]%>:<%=ENV["MONGOID_SPEC_PORT"]%>
|
41
|
+
options:
|
42
|
+
read:
|
43
|
+
mode: :primary_preferred
|
44
|
+
max_staleness: 100
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
require 'spec_helper'
|
5
|
+
|
6
|
+
describe Mongoid::Document do
|
7
|
+
context 'when including class uses delegate' do
|
8
|
+
let(:patient) do
|
9
|
+
DelegatingPatient.new(
|
10
|
+
email: Email.new(address: 'test@example.com'),
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'works for instance level delegation' do
|
15
|
+
patient.address.should == 'test@example.com'
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'works for class level delegation' do
|
19
|
+
DelegatingPatient.default_client.should be Mongoid.default_client
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -212,7 +212,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
212
212
|
it "adds the push all modifiers" do
|
213
213
|
expect(modifiers).to eq(
|
214
214
|
{ "$push" =>
|
215
|
-
|
215
|
+
{ "addresses" => { '$each' => [
|
216
216
|
{ "street" => "Oxford St" }
|
217
217
|
] }
|
218
218
|
}
|
@@ -300,7 +300,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
300
300
|
expect(modifiers).to eq(
|
301
301
|
{ "$pullAll" => {
|
302
302
|
"addresses" => { "street" => "Bond St" }},
|
303
|
-
conflicts: { "$push" =>
|
303
|
+
conflicts: { "$push" =>
|
304
304
|
{ "addresses" => { '$each' => [
|
305
305
|
{ "street" => "Oxford St" }
|
306
306
|
] }
|
@@ -329,7 +329,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
329
329
|
it "adds the push all modifiers to the conflicts hash" do
|
330
330
|
expect(modifiers).to eq(
|
331
331
|
{ "$push" => {
|
332
|
-
"addresses.0.locations" => {'$each' => [{ "street" => "Bond St" }]}},
|
332
|
+
"addresses.0.locations" => { '$each' => [{ "street" => "Bond St" }] } },
|
333
333
|
conflicts: { "$push" =>
|
334
334
|
{ "addresses" => { '$each' => [
|
335
335
|
{ "street" => "Oxford St" }
|
data/spec/mongoid/atomic_spec.rb
CHANGED
@@ -76,13 +76,13 @@ describe Mongoid::Atomic do
|
|
76
76
|
person.addresses.build(street: "Oxford St")
|
77
77
|
end
|
78
78
|
|
79
|
-
it "returns a $set and $push
|
79
|
+
it "returns a $set and $push for modifications" do
|
80
80
|
expect(person.atomic_updates).to eq(
|
81
81
|
{
|
82
82
|
"$set" => { "title" => "Sir" },
|
83
|
-
"$push" => { "addresses" => {'$each' => [
|
83
|
+
"$push" => { "addresses" => { '$each' => [
|
84
84
|
{ "_id" => "oxford-st", "street" => "Oxford St" }
|
85
|
-
]
|
85
|
+
]} }
|
86
86
|
}
|
87
87
|
)
|
88
88
|
end
|
@@ -339,14 +339,14 @@ describe Mongoid::Atomic do
|
|
339
339
|
address.locations.build(name: "Home")
|
340
340
|
end
|
341
341
|
|
342
|
-
it "returns the proper $sets and $
|
342
|
+
it "returns the proper $sets and $pushes for all levels" do
|
343
343
|
expect(person.atomic_updates).to eq(
|
344
344
|
{
|
345
345
|
"$set" => {
|
346
346
|
"title" => "Sir",
|
347
347
|
},
|
348
348
|
"$push" => {
|
349
|
-
"addresses" => {
|
349
|
+
"addresses" => { '$each' => [{
|
350
350
|
"_id" => address.id,
|
351
351
|
"street" => "Another",
|
352
352
|
"locations" => [
|
@@ -205,6 +205,10 @@ describe Mongoid::Attributes::Nested do
|
|
205
205
|
Post.accepts_nested_attributes_for :person
|
206
206
|
end
|
207
207
|
|
208
|
+
after do
|
209
|
+
Post.reset_callbacks(:save)
|
210
|
+
end
|
211
|
+
|
208
212
|
let(:post) do
|
209
213
|
Post.new(person_attributes: { title: "Sir" })
|
210
214
|
end
|
@@ -1335,7 +1339,7 @@ describe Mongoid::Attributes::Nested do
|
|
1335
1339
|
expect {
|
1336
1340
|
person.addresses_attributes =
|
1337
1341
|
{ "foo" => { "id" => "test", "street" => "Test" } }
|
1338
|
-
}.to raise_error
|
1342
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
1339
1343
|
end
|
1340
1344
|
end
|
1341
1345
|
end
|
@@ -1434,7 +1438,7 @@ describe Mongoid::Attributes::Nested do
|
|
1434
1438
|
Person.create(age: 42)
|
1435
1439
|
end
|
1436
1440
|
|
1437
|
-
context "when the child
|
1441
|
+
context "when the child halts the callback chain in a before callback" do
|
1438
1442
|
|
1439
1443
|
context "when the child is not paranoid" do
|
1440
1444
|
|
@@ -1970,7 +1974,7 @@ describe Mongoid::Attributes::Nested do
|
|
1970
1974
|
}
|
1971
1975
|
end
|
1972
1976
|
|
1973
|
-
it "ignores the
|
1977
|
+
it "ignores the marked document" do
|
1974
1978
|
expect(person.addresses.size).to eq(1)
|
1975
1979
|
end
|
1976
1980
|
|
@@ -2031,7 +2035,7 @@ describe Mongoid::Attributes::Nested do
|
|
2031
2035
|
}
|
2032
2036
|
end
|
2033
2037
|
|
2034
|
-
it "adds the
|
2038
|
+
it "adds the marked document" do
|
2035
2039
|
expect(person.addresses.first.street).to eq("Maybachufer")
|
2036
2040
|
end
|
2037
2041
|
|
@@ -2091,7 +2095,7 @@ describe Mongoid::Attributes::Nested do
|
|
2091
2095
|
}
|
2092
2096
|
end
|
2093
2097
|
|
2094
|
-
it "adds the
|
2098
|
+
it "adds the marked document" do
|
2095
2099
|
expect(person.addresses.first.street).to eq("Maybachufer")
|
2096
2100
|
end
|
2097
2101
|
|
@@ -3028,7 +3032,7 @@ describe Mongoid::Attributes::Nested do
|
|
3028
3032
|
expect {
|
3029
3033
|
person.posts_attributes =
|
3030
3034
|
{ "foo" => { "id" => "test", "title" => "Test" } }
|
3031
|
-
}.to raise_error
|
3035
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
3032
3036
|
end
|
3033
3037
|
end
|
3034
3038
|
end
|
@@ -3431,7 +3435,7 @@ describe Mongoid::Attributes::Nested do
|
|
3431
3435
|
}
|
3432
3436
|
end
|
3433
3437
|
|
3434
|
-
it "ignores the
|
3438
|
+
it "ignores the marked document" do
|
3435
3439
|
expect(person.posts.size).to eq(1)
|
3436
3440
|
end
|
3437
3441
|
|
@@ -3492,7 +3496,7 @@ describe Mongoid::Attributes::Nested do
|
|
3492
3496
|
}
|
3493
3497
|
end
|
3494
3498
|
|
3495
|
-
it "adds the
|
3499
|
+
it "adds the marked document" do
|
3496
3500
|
expect(person.posts.first.title).to eq("New Blog")
|
3497
3501
|
end
|
3498
3502
|
|
@@ -3552,7 +3556,7 @@ describe Mongoid::Attributes::Nested do
|
|
3552
3556
|
}
|
3553
3557
|
end
|
3554
3558
|
|
3555
|
-
it "adds the
|
3559
|
+
it "adds the marked document" do
|
3556
3560
|
expect(person.posts.first.title).to eq("New Blog")
|
3557
3561
|
end
|
3558
3562
|
|
@@ -3745,7 +3749,7 @@ describe Mongoid::Attributes::Nested do
|
|
3745
3749
|
expect {
|
3746
3750
|
person.preferences_attributes =
|
3747
3751
|
{ "foo" => { "id" => "test", "name" => "Test" } }
|
3748
|
-
}.to raise_error
|
3752
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
3749
3753
|
end
|
3750
3754
|
end
|
3751
3755
|
end
|
@@ -4097,7 +4101,7 @@ describe Mongoid::Attributes::Nested do
|
|
4097
4101
|
}
|
4098
4102
|
end
|
4099
4103
|
|
4100
|
-
it "ignores the
|
4104
|
+
it "ignores the marked document" do
|
4101
4105
|
expect(person.preferences.size).to eq(1)
|
4102
4106
|
end
|
4103
4107
|
|
@@ -4158,7 +4162,7 @@ describe Mongoid::Attributes::Nested do
|
|
4158
4162
|
}
|
4159
4163
|
end
|
4160
4164
|
|
4161
|
-
it "adds the
|
4165
|
+
it "adds the marked document" do
|
4162
4166
|
expect(person.preferences.first.name).to eq("New Blog")
|
4163
4167
|
end
|
4164
4168
|
|
@@ -4218,7 +4222,7 @@ describe Mongoid::Attributes::Nested do
|
|
4218
4222
|
}
|
4219
4223
|
end
|
4220
4224
|
|
4221
|
-
it "adds the
|
4225
|
+
it "adds the marked document" do
|
4222
4226
|
expect(person.preferences.first.name).to eq("New Blog")
|
4223
4227
|
end
|
4224
4228
|
|
@@ -4852,7 +4856,7 @@ describe Mongoid::Attributes::Nested do
|
|
4852
4856
|
end
|
4853
4857
|
|
4854
4858
|
it "the update raises an error" do
|
4855
|
-
expect{ error_raising_update }.to raise_error
|
4859
|
+
expect{ error_raising_update }.to raise_error(Mongoid::Errors::Validations)
|
4856
4860
|
end
|
4857
4861
|
|
4858
4862
|
it "the update does not occur" do
|