mongoid 8.0.7 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +3 -3
  4. data/README.md +3 -3
  5. data/Rakefile +0 -25
  6. data/lib/config/locales/en.yml +46 -14
  7. data/lib/mongoid/association/accessors.rb +2 -2
  8. data/lib/mongoid/association/builders.rb +1 -1
  9. data/lib/mongoid/association/embedded/batchable.rb +2 -2
  10. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +2 -2
  11. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +2 -1
  12. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +3 -2
  13. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +6 -6
  14. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +1 -1
  15. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +1 -1
  16. data/lib/mongoid/association/macros.rb +0 -6
  17. data/lib/mongoid/association/nested/one.rb +40 -2
  18. data/lib/mongoid/association/proxy.rb +1 -1
  19. data/lib/mongoid/association/referenced/counter_cache.rb +2 -2
  20. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
  21. data/lib/mongoid/association/referenced/has_many/enumerable.rb +2 -2
  22. data/lib/mongoid/association/referenced/has_many/proxy.rb +3 -3
  23. data/lib/mongoid/association/reflections.rb +2 -2
  24. data/lib/mongoid/atomic.rb +0 -7
  25. data/lib/mongoid/attributes/dynamic.rb +1 -1
  26. data/lib/mongoid/attributes/nested.rb +2 -2
  27. data/lib/mongoid/attributes/processing.rb +5 -29
  28. data/lib/mongoid/attributes/projector.rb +1 -1
  29. data/lib/mongoid/attributes/readonly.rb +1 -1
  30. data/lib/mongoid/attributes.rb +8 -2
  31. data/lib/mongoid/changeable.rb +107 -5
  32. data/lib/mongoid/clients/storage_options.rb +2 -5
  33. data/lib/mongoid/clients/validators/storage.rb +1 -13
  34. data/lib/mongoid/collection_configurable.rb +58 -0
  35. data/lib/mongoid/composable.rb +2 -0
  36. data/lib/mongoid/config/defaults.rb +60 -0
  37. data/lib/mongoid/config/options.rb +0 -3
  38. data/lib/mongoid/config/validators/async_query_executor.rb +24 -0
  39. data/lib/mongoid/config/validators.rb +1 -0
  40. data/lib/mongoid/config.rb +99 -28
  41. data/lib/mongoid/contextual/atomic.rb +1 -1
  42. data/lib/mongoid/contextual/memory.rb +233 -33
  43. data/lib/mongoid/contextual/mongo/documents_loader.rb +177 -0
  44. data/lib/mongoid/contextual/mongo.rb +370 -133
  45. data/lib/mongoid/contextual/none.rb +162 -7
  46. data/lib/mongoid/contextual.rb +12 -0
  47. data/lib/mongoid/criteria/findable.rb +2 -2
  48. data/lib/mongoid/criteria/includable.rb +4 -3
  49. data/lib/mongoid/criteria/queryable/key.rb +1 -1
  50. data/lib/mongoid/criteria/queryable/mergeable.rb +1 -1
  51. data/lib/mongoid/criteria/queryable/optional.rb +8 -8
  52. data/lib/mongoid/criteria/queryable/selectable.rb +43 -12
  53. data/lib/mongoid/criteria/queryable/selector.rb +1 -1
  54. data/lib/mongoid/criteria/queryable/storable.rb +1 -1
  55. data/lib/mongoid/criteria.rb +6 -5
  56. data/lib/mongoid/deprecable.rb +1 -2
  57. data/lib/mongoid/deprecation.rb +3 -3
  58. data/lib/mongoid/errors/create_collection_failure.rb +33 -0
  59. data/lib/mongoid/errors/drop_collection_failure.rb +27 -0
  60. data/lib/mongoid/errors/immutable_attribute.rb +26 -0
  61. data/lib/mongoid/errors/invalid_async_query_executor.rb +25 -0
  62. data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +22 -0
  63. data/lib/mongoid/errors/invalid_storage_parent.rb +2 -0
  64. data/lib/mongoid/errors.rb +4 -1
  65. data/lib/mongoid/extensions/hash.rb +2 -24
  66. data/lib/mongoid/extensions/object.rb +2 -2
  67. data/lib/mongoid/extensions/time.rb +2 -0
  68. data/lib/mongoid/fields/localized.rb +10 -0
  69. data/lib/mongoid/fields/standard.rb +10 -0
  70. data/lib/mongoid/fields.rb +53 -24
  71. data/lib/mongoid/findable.rb +27 -3
  72. data/lib/mongoid/interceptable.rb +10 -118
  73. data/lib/mongoid/matcher/eq_impl.rb +1 -1
  74. data/lib/mongoid/matcher/type.rb +1 -1
  75. data/lib/mongoid/persistable/creatable.rb +1 -0
  76. data/lib/mongoid/persistable/deletable.rb +1 -1
  77. data/lib/mongoid/persistable/savable.rb +13 -1
  78. data/lib/mongoid/persistable/unsettable.rb +2 -2
  79. data/lib/mongoid/persistable/updatable.rb +51 -1
  80. data/lib/mongoid/persistable/upsertable.rb +20 -1
  81. data/lib/mongoid/persistable.rb +3 -0
  82. data/lib/mongoid/query_cache.rb +5 -1
  83. data/lib/mongoid/railties/database.rake +7 -2
  84. data/lib/mongoid/reloadable.rb +5 -3
  85. data/lib/mongoid/stateful.rb +22 -1
  86. data/lib/mongoid/tasks/database.rake +12 -0
  87. data/lib/mongoid/tasks/database.rb +20 -0
  88. data/lib/mongoid/utils.rb +22 -0
  89. data/lib/mongoid/validatable/macros.rb +5 -5
  90. data/lib/mongoid/validatable.rb +4 -1
  91. data/lib/mongoid/version.rb +1 -1
  92. data/lib/mongoid/warnings.rb +17 -1
  93. data/lib/mongoid.rb +16 -3
  94. data/spec/integration/app_spec.rb +2 -2
  95. data/spec/integration/callbacks_models.rb +37 -0
  96. data/spec/integration/callbacks_spec.rb +126 -12
  97. data/spec/integration/discriminator_key_spec.rb +4 -5
  98. data/spec/integration/i18n_fallbacks_spec.rb +3 -2
  99. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +27 -0
  100. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +20 -25
  101. data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
  102. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +15 -2
  103. data/spec/mongoid/association/referenced/belongs_to_spec.rb +2 -18
  104. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +5 -27
  105. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +9 -50
  106. data/spec/mongoid/association/syncable_spec.rb +1 -1
  107. data/spec/mongoid/attributes_spec.rb +3 -33
  108. data/spec/mongoid/changeable_spec.rb +299 -24
  109. data/spec/mongoid/clients_spec.rb +122 -13
  110. data/spec/mongoid/collection_configurable_spec.rb +158 -0
  111. data/spec/mongoid/config/defaults_spec.rb +160 -0
  112. data/spec/mongoid/config_spec.rb +154 -27
  113. data/spec/mongoid/contextual/memory_spec.rb +332 -76
  114. data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +187 -0
  115. data/spec/mongoid/contextual/mongo_spec.rb +1009 -125
  116. data/spec/mongoid/contextual/none_spec.rb +49 -2
  117. data/spec/mongoid/copyable_spec.rb +2 -10
  118. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +4 -10
  119. data/spec/mongoid/criteria/queryable/options_spec.rb +1 -1
  120. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +419 -0
  121. data/spec/mongoid/criteria/queryable/selectable_spec.rb +1 -1
  122. data/spec/mongoid/criteria/queryable/selector_spec.rb +3 -76
  123. data/spec/mongoid/criteria/queryable/storable_spec.rb +0 -72
  124. data/spec/mongoid/criteria_projection_spec.rb +1 -4
  125. data/spec/mongoid/criteria_spec.rb +5 -9
  126. data/spec/mongoid/errors/readonly_document_spec.rb +2 -2
  127. data/spec/mongoid/extensions/hash_spec.rb +3 -3
  128. data/spec/mongoid/extensions/time_spec.rb +8 -43
  129. data/spec/mongoid/extensions/time_with_zone_spec.rb +7 -52
  130. data/spec/mongoid/fields/localized_spec.rb +46 -28
  131. data/spec/mongoid/fields_spec.rb +136 -77
  132. data/spec/mongoid/findable_spec.rb +391 -34
  133. data/spec/mongoid/indexable_spec.rb +16 -10
  134. data/spec/mongoid/interceptable_spec.rb +173 -362
  135. data/spec/mongoid/persistable/deletable_spec.rb +26 -6
  136. data/spec/mongoid/persistable/destroyable_spec.rb +26 -6
  137. data/spec/mongoid/persistable/incrementable_spec.rb +37 -0
  138. data/spec/mongoid/persistable/logical_spec.rb +37 -0
  139. data/spec/mongoid/persistable/poppable_spec.rb +36 -0
  140. data/spec/mongoid/persistable/pullable_spec.rb +72 -0
  141. data/spec/mongoid/persistable/pushable_spec.rb +72 -0
  142. data/spec/mongoid/persistable/renamable_spec.rb +36 -0
  143. data/spec/mongoid/persistable/savable_spec.rb +96 -0
  144. data/spec/mongoid/persistable/settable_spec.rb +37 -0
  145. data/spec/mongoid/persistable/unsettable_spec.rb +36 -0
  146. data/spec/mongoid/persistable/updatable_spec.rb +20 -28
  147. data/spec/mongoid/persistable/upsertable_spec.rb +80 -6
  148. data/spec/mongoid/persistence_context_spec.rb +7 -57
  149. data/spec/mongoid/query_cache_spec.rb +56 -61
  150. data/spec/mongoid/reloadable_spec.rb +24 -28
  151. data/spec/mongoid/scopable_spec.rb +70 -0
  152. data/spec/mongoid/serializable_spec.rb +9 -30
  153. data/spec/mongoid/stateful_spec.rb +122 -8
  154. data/spec/mongoid/tasks/database_rake_spec.rb +74 -0
  155. data/spec/mongoid/tasks/database_spec.rb +127 -0
  156. data/spec/mongoid/timestamps_spec.rb +9 -11
  157. data/spec/mongoid/touchable_spec.rb +277 -5
  158. data/spec/mongoid/touchable_spec_models.rb +3 -1
  159. data/spec/mongoid/traversable_spec.rb +9 -24
  160. data/spec/mongoid/validatable/uniqueness_spec.rb +2 -3
  161. data/spec/mongoid_spec.rb +36 -10
  162. data/spec/spec_helper.rb +5 -0
  163. data/spec/support/immutable_ids.rb +118 -0
  164. data/spec/support/macros.rb +47 -15
  165. data/spec/support/models/artist.rb +0 -1
  166. data/spec/support/models/band.rb +1 -0
  167. data/spec/support/models/book.rb +1 -0
  168. data/spec/support/models/building.rb +2 -0
  169. data/spec/support/models/cover.rb +10 -0
  170. data/spec/support/models/person.rb +0 -1
  171. data/spec/support/models/product.rb +1 -0
  172. data.tar.gz.sig +0 -0
  173. metadata +685 -651
  174. metadata.gz.sig +0 -0
  175. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -60
  176. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -60
  177. data/spec/support/models/purse.rb +0 -9
@@ -2,9 +2,6 @@
2
2
 
3
3
  module Mongoid
4
4
  module Macros
5
- class I18nBackendWithFallbacks < I18n::Backend::Simple
6
- include I18n::Backend::Fallbacks
7
- end
8
5
 
9
6
  def use_spec_mongoid_config
10
7
  around do |example|
@@ -43,18 +40,6 @@ module Mongoid
43
40
  end
44
41
  end
45
42
 
46
- def with_i18n_fallbacks
47
- require_fallbacks
48
-
49
- around do |example|
50
- old_backend = I18n.backend
51
- I18n.backend = I18nBackendWithFallbacks.new
52
- example.run
53
- ensure
54
- I18n.backend = old_backend
55
- end
56
- end
57
-
58
43
  def driver_config_override(key, value)
59
44
  around do |example|
60
45
  existing = Mongo.send(key)
@@ -93,5 +78,52 @@ module Mongoid
93
78
  end
94
79
  end
95
80
  end
81
+
82
+ def override_query_cache(enabled)
83
+ around do |example|
84
+ cache_enabled = Mongo::QueryCache.enabled?
85
+ Mongo::QueryCache.enabled = enabled
86
+ example.run
87
+ Mongo::QueryCache.enabled = cache_enabled
88
+ end
89
+ end
90
+
91
+ # Override the global persistence context.
92
+ #
93
+ # @param [ :client, :database ] component The component to override.
94
+ # @param [ Object ] value The value to override to.
95
+ def persistence_context_override(component, value)
96
+ around do |example|
97
+ meth = "#{component}_override"
98
+ old_value = Mongoid::Threaded.send(meth)
99
+ Mongoid::Threaded.send("#{meth}=", value)
100
+ example.run
101
+ Mongoid::Threaded.send("#{meth}=", old_value)
102
+ end
103
+ end
104
+
105
+ def time_zone_override(tz)
106
+ around do |example|
107
+ old_tz = Time.zone
108
+ Time.zone = tz
109
+ example.run
110
+ Time.zone = old_tz
111
+ end
112
+ end
113
+
114
+ def with_default_i18n_configs
115
+ around do |example|
116
+ I18n.locale = :en
117
+ I18n.default_locale = :en
118
+ I18n.try(:fallbacks=, I18n::Locale::Fallbacks.new)
119
+ I18n.enforce_available_locales = false
120
+ example.run
121
+ ensure
122
+ I18n.locale = :en
123
+ I18n.default_locale = :en
124
+ I18n.try(:fallbacks=, I18n::Locale::Fallbacks.new)
125
+ I18n.enforce_available_locales = false
126
+ end
127
+ end
96
128
  end
97
129
  end
@@ -87,5 +87,4 @@ class Artist
87
87
  def after_remove_album(album)
88
88
  @after_remove_referenced_called = true
89
89
  end
90
-
91
90
  end
@@ -21,6 +21,7 @@ class Band
21
21
  field :founded, type: Date
22
22
  field :deleted, type: Boolean
23
23
  field :mojo, type: Object
24
+ field :tags, type: Hash
24
25
  field :fans
25
26
 
26
27
  embeds_many :records, cascade_callbacks: true
@@ -15,4 +15,5 @@ class Book
15
15
  end
16
16
 
17
17
  embeds_many :pages, cascade_callbacks: true
18
+ embeds_many :covers, cascade_callbacks: true
18
19
  end
@@ -3,6 +3,8 @@
3
3
  class Building
4
4
  include Mongoid::Document
5
5
 
6
+ field :name, type: String
7
+
6
8
  embeds_one :building_address, validate: false
7
9
  embeds_many :contractors
8
10
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Cover
4
+ include Mongoid::Document
5
+ include Mongoid::Timestamps
6
+
7
+ field :title, type: String
8
+
9
+ embedded_in :book
10
+ end
@@ -70,7 +70,6 @@ class Person
70
70
  embeds_many :messages, validate: false
71
71
 
72
72
  embeds_one :passport, autobuild: true, store_as: :pass, validate: false
73
- embeds_one :purse, store_as: "Purse"
74
73
  embeds_one :pet, class_name: "Animal", validate: false
75
74
  embeds_one :name, as: :namable, validate: false do
76
75
  def extension
@@ -10,6 +10,7 @@ class Product
10
10
  field :website, localize: true
11
11
  field :sku, as: :stock_keeping_unit
12
12
  field :tl, as: :tagline, localize: true
13
+ field :title, localize: :present
13
14
  alias_attribute :cost, :price
14
15
 
15
16
  validates :name, presence: true
data.tar.gz.sig CHANGED
Binary file