mongoid 9.1.0 → 9.1.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.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/lib/config/locales/en.yml +49 -0
  3. data/lib/mongoid/association/accessors.rb +9 -1
  4. data/lib/mongoid/association/depending.rb +14 -10
  5. data/lib/mongoid/association/eager.rb +9 -0
  6. data/lib/mongoid/association/eager_load/discriminated_inclusion.rb +88 -0
  7. data/lib/mongoid/association/eager_load/embedded_distributor.rb +151 -0
  8. data/lib/mongoid/association/eager_load/inclusion.rb +173 -0
  9. data/lib/mongoid/association/eager_load/inclusion_tree.rb +96 -0
  10. data/lib/mongoid/association/eager_load/lookup_pipeline.rb +121 -0
  11. data/lib/mongoid/association/eager_load/polymorphic_preloader.rb +61 -0
  12. data/lib/mongoid/association/eager_load/polymorphic_targets.rb +151 -0
  13. data/lib/mongoid/association/eager_loadable.rb +57 -100
  14. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +6 -1
  15. data/lib/mongoid/association/embedded/embeds_one.rb +1 -0
  16. data/lib/mongoid/association/macros.rb +13 -1
  17. data/lib/mongoid/association/nested/many.rb +34 -5
  18. data/lib/mongoid/association/nested/nested_buildable.rb +14 -0
  19. data/lib/mongoid/association/nested/one.rb +6 -1
  20. data/lib/mongoid/association/options.rb +17 -0
  21. data/lib/mongoid/association/referenced/belongs_to/eager.rb +6 -1
  22. data/lib/mongoid/association/referenced/belongs_to.rb +1 -0
  23. data/lib/mongoid/association/referenced/counter_cache.rb +3 -3
  24. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +5 -0
  25. data/lib/mongoid/association/referenced/has_many/enumerable.rb +3 -1
  26. data/lib/mongoid/association/referenced/has_many/proxy.rb +100 -1
  27. data/lib/mongoid/association/referenced/has_many_through/eager.rb +99 -0
  28. data/lib/mongoid/association/referenced/has_many_through/proxy.rb +68 -0
  29. data/lib/mongoid/association/referenced/has_many_through.rb +201 -0
  30. data/lib/mongoid/association/referenced/has_one.rb +1 -0
  31. data/lib/mongoid/association/referenced/has_one_through/eager.rb +65 -0
  32. data/lib/mongoid/association/referenced/has_one_through/proxy.rb +30 -0
  33. data/lib/mongoid/association/referenced/has_one_through.rb +167 -0
  34. data/lib/mongoid/association/referenced.rb +2 -0
  35. data/lib/mongoid/association/relatable.rb +40 -0
  36. data/lib/mongoid/association.rb +7 -0
  37. data/lib/mongoid/clients/factory.rb +7 -13
  38. data/lib/mongoid/collection_configurable.rb +8 -0
  39. data/lib/mongoid/config/defaults.rb +0 -1
  40. data/lib/mongoid/config/encryption.rb +36 -19
  41. data/lib/mongoid/config.rb +56 -5
  42. data/lib/mongoid/contextual/aggregable/memory.rb +6 -2
  43. data/lib/mongoid/contextual/memory.rb +18 -7
  44. data/lib/mongoid/criteria/includable.rb +35 -11
  45. data/lib/mongoid/criteria/queryable/mergeable.rb +4 -0
  46. data/lib/mongoid/criteria/queryable/selectable.rb +123 -7
  47. data/lib/mongoid/deprecable.rb +45 -2
  48. data/lib/mongoid/encryptable.rb +46 -0
  49. data/lib/mongoid/errors/config_redactor.rb +43 -0
  50. data/lib/mongoid/errors/in_memory_regexp_timeout.rb +26 -0
  51. data/lib/mongoid/errors/mixed_client_configuration.rb +1 -1
  52. data/lib/mongoid/errors/no_client_database.rb +1 -1
  53. data/lib/mongoid/errors/no_client_hosts.rb +1 -1
  54. data/lib/mongoid/errors/no_encryption_schema.rb +28 -0
  55. data/lib/mongoid/errors/readonly_association.rb +29 -0
  56. data/lib/mongoid/errors.rb +4 -0
  57. data/lib/mongoid/extensions/vector.rb +64 -0
  58. data/lib/mongoid/extensions.rb +1 -0
  59. data/lib/mongoid/field_readable.rb +69 -0
  60. data/lib/mongoid/indexable.rb +38 -26
  61. data/lib/mongoid/matchable.rb +6 -1
  62. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +2 -4
  63. data/lib/mongoid/matcher/regex.rb +11 -12
  64. data/lib/mongoid/matcher/regexp_budget.rb +372 -0
  65. data/lib/mongoid/matcher.rb +1 -0
  66. data/lib/mongoid/persistable/creatable.rb +1 -1
  67. data/lib/mongoid/persistable/updatable.rb +9 -11
  68. data/lib/mongoid/persistence_context.rb +35 -0
  69. data/lib/mongoid/search_indexable.rb +64 -23
  70. data/lib/mongoid/serializable.rb +12 -4
  71. data/lib/mongoid/tasks/database.rb +23 -9
  72. data/lib/mongoid/threaded.rb +36 -0
  73. data/lib/mongoid/timestamps/timeless.rb +84 -10
  74. data/lib/mongoid/traversable.rb +2 -2
  75. data/lib/mongoid/validatable/associated.rb +18 -2
  76. data/lib/mongoid/version.rb +1 -1
  77. data/spec/integration/app_spec.rb +7 -1
  78. data/spec/integration/associations/belongs_to_spec.rb +13 -0
  79. data/spec/integration/associations/has_and_belongs_to_many_spec.rb +17 -2
  80. data/spec/integration/dots_and_dollars_spec.rb +12 -2
  81. data/spec/integration/encryption_spec.rb +151 -0
  82. data/spec/integration/matcher_operator_data/regex.yml +21 -0
  83. data/spec/integration/matcher_regexp_timeout_spec.rb +215 -0
  84. data/spec/integration/query_operator_guard_spec.rb +89 -0
  85. data/spec/mongoid/association/eager_loadable_spec.rb +47 -0
  86. data/spec/mongoid/association/eager_spec.rb +2 -2
  87. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +33 -0
  88. data/spec/mongoid/association/fallback_spec.rb +425 -0
  89. data/spec/mongoid/association/macros_spec.rb +26 -0
  90. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +17 -0
  91. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +48 -0
  92. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +50 -0
  93. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +33 -0
  94. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +145 -0
  95. data/spec/mongoid/association/referenced/has_many_through/eager_spec.rb +58 -0
  96. data/spec/mongoid/association/referenced/has_many_through/proxy_spec.rb +62 -0
  97. data/spec/mongoid/association/referenced/has_many_through_spec.rb +399 -0
  98. data/spec/mongoid/association/referenced/has_one_through/eager_spec.rb +58 -0
  99. data/spec/mongoid/association/referenced/has_one_through/proxy_spec.rb +49 -0
  100. data/spec/mongoid/association/referenced/has_one_through_spec.rb +211 -0
  101. data/spec/mongoid/attributes/nested_spec.rb +249 -8
  102. data/spec/mongoid/config/defaults_spec.rb +33 -0
  103. data/spec/mongoid/config/encryption_spec.rb +228 -0
  104. data/spec/mongoid/contextual/aggregable/memory_spec.rb +91 -0
  105. data/spec/mongoid/contextual/memory_spec.rb +177 -0
  106. data/spec/mongoid/criteria/includable_spec.rb +875 -0
  107. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +15 -1
  108. data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +201 -0
  109. data/spec/mongoid/criteria_spec.rb +3 -0
  110. data/spec/mongoid/encryptable_spec.rb +61 -0
  111. data/spec/mongoid/errors/config_redactor_spec.rb +112 -0
  112. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +31 -0
  113. data/spec/mongoid/errors/no_client_database_spec.rb +29 -0
  114. data/spec/mongoid/errors/no_client_hosts_spec.rb +26 -0
  115. data/spec/mongoid/errors/readonly_association_spec.rb +34 -0
  116. data/spec/mongoid/extensions/vector_spec.rb +175 -0
  117. data/spec/mongoid/matcher/regexp_budget_spec.rb +570 -0
  118. data/spec/mongoid/search_indexable_spec.rb +295 -9
  119. data/spec/mongoid/tasks/database_spec.rb +18 -0
  120. data/spec/mongoid/timestamps/timeless_spec.rb +197 -5
  121. data/spec/mongoid/touchable_spec.rb +25 -0
  122. data/spec/mongoid/touchable_spec_models.rb +10 -0
  123. data/spec/mongoid/validatable/associated_spec.rb +19 -0
  124. data/spec/spec_helper.rb +5 -1
  125. data/spec/support/crypt/models.rb +157 -0
  126. metadata +52 -2
data/spec/spec_helper.rb CHANGED
@@ -101,7 +101,11 @@ CONFIG = {
101
101
  heartbeat_frequency: 180,
102
102
  user: SpecConfig.instance.uri.client_options[:user] || MONGOID_ROOT_USER.name,
103
103
  password: SpecConfig.instance.uri.client_options[:password] || MONGOID_ROOT_USER.password,
104
- auth_source: Mongo::Database::ADMIN
104
+ auth_source: Mongo::Database::ADMIN,
105
+
106
+ # so that we can run an Atlas cluster locally, and run tests with Atlas
107
+ # support enabled.
108
+ direct_connection: SpecConfig.instance.uri.uri_options[:direct_connection]
105
109
  )
106
110
  }
107
111
  },
@@ -46,4 +46,161 @@ module Crypt
46
46
  field :vin, type: String, encrypt: true
47
47
  field :make, type: String
48
48
  end
49
+
50
+ # An encrypted model whose database name is a callable resolving to a
51
+ # constant. The callable form of :database is supported by store_in, but the
52
+ # encryption schema map is keyed by namespace and built once, so this model's
53
+ # namespace is not known when the map is generated.
54
+ class DynamicCar
55
+ include Mongoid::Document
56
+
57
+ store_in database: -> { 'vehicles_dynamic' }
58
+
59
+ encrypt_with key_id: 'grolrnFVSSW9Gq04Q87R9Q==', deterministic: true
60
+
61
+ field :vin, type: String, encrypt: true
62
+ end
63
+
64
+ # An encrypted model using the documented multi-tenant idiom, where the
65
+ # database name is only known once a tenant is selected. There is no correct
66
+ # value to resolve at client construction time.
67
+ class TenantCar
68
+ include Mongoid::Document
69
+
70
+ # The fallback keeps this model usable by tasks that iterate every model,
71
+ # such as Mongoid::Tasks::Database.create_collections. Mongoid raises
72
+ # NoMethodError when a callable :database resolves to nil.
73
+ store_in database: -> { Thread.current[:tenant_database] || 'vehicles_no_tenant' }
74
+
75
+ encrypt_with key_id: 'grolrnFVSSW9Gq04Q87R9Q==', deterministic: true
76
+
77
+ field :vin, type: String, encrypt: true
78
+ end
79
+
80
+ # An encrypted model that is embedded by more than one parent, and more than
81
+ # once by the same parent.
82
+ class Token
83
+ include Mongoid::Document
84
+
85
+ field :value, type: String, encrypt: { deterministic: true }
86
+
87
+ embedded_in :tokenized, polymorphic: true
88
+ end
89
+
90
+ # A parent whose encrypted data lives entirely in an embedded model: it has
91
+ # no encrypted field of its own and no encrypt_with.
92
+ class Wallet
93
+ include Mongoid::Document
94
+
95
+ embeds_one :token, class_name: 'Crypt::Token', as: :tokenized
96
+ end
97
+
98
+ # Two parents embedding the same encrypted model.
99
+ class Vault
100
+ include Mongoid::Document
101
+
102
+ encrypt_with key_id: 'grolrnFVSSW9Gq04Q87R9Q=='
103
+
104
+ embeds_one :token, class_name: 'Crypt::Token', as: :tokenized
105
+ end
106
+
107
+ class Chest
108
+ include Mongoid::Document
109
+
110
+ encrypt_with key_id: 'grolrnFVSSW9Gq04Q87R9Q=='
111
+
112
+ embeds_one :token, class_name: 'Crypt::Token', as: :tokenized
113
+ end
114
+
115
+ # A parent embedding the same encrypted model through two relations.
116
+ class Ledger
117
+ include Mongoid::Document
118
+
119
+ encrypt_with key_id: 'grolrnFVSSW9Gq04Q87R9Q=='
120
+
121
+ embeds_one :primary_token, class_name: 'Crypt::Token', as: :tokenized
122
+ embeds_one :backup_token, class_name: 'Crypt::Token', as: :tokenized
123
+ end
124
+
125
+ # Three levels of nesting, where the middle level has no encrypted field of
126
+ # its own.
127
+ class Owner
128
+ include Mongoid::Document
129
+
130
+ encrypt_with key_id: 'grolrnFVSSW9Gq04Q87R9Q=='
131
+
132
+ embeds_one :account, class_name: 'Crypt::Account'
133
+ end
134
+
135
+ class Account
136
+ include Mongoid::Document
137
+
138
+ embedded_in :owner, class_name: 'Crypt::Owner'
139
+ embeds_one :credential, class_name: 'Crypt::Credential'
140
+ end
141
+
142
+ class Credential
143
+ include Mongoid::Document
144
+
145
+ field :secret, type: String, encrypt: { deterministic: true }
146
+
147
+ embedded_in :account, class_name: 'Crypt::Account'
148
+ end
149
+
150
+ # A model that embeds itself. The walk over embedded relations has to stop
151
+ # here, or generating the map never terminates.
152
+ class Comment
153
+ include Mongoid::Document
154
+
155
+ field :body, type: String, encrypt: { deterministic: true }
156
+
157
+ embedded_in :commentable, polymorphic: true
158
+ embeds_one :reply, class_name: 'Crypt::Comment', as: :commentable
159
+ end
160
+
161
+ class Article
162
+ include Mongoid::Document
163
+
164
+ encrypt_with key_id: 'grolrnFVSSW9Gq04Q87R9Q=='
165
+
166
+ embeds_one :comment, class_name: 'Crypt::Comment', as: :commentable
167
+ end
168
+
169
+ # A parent with no encrypted field of its own: the encrypted field lives on
170
+ # the embedded model. Used by the integration specs, so the embedded model
171
+ # carries a key id.
172
+ class Folder
173
+ include Mongoid::Document
174
+
175
+ embeds_one :note, class_name: 'Crypt::Note'
176
+ end
177
+
178
+ class Note
179
+ include Mongoid::Document
180
+
181
+ encrypt_with key_id: 'grolrnFVSSW9Gq04Q87R9Q==', deterministic: true
182
+
183
+ field :text, type: String, encrypt: true
184
+
185
+ embedded_in :folder, class_name: 'Crypt::Folder'
186
+ end
187
+
188
+ # A model naming an embedded class that is never defined. The association
189
+ # cannot be used, so nothing is ever embedded through it, but every model in
190
+ # the application is walked when the schema map is generated.
191
+ class Drawer
192
+ include Mongoid::Document
193
+
194
+ embeds_one :missing_note, class_name: 'Crypt::MissingNote'
195
+ end
196
+
197
+ # The same, on a model that is encrypted itself, so the walk descends into
198
+ # its relations.
199
+ class Cabinet
200
+ include Mongoid::Document
201
+
202
+ field :label, type: String, encrypt: { deterministic: true }
203
+
204
+ embeds_one :missing_note, class_name: 'Crypt::MissingNote'
205
+ end
49
206
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.1.0
4
+ version: 9.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - The MongoDB Ruby Team
@@ -129,6 +129,13 @@ files:
129
129
  - lib/mongoid/association/constrainable.rb
130
130
  - lib/mongoid/association/depending.rb
131
131
  - lib/mongoid/association/eager.rb
132
+ - lib/mongoid/association/eager_load/discriminated_inclusion.rb
133
+ - lib/mongoid/association/eager_load/embedded_distributor.rb
134
+ - lib/mongoid/association/eager_load/inclusion.rb
135
+ - lib/mongoid/association/eager_load/inclusion_tree.rb
136
+ - lib/mongoid/association/eager_load/lookup_pipeline.rb
137
+ - lib/mongoid/association/eager_load/polymorphic_preloader.rb
138
+ - lib/mongoid/association/eager_load/polymorphic_targets.rb
132
139
  - lib/mongoid/association/eager_loadable.rb
133
140
  - lib/mongoid/association/embedded.rb
134
141
  - lib/mongoid/association/embedded/batchable.rb
@@ -175,11 +182,17 @@ files:
175
182
  - lib/mongoid/association/referenced/has_many/eager.rb
176
183
  - lib/mongoid/association/referenced/has_many/enumerable.rb
177
184
  - lib/mongoid/association/referenced/has_many/proxy.rb
185
+ - lib/mongoid/association/referenced/has_many_through.rb
186
+ - lib/mongoid/association/referenced/has_many_through/eager.rb
187
+ - lib/mongoid/association/referenced/has_many_through/proxy.rb
178
188
  - lib/mongoid/association/referenced/has_one.rb
179
189
  - lib/mongoid/association/referenced/has_one/binding.rb
180
190
  - lib/mongoid/association/referenced/has_one/buildable.rb
181
191
  - lib/mongoid/association/referenced/has_one/eager.rb
182
192
  - lib/mongoid/association/referenced/has_one/proxy.rb
193
+ - lib/mongoid/association/referenced/has_one_through.rb
194
+ - lib/mongoid/association/referenced/has_one_through/eager.rb
195
+ - lib/mongoid/association/referenced/has_one_through/proxy.rb
183
196
  - lib/mongoid/association/referenced/syncable.rb
184
197
  - lib/mongoid/association/referenced/with_polymorphic_criteria.rb
185
198
  - lib/mongoid/association/reflections.rb
@@ -283,6 +296,7 @@ files:
283
296
  - lib/mongoid/errors/ambiguous_relationship.rb
284
297
  - lib/mongoid/errors/attribute_not_loaded.rb
285
298
  - lib/mongoid/errors/callback.rb
299
+ - lib/mongoid/errors/config_redactor.rb
286
300
  - lib/mongoid/errors/create_collection_failure.rb
287
301
  - lib/mongoid/errors/criteria_argument_required.rb
288
302
  - lib/mongoid/errors/delete_restriction.rb
@@ -292,6 +306,7 @@ files:
292
306
  - lib/mongoid/errors/empty_config_file.rb
293
307
  - lib/mongoid/errors/immutable_attribute.rb
294
308
  - lib/mongoid/errors/in_memory_collation_not_supported.rb
309
+ - lib/mongoid/errors/in_memory_regexp_timeout.rb
295
310
  - lib/mongoid/errors/invalid_around_callback.rb
296
311
  - lib/mongoid/errors/invalid_async_query_executor.rb
297
312
  - lib/mongoid/errors/invalid_auto_encryption_configuration.rb
@@ -335,10 +350,12 @@ files:
335
350
  - lib/mongoid/errors/no_client_hosts.rb
336
351
  - lib/mongoid/errors/no_clients_config.rb
337
352
  - lib/mongoid/errors/no_default_client.rb
353
+ - lib/mongoid/errors/no_encryption_schema.rb
338
354
  - lib/mongoid/errors/no_environment.rb
339
355
  - lib/mongoid/errors/no_map_reduce_output.rb
340
356
  - lib/mongoid/errors/no_metadata.rb
341
357
  - lib/mongoid/errors/no_parent.rb
358
+ - lib/mongoid/errors/readonly_association.rb
342
359
  - lib/mongoid/errors/readonly_attribute.rb
343
360
  - lib/mongoid/errors/readonly_document.rb
344
361
  - lib/mongoid/errors/rollback.rb
@@ -383,7 +400,9 @@ files:
383
400
  - lib/mongoid/extensions/time.rb
384
401
  - lib/mongoid/extensions/time_with_zone.rb
385
402
  - lib/mongoid/extensions/true_class.rb
403
+ - lib/mongoid/extensions/vector.rb
386
404
  - lib/mongoid/factory.rb
405
+ - lib/mongoid/field_readable.rb
387
406
  - lib/mongoid/fields.rb
388
407
  - lib/mongoid/fields/encrypted.rb
389
408
  - lib/mongoid/fields/foreign_key.rb
@@ -431,6 +450,7 @@ files:
431
450
  - lib/mongoid/matcher/not.rb
432
451
  - lib/mongoid/matcher/or.rb
433
452
  - lib/mongoid/matcher/regex.rb
453
+ - lib/mongoid/matcher/regexp_budget.rb
434
454
  - lib/mongoid/matcher/size.rb
435
455
  - lib/mongoid/matcher/type.rb
436
456
  - lib/mongoid/model_resolver.rb
@@ -602,9 +622,11 @@ files:
602
622
  - spec/integration/matcher_operator_data/type_timestamp.yml
603
623
  - spec/integration/matcher_operator_data/type_undefined.yml
604
624
  - spec/integration/matcher_operator_spec.rb
625
+ - spec/integration/matcher_regexp_timeout_spec.rb
605
626
  - spec/integration/matcher_spec.rb
606
627
  - spec/integration/persistence/collection_options_spec.rb
607
628
  - spec/integration/persistence/range_field_spec.rb
629
+ - spec/integration/query_operator_guard_spec.rb
608
630
  - spec/integration/server_query_spec.rb
609
631
  - spec/integration/shardable_spec.rb
610
632
  - spec/integration/stringified_symbol_field_spec.rb
@@ -615,6 +637,7 @@ files:
615
637
  - spec/mongoid/association/constrainable_spec.rb
616
638
  - spec/mongoid/association/counter_cache_spec.rb
617
639
  - spec/mongoid/association/depending_spec.rb
640
+ - spec/mongoid/association/eager_loadable_spec.rb
618
641
  - spec/mongoid/association/eager_spec.rb
619
642
  - spec/mongoid/association/embedded/cyclic_spec.rb
620
643
  - spec/mongoid/association/embedded/dirty_spec.rb
@@ -635,6 +658,7 @@ files:
635
658
  - spec/mongoid/association/embedded/embeds_one_models.rb
636
659
  - spec/mongoid/association/embedded/embeds_one_query_spec.rb
637
660
  - spec/mongoid/association/embedded/embeds_one_spec.rb
661
+ - spec/mongoid/association/fallback_spec.rb
638
662
  - spec/mongoid/association/macros_spec.rb
639
663
  - spec/mongoid/association/nested/many_spec.rb
640
664
  - spec/mongoid/association/nested/one_spec.rb
@@ -664,6 +688,9 @@ files:
664
688
  - spec/mongoid/association/referenced/has_many_models.rb
665
689
  - spec/mongoid/association/referenced/has_many_query_spec.rb
666
690
  - spec/mongoid/association/referenced/has_many_spec.rb
691
+ - spec/mongoid/association/referenced/has_many_through/eager_spec.rb
692
+ - spec/mongoid/association/referenced/has_many_through/proxy_spec.rb
693
+ - spec/mongoid/association/referenced/has_many_through_spec.rb
667
694
  - spec/mongoid/association/referenced/has_one/binding_spec.rb
668
695
  - spec/mongoid/association/referenced/has_one/buildable_spec.rb
669
696
  - spec/mongoid/association/referenced/has_one/eager_spec.rb
@@ -671,6 +698,9 @@ files:
671
698
  - spec/mongoid/association/referenced/has_one_models.rb
672
699
  - spec/mongoid/association/referenced/has_one_query_spec.rb
673
700
  - spec/mongoid/association/referenced/has_one_spec.rb
701
+ - spec/mongoid/association/referenced/has_one_through/eager_spec.rb
702
+ - spec/mongoid/association/referenced/has_one_through/proxy_spec.rb
703
+ - spec/mongoid/association/referenced/has_one_through_spec.rb
674
704
  - spec/mongoid/association/reflections_spec.rb
675
705
  - spec/mongoid/association/syncable_spec.rb
676
706
  - spec/mongoid/association_spec.rb
@@ -770,10 +800,12 @@ files:
770
800
  - spec/mongoid/document_persistence_context_spec.rb
771
801
  - spec/mongoid/document_query_spec.rb
772
802
  - spec/mongoid/document_spec.rb
803
+ - spec/mongoid/encryptable_spec.rb
773
804
  - spec/mongoid/equality_spec.rb
774
805
  - spec/mongoid/errors/ambiguous_relationship_spec.rb
775
806
  - spec/mongoid/errors/attribute_not_loaded_spec.rb
776
807
  - spec/mongoid/errors/callback_spec.rb
808
+ - spec/mongoid/errors/config_redactor_spec.rb
777
809
  - spec/mongoid/errors/delete_restriction_spec.rb
778
810
  - spec/mongoid/errors/document_not_destroyed_spec.rb
779
811
  - spec/mongoid/errors/document_not_found_spec.rb
@@ -806,6 +838,7 @@ files:
806
838
  - spec/mongoid/errors/no_map_reduce_output_spec.rb
807
839
  - spec/mongoid/errors/no_metadata_spec.rb
808
840
  - spec/mongoid/errors/no_parent_spec.rb
841
+ - spec/mongoid/errors/readonly_association_spec.rb
809
842
  - spec/mongoid/errors/readonly_attribute_spec.rb
810
843
  - spec/mongoid/errors/readonly_document_spec.rb
811
844
  - spec/mongoid/errors/scope_overwrite_spec.rb
@@ -840,6 +873,7 @@ files:
840
873
  - spec/mongoid/extensions/time_spec.rb
841
874
  - spec/mongoid/extensions/time_with_zone_spec.rb
842
875
  - spec/mongoid/extensions/true_class_spec.rb
876
+ - spec/mongoid/extensions/vector_spec.rb
843
877
  - spec/mongoid/factory_spec.rb
844
878
  - spec/mongoid/fields/foreign_key_spec.rb
845
879
  - spec/mongoid/fields/localized_spec.rb
@@ -857,6 +891,7 @@ files:
857
891
  - spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml
858
892
  - spec/mongoid/matcher/extract_attribute_data/traversal.yml
859
893
  - spec/mongoid/matcher/extract_attribute_spec.rb
894
+ - spec/mongoid/matcher/regexp_budget_spec.rb
860
895
  - spec/mongoid/model_resolver_spec.rb
861
896
  - spec/mongoid/mongoizable_spec.rb
862
897
  - spec/mongoid/monkey_patches_spec.rb
@@ -1252,7 +1287,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1252
1287
  - !ruby/object:Gem::Version
1253
1288
  version: 1.3.6
1254
1289
  requirements: []
1255
- rubygems_version: 4.0.11
1290
+ rubygems_version: 4.0.21
1256
1291
  specification_version: 4
1257
1292
  summary: Elegant Persistence in Ruby for MongoDB.
1258
1293
  test_files:
@@ -1355,9 +1390,11 @@ test_files:
1355
1390
  - spec/integration/matcher_operator_data/type_timestamp.yml
1356
1391
  - spec/integration/matcher_operator_data/type_undefined.yml
1357
1392
  - spec/integration/matcher_operator_spec.rb
1393
+ - spec/integration/matcher_regexp_timeout_spec.rb
1358
1394
  - spec/integration/matcher_spec.rb
1359
1395
  - spec/integration/persistence/collection_options_spec.rb
1360
1396
  - spec/integration/persistence/range_field_spec.rb
1397
+ - spec/integration/query_operator_guard_spec.rb
1361
1398
  - spec/integration/server_query_spec.rb
1362
1399
  - spec/integration/shardable_spec.rb
1363
1400
  - spec/integration/stringified_symbol_field_spec.rb
@@ -1368,6 +1405,7 @@ test_files:
1368
1405
  - spec/mongoid/association/constrainable_spec.rb
1369
1406
  - spec/mongoid/association/counter_cache_spec.rb
1370
1407
  - spec/mongoid/association/depending_spec.rb
1408
+ - spec/mongoid/association/eager_loadable_spec.rb
1371
1409
  - spec/mongoid/association/eager_spec.rb
1372
1410
  - spec/mongoid/association/embedded/cyclic_spec.rb
1373
1411
  - spec/mongoid/association/embedded/dirty_spec.rb
@@ -1388,6 +1426,7 @@ test_files:
1388
1426
  - spec/mongoid/association/embedded/embeds_one_models.rb
1389
1427
  - spec/mongoid/association/embedded/embeds_one_query_spec.rb
1390
1428
  - spec/mongoid/association/embedded/embeds_one_spec.rb
1429
+ - spec/mongoid/association/fallback_spec.rb
1391
1430
  - spec/mongoid/association/macros_spec.rb
1392
1431
  - spec/mongoid/association/nested/many_spec.rb
1393
1432
  - spec/mongoid/association/nested/one_spec.rb
@@ -1417,6 +1456,9 @@ test_files:
1417
1456
  - spec/mongoid/association/referenced/has_many_models.rb
1418
1457
  - spec/mongoid/association/referenced/has_many_query_spec.rb
1419
1458
  - spec/mongoid/association/referenced/has_many_spec.rb
1459
+ - spec/mongoid/association/referenced/has_many_through/eager_spec.rb
1460
+ - spec/mongoid/association/referenced/has_many_through/proxy_spec.rb
1461
+ - spec/mongoid/association/referenced/has_many_through_spec.rb
1420
1462
  - spec/mongoid/association/referenced/has_one/binding_spec.rb
1421
1463
  - spec/mongoid/association/referenced/has_one/buildable_spec.rb
1422
1464
  - spec/mongoid/association/referenced/has_one/eager_spec.rb
@@ -1424,6 +1466,9 @@ test_files:
1424
1466
  - spec/mongoid/association/referenced/has_one_models.rb
1425
1467
  - spec/mongoid/association/referenced/has_one_query_spec.rb
1426
1468
  - spec/mongoid/association/referenced/has_one_spec.rb
1469
+ - spec/mongoid/association/referenced/has_one_through/eager_spec.rb
1470
+ - spec/mongoid/association/referenced/has_one_through/proxy_spec.rb
1471
+ - spec/mongoid/association/referenced/has_one_through_spec.rb
1427
1472
  - spec/mongoid/association/reflections_spec.rb
1428
1473
  - spec/mongoid/association/syncable_spec.rb
1429
1474
  - spec/mongoid/association_spec.rb
@@ -1523,10 +1568,12 @@ test_files:
1523
1568
  - spec/mongoid/document_persistence_context_spec.rb
1524
1569
  - spec/mongoid/document_query_spec.rb
1525
1570
  - spec/mongoid/document_spec.rb
1571
+ - spec/mongoid/encryptable_spec.rb
1526
1572
  - spec/mongoid/equality_spec.rb
1527
1573
  - spec/mongoid/errors/ambiguous_relationship_spec.rb
1528
1574
  - spec/mongoid/errors/attribute_not_loaded_spec.rb
1529
1575
  - spec/mongoid/errors/callback_spec.rb
1576
+ - spec/mongoid/errors/config_redactor_spec.rb
1530
1577
  - spec/mongoid/errors/delete_restriction_spec.rb
1531
1578
  - spec/mongoid/errors/document_not_destroyed_spec.rb
1532
1579
  - spec/mongoid/errors/document_not_found_spec.rb
@@ -1559,6 +1606,7 @@ test_files:
1559
1606
  - spec/mongoid/errors/no_map_reduce_output_spec.rb
1560
1607
  - spec/mongoid/errors/no_metadata_spec.rb
1561
1608
  - spec/mongoid/errors/no_parent_spec.rb
1609
+ - spec/mongoid/errors/readonly_association_spec.rb
1562
1610
  - spec/mongoid/errors/readonly_attribute_spec.rb
1563
1611
  - spec/mongoid/errors/readonly_document_spec.rb
1564
1612
  - spec/mongoid/errors/scope_overwrite_spec.rb
@@ -1593,6 +1641,7 @@ test_files:
1593
1641
  - spec/mongoid/extensions/time_spec.rb
1594
1642
  - spec/mongoid/extensions/time_with_zone_spec.rb
1595
1643
  - spec/mongoid/extensions/true_class_spec.rb
1644
+ - spec/mongoid/extensions/vector_spec.rb
1596
1645
  - spec/mongoid/factory_spec.rb
1597
1646
  - spec/mongoid/fields/foreign_key_spec.rb
1598
1647
  - spec/mongoid/fields/localized_spec.rb
@@ -1610,6 +1659,7 @@ test_files:
1610
1659
  - spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml
1611
1660
  - spec/mongoid/matcher/extract_attribute_data/traversal.yml
1612
1661
  - spec/mongoid/matcher/extract_attribute_spec.rb
1662
+ - spec/mongoid/matcher/regexp_budget_spec.rb
1613
1663
  - spec/mongoid/model_resolver_spec.rb
1614
1664
  - spec/mongoid/mongoizable_spec.rb
1615
1665
  - spec/mongoid/monkey_patches_spec.rb