mongoid 4.0.2 → 5.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +66 -1
  3. data/README.md +14 -13
  4. data/lib/config/locales/en.yml +28 -28
  5. data/lib/mongoid.rb +28 -21
  6. data/lib/mongoid/atomic.rb +2 -4
  7. data/lib/mongoid/attributes.rb +7 -7
  8. data/lib/mongoid/attributes/processing.rb +4 -1
  9. data/lib/mongoid/attributes/readonly.rb +2 -2
  10. data/lib/mongoid/changeable.rb +4 -6
  11. data/lib/mongoid/clients.rb +142 -0
  12. data/lib/mongoid/clients/factory.rb +78 -0
  13. data/lib/mongoid/{sessions → clients}/options.rb +30 -19
  14. data/lib/mongoid/{sessions → clients}/storage_options.rb +27 -13
  15. data/lib/mongoid/{sessions → clients}/thread_options.rb +6 -3
  16. data/lib/mongoid/clients/validators.rb +2 -0
  17. data/lib/mongoid/{sessions → clients}/validators/storage.rb +5 -2
  18. data/lib/mongoid/composable.rb +3 -3
  19. data/lib/mongoid/config.rb +39 -41
  20. data/lib/mongoid/config/environment.rb +1 -1
  21. data/lib/mongoid/config/validators.rb +1 -1
  22. data/lib/mongoid/config/validators/{session.rb → client.rb} +31 -28
  23. data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
  24. data/lib/mongoid/contextual/atomic.rb +11 -11
  25. data/lib/mongoid/contextual/command.rb +9 -6
  26. data/lib/mongoid/contextual/geo_near.rb +17 -1
  27. data/lib/mongoid/contextual/map_reduce.rb +12 -11
  28. data/lib/mongoid/contextual/memory.rb +2 -5
  29. data/lib/mongoid/contextual/mongo.rb +92 -82
  30. data/lib/mongoid/contextual/none.rb +13 -0
  31. data/lib/mongoid/copyable.rb +6 -1
  32. data/lib/mongoid/criteria.rb +36 -3
  33. data/lib/mongoid/document.rb +3 -4
  34. data/lib/mongoid/errors.rb +6 -6
  35. data/lib/mongoid/errors/{mixed_session_configuration.rb → mixed_client_configuration.rb} +5 -5
  36. data/lib/mongoid/errors/no_client_config.rb +22 -0
  37. data/lib/mongoid/errors/{no_session_database.rb → no_client_database.rb} +4 -4
  38. data/lib/mongoid/errors/{no_session_hosts.rb → no_client_hosts.rb} +4 -4
  39. data/lib/mongoid/errors/{no_sessions_config.rb → no_clients_config.rb} +4 -4
  40. data/lib/mongoid/errors/no_default_client.rb +23 -0
  41. data/lib/mongoid/extensions/hash.rb +5 -1
  42. data/lib/mongoid/extensions/object.rb +3 -2
  43. data/lib/mongoid/extensions/set.rb +5 -5
  44. data/lib/mongoid/factory.rb +4 -2
  45. data/lib/mongoid/fields.rb +7 -2
  46. data/lib/mongoid/findable.rb +4 -1
  47. data/lib/mongoid/indexable.rb +15 -9
  48. data/lib/mongoid/persistable.rb +1 -2
  49. data/lib/mongoid/persistable/creatable.rb +2 -2
  50. data/lib/mongoid/persistable/deletable.rb +3 -3
  51. data/lib/mongoid/persistable/incrementable.rb +1 -1
  52. data/lib/mongoid/persistable/logical.rb +1 -1
  53. data/lib/mongoid/persistable/poppable.rb +1 -1
  54. data/lib/mongoid/persistable/pullable.rb +2 -2
  55. data/lib/mongoid/persistable/pushable.rb +2 -2
  56. data/lib/mongoid/persistable/renamable.rb +1 -1
  57. data/lib/mongoid/persistable/settable.rb +1 -1
  58. data/lib/mongoid/persistable/unsettable.rb +1 -1
  59. data/lib/mongoid/persistable/updatable.rb +2 -2
  60. data/lib/mongoid/persistable/upsertable.rb +1 -1
  61. data/lib/mongoid/query_cache.rb +98 -104
  62. data/lib/mongoid/railtie.rb +1 -21
  63. data/lib/mongoid/railties/database.rake +1 -1
  64. data/lib/mongoid/relations/builders.rb +3 -1
  65. data/lib/mongoid/relations/counter_cache.rb +1 -1
  66. data/lib/mongoid/relations/embedded/batchable.rb +3 -10
  67. data/lib/mongoid/relations/embedded/many.rb +4 -2
  68. data/lib/mongoid/relations/many.rb +1 -0
  69. data/lib/mongoid/relations/proxy.rb +6 -6
  70. data/lib/mongoid/relations/referenced/many.rb +2 -1
  71. data/lib/mongoid/relations/targets/enumerable.rb +11 -11
  72. data/lib/mongoid/relations/touchable.rb +1 -1
  73. data/lib/mongoid/reloadable.rb +2 -2
  74. data/lib/mongoid/scopable.rb +6 -17
  75. data/lib/mongoid/selectable.rb +1 -36
  76. data/lib/mongoid/serializable.rb +2 -2
  77. data/lib/mongoid/stateful.rb +0 -1
  78. data/lib/mongoid/tasks/database.rake +2 -2
  79. data/lib/mongoid/tasks/database.rb +23 -16
  80. data/lib/mongoid/threaded.rb +54 -33
  81. data/lib/mongoid/threaded/lifecycle.rb +21 -16
  82. data/lib/mongoid/traversable.rb +16 -1
  83. data/lib/mongoid/validatable.rb +1 -1
  84. data/lib/mongoid/validatable/queryable.rb +1 -1
  85. data/lib/mongoid/validatable/uniqueness.rb +3 -20
  86. data/lib/mongoid/version.rb +1 -1
  87. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +91 -57
  88. data/lib/rails/mongoid.rb +2 -2
  89. data/spec/app/models/audio.rb +1 -1
  90. data/spec/app/models/band.rb +1 -0
  91. data/spec/app/models/company.rb +5 -0
  92. data/spec/app/models/label.rb +7 -0
  93. data/spec/app/models/pub.rb +6 -0
  94. data/spec/app/models/staff.rb +7 -0
  95. data/spec/app/models/store_as_dup_test1.rb +5 -0
  96. data/spec/app/models/store_as_dup_test2.rb +5 -0
  97. data/spec/config/mongoid.yml +7 -25
  98. data/spec/mongoid/atomic/paths_spec.rb +3 -11
  99. data/spec/mongoid/attributes/nested_spec.rb +16 -16
  100. data/spec/mongoid/attributes/readonly_spec.rb +80 -18
  101. data/spec/mongoid/attributes_spec.rb +3 -3
  102. data/spec/mongoid/changeable_spec.rb +70 -0
  103. data/spec/mongoid/clients/factory_spec.rb +284 -0
  104. data/spec/mongoid/{sessions → clients}/options_spec.rb +4 -6
  105. data/spec/mongoid/clients_spec.rb +739 -0
  106. data/spec/mongoid/config/environment_spec.rb +14 -11
  107. data/spec/mongoid/config_spec.rb +33 -48
  108. data/spec/mongoid/contextual/atomic_spec.rb +1 -17
  109. data/spec/mongoid/contextual/geo_near_spec.rb +35 -0
  110. data/spec/mongoid/contextual/mongo_spec.rb +26 -83
  111. data/spec/mongoid/contextual/none_spec.rb +15 -0
  112. data/spec/mongoid/copyable_spec.rb +35 -1
  113. data/spec/mongoid/criteria/findable_spec.rb +197 -0
  114. data/spec/mongoid/criteria/modifiable_spec.rb +7 -29
  115. data/spec/mongoid/criteria_spec.rb +74 -91
  116. data/spec/mongoid/document_spec.rb +1 -1
  117. data/spec/mongoid/errors/{mixed_session_configuration_spec.rb → mixed_client_configuration_spec.rb} +1 -1
  118. data/spec/mongoid/errors/{no_session_config_spec.rb → no_client_config_spec.rb} +4 -4
  119. data/spec/mongoid/errors/{no_session_database_spec.rb → no_client_database_spec.rb} +4 -4
  120. data/spec/mongoid/errors/{no_session_hosts_spec.rb → no_client_hosts_spec.rb} +3 -3
  121. data/spec/mongoid/errors/{no_sessions_config_spec.rb → no_clients_config_spec.rb} +2 -2
  122. data/spec/mongoid/fields/localized_spec.rb +1 -0
  123. data/spec/mongoid/fields_spec.rb +1 -0
  124. data/spec/mongoid/findable_spec.rb +2 -23
  125. data/spec/mongoid/indexable_spec.rb +12 -8
  126. data/spec/mongoid/interceptable_spec.rb +15 -0
  127. data/spec/mongoid/persistable/settable_spec.rb +16 -0
  128. data/spec/mongoid/persistable/updatable_spec.rb +3 -2
  129. data/spec/mongoid/persistable_spec.rb +4 -4
  130. data/spec/mongoid/query_cache_spec.rb +13 -8
  131. data/spec/mongoid/relations/auto_save_spec.rb +1 -1
  132. data/spec/mongoid/relations/counter_cache_spec.rb +34 -0
  133. data/spec/mongoid/relations/eager/belongs_to_spec.rb +9 -0
  134. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +3 -3
  135. data/spec/mongoid/relations/embedded/many_spec.rb +123 -1
  136. data/spec/mongoid/relations/embedded/one_spec.rb +3 -3
  137. data/spec/mongoid/relations/proxy_spec.rb +28 -0
  138. data/spec/mongoid/relations/referenced/in_spec.rb +1 -1
  139. data/spec/mongoid/relations/referenced/many_spec.rb +47 -23
  140. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +1 -1
  141. data/spec/mongoid/relations/referenced/one_spec.rb +1 -1
  142. data/spec/mongoid/relations/targets/enumerable_spec.rb +9 -2
  143. data/spec/mongoid/reloadable_spec.rb +6 -6
  144. data/spec/mongoid/scopable_spec.rb +41 -28
  145. data/spec/mongoid/selectable_spec.rb +6 -16
  146. data/spec/mongoid/tasks/database_rake_spec.rb +13 -13
  147. data/spec/mongoid/tasks/database_spec.rb +2 -2
  148. data/spec/mongoid/threaded_spec.rb +0 -7
  149. data/spec/mongoid/traversable_spec.rb +2 -2
  150. data/spec/mongoid/validatable/uniqueness_spec.rb +30 -1
  151. data/spec/mongoid_spec.rb +13 -15
  152. data/spec/rails/mongoid_spec.rb +13 -4
  153. data/spec/spec_helper.rb +44 -27
  154. data/spec/support/authorization.rb +12 -0
  155. data/spec/support/expectations.rb +14 -0
  156. metadata +52 -59
  157. data/lib/mongoid/contextual/find_and_modify.rb +0 -69
  158. data/lib/mongoid/contextual/text_search.rb +0 -178
  159. data/lib/mongoid/criteria/#findable.rb# +0 -141
  160. data/lib/mongoid/errors/no_default_session.rb +0 -23
  161. data/lib/mongoid/errors/no_session_config.rb +0 -22
  162. data/lib/mongoid/log_subscriber.rb +0 -55
  163. data/lib/mongoid/positional.rb +0 -71
  164. data/lib/mongoid/sessions.rb +0 -125
  165. data/lib/mongoid/sessions/factory.rb +0 -131
  166. data/lib/mongoid/sessions/mongo_uri.rb +0 -93
  167. data/lib/mongoid/sessions/validators.rb +0 -2
  168. data/lib/mongoid/support/query_counter.rb +0 -23
  169. data/spec/helpers.rb +0 -18
  170. data/spec/mongoid/#atomic_spec.rb# +0 -365
  171. data/spec/mongoid/contextual/find_and_modify_spec.rb +0 -220
  172. data/spec/mongoid/contextual/text_search_spec.rb +0 -209
  173. data/spec/mongoid/log_subscriber_spec.rb +0 -75
  174. data/spec/mongoid/positional_spec.rb +0 -222
  175. data/spec/mongoid/sessions/factory_spec.rb +0 -333
  176. data/spec/mongoid/sessions/mongo_uri_spec.rb +0 -103
  177. data/spec/mongoid/sessions_spec.rb +0 -1252
@@ -6,10 +6,24 @@ module Mongoid
6
6
  # This module contains logic for easy access to objects that have a lifecycle
7
7
  # on the current thread.
8
8
  module Threaded
9
+
9
10
  DATABASE_OVERRIDE_KEY = "[mongoid]:db-override"
10
- SESSIONS_KEY = "[mongoid]:sessions"
11
- SESSION_OVERRIDE_KEY = "[mongoid]:session-override"
12
- SCOPE_STACK_KEY = "[mongoid]:scope-stack"
11
+
12
+ # Constant for the key to store clients.
13
+ #
14
+ # @since 5.0.0
15
+ CLIENTS_KEY = "[mongoid]:clients"
16
+
17
+ # The key to override the client.
18
+ #
19
+ # @since 5.0.0
20
+ CLIENT_OVERRIDE_KEY = "[mongoid]:client-override"
21
+
22
+ # The key for the current thread's scope stack.
23
+ #
24
+ # @since 2.0.0
25
+ CURRENT_SCOPE_KEY = "[mongoid]:current-scope"
26
+
13
27
  AUTOSAVES_KEY = "[mongoid]:autosaves"
14
28
  VALIDATIONS_KEY = "[mongoid]:validations"
15
29
 
@@ -17,6 +31,7 @@ module Mongoid
17
31
  hash[key] = "[mongoid]:#{key}-stack"
18
32
  end
19
33
 
34
+ extend Gem::Deprecate
20
35
  extend self
21
36
 
22
37
  # Begin entry into a named thread local stack.
@@ -59,18 +74,6 @@ module Mongoid
59
74
  Thread.current[DATABASE_OVERRIDE_KEY] = name
60
75
  end
61
76
 
62
- # Get the database sessions from the current thread.
63
- #
64
- # @example Get the database sessions.
65
- # Threaded.sessions
66
- #
67
- # @return [ Hash ] The sessions.
68
- #
69
- # @since 3.0.0
70
- def sessions
71
- Thread.current[SESSIONS_KEY] ||= {}
72
- end
73
-
74
77
  # Are in the middle of executing the named stack
75
78
  #
76
79
  # @example Are we in the stack execution?
@@ -161,42 +164,60 @@ module Mongoid
161
164
  validations_for(document.class).delete_one(document._id)
162
165
  end
163
166
 
164
- # Get the global session override.
167
+ # Get the global client override.
165
168
  #
166
- # @example Get the global session override.
167
- # Threaded.session_override
169
+ # @example Get the global client override.
170
+ # Threaded.client_override
168
171
  #
169
172
  # @return [ String, Symbol ] The override.
170
173
  #
171
- # @since 3.0.0
172
- def session_override
173
- Thread.current[SESSION_OVERRIDE_KEY]
174
+ # @since 5.0.0
175
+ def client_override
176
+ Thread.current[CLIENT_OVERRIDE_KEY]
174
177
  end
178
+ alias :session_override :client_override
179
+ deprecate :session_override, :client_override, 2015, 12
175
180
 
176
- # Set the global session override.
181
+ # Set the global client override.
177
182
  #
178
- # @example Set the global session override.
179
- # Threaded.session_override = :testing
183
+ # @example Set the global client override.
184
+ # Threaded.client_override = :testing
180
185
  #
181
186
  # @param [ String, Symbol ] The global override name.
182
187
  #
183
188
  # @return [ String, Symbol ] The override.
184
189
  #
185
190
  # @since 3.0.0
186
- def session_override=(name)
187
- Thread.current[SESSION_OVERRIDE_KEY] = name
191
+ def client_override=(name)
192
+ Thread.current[CLIENT_OVERRIDE_KEY] = name
193
+ end
194
+ alias :session_override= :client_override=
195
+ deprecate :session_override=, :client_override=, 2015, 12
196
+
197
+ # Get the current Mongoid scope.
198
+ #
199
+ # @example Get the scope.
200
+ # Threaded.current_scope
201
+ #
202
+ # @return [ Criteria ] The scope.
203
+ #
204
+ # @since 5.0.0
205
+ def current_scope
206
+ Thread.current[CURRENT_SCOPE_KEY]
188
207
  end
189
208
 
190
- # Get the mongoid scope stack for chained criteria.
209
+ # Set the current Mongoid scope.
210
+ #
211
+ # @example Set the scope.
212
+ # Threaded.current_scope = scope
191
213
  #
192
- # @example Get the scope stack.
193
- # Threaded.scope_stack
214
+ # @param [ Criteria ] scope The current scope.
194
215
  #
195
- # @return [ Hash ] The scope stack.
216
+ # @return [ Criteria ] The scope.
196
217
  #
197
- # @since 2.1.0
198
- def scope_stack
199
- Thread.current[SCOPE_STACK_KEY] ||= {}
218
+ # @since 5.0.0
219
+ def current_scope=(scope)
220
+ Thread.current[CURRENT_SCOPE_KEY] = scope
200
221
  end
201
222
 
202
223
  # Is the document autosaved on the current thread?
@@ -1,7 +1,12 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid
3
3
  module Threaded
4
-
4
+ BIND = 'bind'.freeze
5
+ ASSIGN = 'assign'.freeze
6
+ BUILD = 'build'.freeze
7
+ LOAD = 'load'.freeze
8
+ CREATE = 'create'.freeze
9
+
5
10
  # This module contains convenience methods for document lifecycle that
6
11
  # resides on thread locals.
7
12
  module Lifecycle
@@ -22,10 +27,10 @@ module Mongoid
22
27
  #
23
28
  # @since 2.2.0
24
29
  def _assigning
25
- Threaded.begin_execution("assign")
30
+ Threaded.begin_execution(ASSIGN)
26
31
  yield
27
32
  ensure
28
- Threaded.exit_execution("assign")
33
+ Threaded.exit_execution(ASSIGN)
29
34
  end
30
35
 
31
36
  # Is the current thread in assigning mode?
@@ -37,7 +42,7 @@ module Mongoid
37
42
  #
38
43
  # @since 2.1.0
39
44
  def _assigning?
40
- Threaded.executing?("assign")
45
+ Threaded.executing?(ASSIGN)
41
46
  end
42
47
 
43
48
  # Execute a block in binding mode.
@@ -51,10 +56,10 @@ module Mongoid
51
56
  #
52
57
  # @since 2.1.0
53
58
  def _binding
54
- Threaded.begin_execution("bind")
59
+ Threaded.begin_execution(BIND)
55
60
  yield
56
61
  ensure
57
- Threaded.exit_execution("bind")
62
+ Threaded.exit_execution(BIND)
58
63
  end
59
64
 
60
65
  # Is the current thread in binding mode?
@@ -66,7 +71,7 @@ module Mongoid
66
71
  #
67
72
  # @since 2.1.0
68
73
  def _binding?
69
- Threaded.executing?("bind")
74
+ Threaded.executing?(BIND)
70
75
  end
71
76
 
72
77
  # Execute a block in building mode.
@@ -80,10 +85,10 @@ module Mongoid
80
85
  #
81
86
  # @since 2.1.0
82
87
  def _building
83
- Threaded.begin_execution("build")
88
+ Threaded.begin_execution(BUILD)
84
89
  yield
85
90
  ensure
86
- Threaded.exit_execution("build")
91
+ Threaded.exit_execution(BUILD)
87
92
  end
88
93
 
89
94
  # Is the current thread in building mode?
@@ -95,7 +100,7 @@ module Mongoid
95
100
  #
96
101
  # @since 2.1.0
97
102
  def _building?
98
- Threaded.executing?("build")
103
+ Threaded.executing?(BUILD)
99
104
  end
100
105
 
101
106
  # Is the current thread in creating mode?
@@ -107,7 +112,7 @@ module Mongoid
107
112
  #
108
113
  # @since 2.1.0
109
114
  def _creating?
110
- Threaded.executing?("create")
115
+ Threaded.executing?(CREATE)
111
116
  end
112
117
 
113
118
  # Execute a block in loading mode.
@@ -121,10 +126,10 @@ module Mongoid
121
126
  #
122
127
  # @since 2.3.2
123
128
  def _loading
124
- Threaded.begin_execution("load")
129
+ Threaded.begin_execution(LOAD)
125
130
  yield
126
131
  ensure
127
- Threaded.exit_execution("load")
132
+ Threaded.exit_execution(LOAD)
128
133
  end
129
134
 
130
135
  # Is the current thread in loading mode?
@@ -136,7 +141,7 @@ module Mongoid
136
141
  #
137
142
  # @since 2.3.2
138
143
  def _loading?
139
- Threaded.executing?("load")
144
+ Threaded.executing?(LOAD)
140
145
  end
141
146
 
142
147
  module ClassMethods
@@ -152,10 +157,10 @@ module Mongoid
152
157
  #
153
158
  # @since 2.1.0
154
159
  def _creating
155
- Threaded.begin_execution("create")
160
+ Threaded.begin_execution(CREATE)
156
161
  yield
157
162
  ensure
158
- Threaded.exit_execution("create")
163
+ Threaded.exit_execution(CREATE)
159
164
  end
160
165
 
161
166
  end
@@ -124,6 +124,21 @@ module Mongoid
124
124
  child.move_changes
125
125
  child.new_record = false
126
126
  end
127
+ _reset_memoized_children!
128
+ end
129
+
130
+ # Resets the memoized children on the object. Called internally when an
131
+ # embedded array changes size.
132
+ #
133
+ # @api semiprivate
134
+ #
135
+ # @example Reset the memoized children.
136
+ # document._reset_memoized_children!
137
+ #
138
+ # @return [ nil ] nil.
139
+ #
140
+ # @since 5.0.0
141
+ def _reset_memoized_children!
127
142
  @__children = nil
128
143
  end
129
144
 
@@ -161,7 +176,7 @@ module Mongoid
161
176
  #
162
177
  # @return [ true, false ] True if hereditary, false if not.
163
178
  def hereditary?
164
- Mongoid::Document > superclass
179
+ !!(Mongoid::Document > superclass)
165
180
  end
166
181
 
167
182
  # When inheriting, we want to copy the fields from the parent class and
@@ -68,7 +68,7 @@ module Mongoid
68
68
  # @since 2.0.0.rc.1
69
69
  def read_attribute_for_validation(attr)
70
70
  attribute = database_field_name(attr)
71
- if relations.has_key?(attribute)
71
+ if relations.key?(attribute)
72
72
  begin_validate
73
73
  relation = without_autobuild { send(attr) }
74
74
  exit_validate
@@ -4,7 +4,7 @@ module Mongoid
4
4
  module Queryable
5
5
 
6
6
  # Wrap the validation inside the an execution block that alert's the
7
- # session not to clear its persistence options.
7
+ # client not to clear its persistence options.
8
8
  #
9
9
  # @example Execute the validation with a query.
10
10
  # with_query(document) do
@@ -122,8 +122,8 @@ module Mongoid
122
122
  def criterion(document, attribute, value)
123
123
  field = document.database_field_name(attribute)
124
124
 
125
- if localized?(document, field)
126
- conditions = value.inject([]) { |acc, (k,v)| acc << { "#{field}.#{k}" => filter(v) } }
125
+ if value && localized?(document, field)
126
+ conditions = (value || {}).inject([]) { |acc, (k,v)| acc << { "#{field}.#{k}" => filter(v) }}
127
127
  selector = { "$or" => conditions }
128
128
  else
129
129
  selector = { field => filter(value) }
@@ -274,7 +274,7 @@ module Mongoid
274
274
  criteria = create_criteria(klass, document, attribute, value)
275
275
  criteria = criteria.merge(options[:conditions].call) if options[:conditions]
276
276
 
277
- if criteria.with(persistence_options(criteria)).exists?
277
+ if criteria.with(criteria.persistence_options).read(mode: :primary).exists?
278
278
  add_error(document, attribute, value)
279
279
  end
280
280
  end
@@ -296,23 +296,6 @@ module Mongoid
296
296
  scope_value_changed?(document)
297
297
  end
298
298
 
299
- # Get the persistence options to perform to check, merging with any
300
- # existing.
301
- #
302
- # @api private
303
- #
304
- # @example Get the persistence options.
305
- # validator.persistence_options(criteria)
306
- #
307
- # @param [ Criteria ] criteria The criteria.
308
- #
309
- # @return [ Hash ] The persistence options.
310
- #
311
- # @since 3.0.23
312
- def persistence_options(criteria)
313
- (criteria.persistence_options || {}).merge!(read: :primary)
314
- end
315
-
316
299
  # Is the attribute localized?
317
300
  #
318
301
  # @api private
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid
3
- VERSION = "4.0.2"
3
+ VERSION = "5.0.0.beta"
4
4
  end
@@ -1,62 +1,101 @@
1
1
  development:
2
- # Configure available database sessions. (required)
3
- sessions:
4
- # Defines the default session. (required)
2
+ # Configure available database clients. (required)
3
+ clients:
4
+ # Defines the default client. (required)
5
5
  default:
6
6
  # Defines the name of the default database that Mongoid can connect to.
7
7
  # (required).
8
8
  database: <%= database_name || app_name %>_development
9
- # Provides the hosts the default session can connect to. Must be an array
9
+ # Provides the hosts the default client can connect to. Must be an array
10
10
  # of host:port pairs. (required)
11
11
  hosts:
12
12
  - localhost:27017
13
13
  options:
14
14
  # Change the default write concern. (default = { w: 1 })
15
15
  # write:
16
- # w: 1
17
-
18
- # Change the default consistency model to primary, secondary.
19
- # 'secondary' will send reads to secondaries, 'primary' sends everything
20
- # to master. (default: primary)
21
- # read: secondary_preferred
22
-
23
- # How many times Moped should attempt to retry an operation after
24
- # failure. (default: The number of nodes in the cluster)
25
- # max_retries: 20
26
-
27
- # The time in seconds that Moped should wait before retrying an
28
- # operation on failure. (default: 0.25)
29
- # retry_interval: 0.25
30
-
31
- # The connection pool size per-node. This should match or exceed the
32
- # number of threads for a multi-threaded application. (default: 5)
33
- # pool_size: 5
34
-
35
- # The time in seconds that Moped should wait for the pool to provide
36
- # an available connection. This number should probably remain at the
37
- # default, unless for some reason you absolutely need to limit the
38
- # pool_size, as this wait is only used when the pool is saturated.
39
- # (default: 0.5)
40
- # pool_timeout: 0.5
41
-
42
- # The time in seconds before Moped will timeout connection and node
43
- # operations. (default: 5)
44
- # timeout: 5
45
-
46
- # The amount of time in seconds between forced refreshes of node
47
- # information including the discovery of new peers. (default: 300)
48
- # refresh_interval: 300
49
-
50
- # The amount of time in seconds that a node will be flagged as down.
51
- # (default: 30)
52
- # down_interval: 30
53
-
54
- # Whether connections should use SSL. (default: nil/false)
55
- # ssl: false
56
-
57
- # Whether Moped will use the existing seeds/nodes to find other peers.
58
- # (default: true)
59
- # auto_discover: true
16
+ # w: 1
17
+
18
+ # Change the default read preference. Valid options for mode are: :secondary,
19
+ # :secondary_preferred, :primary, :primary_preferred, :nearest
20
+ # (default: primary)
21
+ # read:
22
+ # mode: :secondary_preferred
23
+
24
+ # The name of the user for authentication.
25
+ # user: 'user'
26
+
27
+ # The password of the user for authentication.
28
+ # password: 'password'
29
+
30
+ # The user's database roles.
31
+ # roles:
32
+ # - 'dbOwner'
33
+
34
+ # Change the default authentication mechanism. Valid options are: :scram,
35
+ # :mongodb_cr, :mongodb_x509, and :plain. (default on 3.0 is :scram, default
36
+ # on 2.4 and 2.6 is :plain)
37
+ # auth_mech: :scram
38
+
39
+ # The database or source to authenticate the user against. (default: admin)
40
+ # auth_source: admin
41
+
42
+ # Force a the driver cluster to behave in a certain manner instead of auto-
43
+ # discovering. Can be one of: :direct, :replica_set, :sharded. Set to :direct
44
+ # when connecting to hidden members of a replica set.
45
+ # connect: :direct
46
+
47
+ # Changes the default time in seconds the server monitors refresh their status
48
+ # via ismaster commands. (default: 10)
49
+ # heartbeat_frequency: 10
50
+
51
+ # The time in seconds for selecting servers for a near read preference. (default: 5)
52
+ # local_threshold: 5
53
+
54
+ # The timeout in seconds for selecting a server for an operation. (default: 30)
55
+ # server_selection_timeout: 30
56
+
57
+ # The maximum number of connections in the connection pool. (default: 5)
58
+ # max_pool_size: 5
59
+
60
+ # The minimum number of connections in the connection pool. (default: 1)
61
+ # min_pool_size: 1
62
+
63
+ # The time to wait, in seconds, in the connection pool for a connection
64
+ # to be checked in before timing out. (default: 5)
65
+ # wait_queue_timeout: 5
66
+
67
+ # The time to wait to establish a connection before timing out, in seconds.
68
+ # (default: 5)
69
+ # connect_timeout: 5
70
+
71
+ # The timeout to wait to execute operations on a socket before raising an error.
72
+ # (default: 5)
73
+ # socket_timeout: 5
74
+
75
+ # The name of the replica set to connect to. Servers provided as seeds that do
76
+ # not belong to this replica set will be ignored.
77
+ # replica_set: name
78
+
79
+ # Whether to connect to the servers via ssl. (default: false)
80
+ # ssl: true
81
+
82
+ # The certificate file used to identify the connection against MongoDB.
83
+ # ssl_cert: /path/to/my.cert
84
+
85
+ # The private keyfile used to identify the connection against MongoDB.
86
+ # Note that even if the key is stored in the same file as the certificate,
87
+ # both need to be explicitly specified.
88
+ # ssl_key: /path/to/my.key
89
+
90
+ # A passphrase for the private key.
91
+ # ssl_key_pass_phrase: password
92
+
93
+ # Whether or not to do peer certification validation. (default: false)
94
+ # ssl_verify: true
95
+
96
+ # The file containing a set of concatenated certification authority certifications
97
+ # used to validate certs passed from the other end of the connection.
98
+ # ssl_ca_cert: /path/to/ca.cert
60
99
 
61
100
 
62
101
  # Configure Mongoid specific options. (optional)
@@ -71,9 +110,6 @@ development:
71
110
  # inheritance. (default: false)
72
111
  # preload_models: false
73
112
 
74
- # Protect id and type from mass assignment. (default: true)
75
- # protect_sensitive_fields: true
76
-
77
113
  # Raise an error when performing a #find and the document is not found.
78
114
  # (default: true)
79
115
  # raise_not_found_error: true
@@ -88,14 +124,12 @@ development:
88
124
  # Ensure all times are UTC in the app side. (default: false)
89
125
  # use_utc: false
90
126
  test:
91
- sessions:
127
+ clients:
92
128
  default:
93
129
  database: <%= database_name || app_name %>_test
94
130
  hosts:
95
131
  - localhost:27017
96
132
  options:
97
- read: primary
98
- # In the test environment we lower the retries and retry interval to
99
- # low amounts for fast failures.
100
- max_retries: 1
101
- retry_interval: 0
133
+ read:
134
+ mode: primary
135
+ max_pool_size: 1