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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5340f453822e7cbecd2710795296c23db607d92
4
- data.tar.gz: 0adcfd1449d91980fb45bb60aa336e661b1482f9
3
+ metadata.gz: da1ad4f848fcad2ee5ad4eee51d2d31eb444d900
4
+ data.tar.gz: a373cbfa6a5541b9bbc3dd37b119458c91bb16fc
5
5
  SHA512:
6
- metadata.gz: 9b1733f089831c0b58049cb486a8c13687f16a0845d2d9eb2acfb8c5aa0c99de3bbe3a81d6ab0bae0be9c8e4493c77864d64626b341565b5be8f7d695fb93acc
7
- data.tar.gz: 1c7a4d343e583880595366b2f4afcb58a8d0f763c8a3bc5f04cea4134d1fb947f420d3ce7cb9b070902a0fd50cd03e71c1c4188c7f349a0e591774435b6a9908
6
+ metadata.gz: 1ff95e684aca5bc7a4b1d3293a3f1dd6feb5ad24e1d711f86db32a6d7b5cd86159846ee23524376ecfccf8638d837928a10f8514ed015e65d38be5b8bf466f9a
7
+ data.tar.gz: fba913e1cdb0a81796016bb266d8fbd14173f044e53ad94de35576f017b2373009302d57f9ab736458e7fdda5587391a505e1ba6de47a880ac0a6d3f2942e01a
@@ -3,7 +3,72 @@
3
3
  For instructions on upgrading to newer versions, visit
4
4
  [mongoid.org](http://mongoid.org/en/mongoid/docs/upgrading.html).
5
5
 
6
- ## 4.0.3 - Not released
6
+ ## 5.0.0 - Not released
7
+
8
+ ### Major Changes (Backwards Incompatible)
9
+
10
+ * Mongoid now uses the official Mongo Ruby Driver 2.x instead of Moped.
11
+
12
+ * Most driver specific configuration options have changed, please see [here](http://docs.mongodb.org/ecosystem/tutorial/ruby-driver-tutorial/#ruby-options) for the new options.
13
+
14
+ * All references to `session` are now replaced with `client`. This includes the mongoid.yml configuration, `store_in` options, and all exceptions and modules with `Session` in the name.
15
+
16
+ * `find_and_modify` has been removed and replaced with 3 options: `find_one_and_update`, `find_one_and_delete` and `find_one_and_replace`.
17
+
18
+ * `text_search` has been removed as it is now a `$text` option in a query from 2.6 on.
19
+
20
+ * Mongoid no longer supports MongoDB 2.2 - support is now for only 2.4 and higher.
21
+
22
+ * \#3768 `first` and `last` no longer add an `_id` sort when no sorting options have been provided. In order to guarantee that a document is the first or last, it needs to now contain an explicit sort.
23
+
24
+ * `Document#deleted?` alias has been removed, please continue to use `Document#destroyed?`.
25
+
26
+ ### New Features
27
+
28
+ * \#4016 Allow private and protected setters on fields for atomic operations. (Rob Smith)
29
+
30
+ * \#3985 Return nil when using `{upsert: true}` in `find_and_modify` (Adrien Siami)
31
+
32
+ * \#3963 Allow extended JSON object ids to be passed to `find`.
33
+
34
+ * \#3846 Allow #pluck when none is used in criteria. (Braulio Martinez)
35
+
36
+ ### Resolved Issues
37
+
38
+ * \#4091 Use sublcass context when calling a scope defined in a superclass. (Edgars Beigarts)
39
+
40
+ * \#4075 Made remove index logging specific to each index that was actually getting removed.
41
+
42
+ * \#4071 Fixed loading of enumerable relation to check the added documents when iterating.
43
+
44
+ * \#4077 Many relations now include Enumerable.
45
+
46
+ * \#4052 Fixed uniqueness validation on localized fields with no value.
47
+
48
+ * \#4033 Removed all uses of the $ positional operator in atomic updates.
49
+
50
+ * \#4030 Dup/clone exceptions auto-include dynamic attributes.
51
+
52
+ * \#4005 Fixed inclusion of mongoid with Rails components that don't have the Rails environment.
53
+
54
+ * \#3993 Fixes issue where `dup`/`clone` fails for embedded documents that use store_as without using Mongoid::Atributes::Dynamic
55
+
56
+ * \#3991 Fixed emebdded documents not flagging as changed after calling #changed? and modifying the
57
+ child elements.
58
+
59
+ * \#3874 Adding snapshot option to context.
60
+
61
+ * \#3868 Loading models in rake tasks now expands the rails path.
62
+
63
+ * \#3764 Fixed case statement check for enumerable targets.
64
+
65
+ * \#3740 Fixes `Missing attribute: '_id'` error when using methods only or without (dx7)
66
+
67
+ * \#3631 Fixes issue where `before_save` callback can get called twice after a child create
68
+
69
+ * \#3599 Fixed application of default scopes from superclass in subclasses.
70
+
71
+ * \#3104 Fixed enumerable targets to check first/last in proper order.
7
72
 
8
73
  ## 4.0.2
9
74
 
data/README.md CHANGED
@@ -7,6 +7,18 @@
7
7
 
8
8
  Mongoid is an ODM (Object-Document-Mapper) framework for MongoDB in Ruby.
9
9
 
10
+ Project Move and Support
11
+ ------------------------
12
+
13
+ For the upcoming 5.0.0 release, the repository will be getting moved to the MongoDB
14
+ organization. Please pay special attention to the following information with regards
15
+ to this move:
16
+
17
+ * 5.0.0 and higher releases of Mongoid will be officially supported by MongoDB with a dedicated team.
18
+ * Issues tagged 5.0.0 and higher in Github will be migrated to the [Mongoid Jira project](https://jira.mongodb.org/browse/MONGOID/) upon the release. There will be no more Github issues.
19
+ * 4.x and 3.x releases will no longer be supported. Fixes to these branches will need to be maintained in community forks, although not recommended.
20
+ * 5.0.0 release will still be supporting Rails 4.x, although there will be some backwards incompatible changes with respect to the configuration options. The Mongoid public API itself will not be changed.
21
+
10
22
  Project Tracking
11
23
  ----------------
12
24
 
@@ -18,7 +30,7 @@ Project Tracking
18
30
  Compatibility
19
31
  -------------
20
32
 
21
- Mongoid is tested against MRI 1.9.3, 2.0.0, 2.1.0 and JRuby (1.9).
33
+ Mongoid is tested against MRI 1.9.3, 2.0.0, 2.1.0. 2.2.0 and JRuby (1.9).
22
34
 
23
35
  Documentation
24
36
  -------------
@@ -26,21 +38,10 @@ Documentation
26
38
  Please see the new Mongoid website for up-to-date documentation:
27
39
  [mongoid.org](http://mongoid.org)
28
40
 
29
- Donating
30
- --------
31
-
32
- [Support Mongoid at Pledgie](http://www.pledgie.com/campaigns/7757)
33
-
34
- <a href='http://www.pledgie.com/campaigns/7757'>
35
- <img alt='Click here to lend your support to: Mongoid and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/7757.png?skin_name=chrome' border='0'/>
36
- </a>
37
-
38
- [![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=durran&url=http://github.com/mongoid&title=mongoid&language=&tags=github&category=software)
39
-
40
41
  License
41
42
  -------
42
43
 
43
- Copyright (c) 2009-2013 Durran Jordan
44
+ Copyright (c) 2009-2015 Durran Jordan
44
45
 
45
46
  Permission is hereby granted, free of charge, to any person obtaining
46
47
  a copy of this software and associated documentation files (the
@@ -175,7 +175,7 @@ en:
175
175
  invalid_storage_options:
176
176
  message: "Invalid options passed to %{klass}.store_in: %{options}."
177
177
  summary: "The :store_in macro takes only a hash of parameters with
178
- the keys :database, :collection, or :session."
178
+ the keys :database, :collection, or :client."
179
179
  resolution: "Change the options passed to store_in to match the
180
180
  documented API, and ensure all keys in the options hash are
181
181
  symbols.\n\n
@@ -249,9 +249,9 @@ en:
249
249
  for each parent up the hierarchy."
250
250
  resolution: "Consider not embedding %{embedded}, or do the key
251
251
  storage and access in a custom manner in the application code."
252
- mixed_session_configuration:
252
+ mixed_client_configuration:
253
253
  message: "Both uri and standard configuration options defined for
254
- session: '%{name}'."
254
+ client: '%{name}'."
255
255
  summary: "Instead of simply giving uri or standard options a
256
256
  preference order, Mongoid assumes that you have made a mistake in
257
257
  your configuration and requires that you provide one or the other,
@@ -276,15 +276,15 @@ en:
276
276
  \_\_\_\_has_many :albums\n
277
277
  \_\_\_\_accepts_nested_attributes_for :albums\n
278
278
  \_\_end\n\n"
279
- no_default_session:
280
- message: "No default session configuration is defined."
279
+ no_default_client:
280
+ message: "No default client configuration is defined."
281
281
  summary: "The configuration provided settings for: %{keys}, but
282
282
  Mongoid requires a :default to be defined at minimum."
283
283
  resolution: "If configuring via a mongoid.yml, ensure that within
284
- your :sessions section a :default session is defined.\n\n
284
+ your :clients section a :default client is defined.\n\n
285
285
  Example:\n
286
286
  \_\_development:\n
287
- \_\_\_\_sessions:\n
287
+ \_\_\_\_clients:\n
288
288
  \_\_\_\_\_\_default:\n
289
289
  \_\_\_\_\_\_\_\_hosts:\n
290
290
  \_\_\_\_\_\_\_\_\_\_- localhost:27017\n\n"
@@ -338,59 +338,59 @@ en:
338
338
  resolution: "Ensure that you've set the parent relation if
339
339
  instantiating the embedded document directly, or always create new
340
340
  embedded documents via the parent relation."
341
- no_session_config:
342
- message: "No configuration could be found for a session named
341
+ no_client_config:
342
+ message: "No configuration could be found for a client named
343
343
  '%{name}'."
344
- summary: "When attempting to create the new session, Mongoid could
345
- not find a session configuration for the name: '%{name}'. This is
344
+ summary: "When attempting to create the new client, Mongoid could
345
+ not find a client configuration for the name: '%{name}'. This is
346
346
  necessary in order to know the host, port, and options needed
347
347
  to connect."
348
348
  resolution: "Double check your mongoid.yml to make sure under the
349
- sessions key that a configuration exists for '%{name}'. If you
349
+ clients key that a configuration exists for '%{name}'. If you
350
350
  have set the configuration programatically, ensure that '%{name}'
351
351
  exists in the configuration hash."
352
- no_sessions_config:
353
- message: "No sessions configuration provided."
352
+ no_clients_config:
353
+ message: "No clients configuration provided."
354
354
  summary: "Mongoid's configuration requires that you provide details
355
- about each session that can be connected to, and requires in
356
- the sessions config at least 1 default session to exist."
355
+ about each client that can be connected to, and requires in
356
+ the clients config at least 1 default client to exist."
357
357
  resolution: "Double check your mongoid.yml to make sure that you
358
- have a top-level sessions key with at least 1 default session
358
+ have a top-level clients key with at least 1 default client
359
359
  configuration for it. You can regenerate a new mongoid.yml for
360
360
  assistance via `rails g mongoid:config`.\n\n
361
361
  Example:\n
362
362
  \_\_development:\n
363
- \_\_\_\_sessions:\n
363
+ \_\_\_\_clients:\n
364
364
  \_\_\_\_\_\_default:\n
365
365
  \_\_\_\_\_\_\_\_database: mongoid_dev\n
366
366
  \_\_\_\_\_\_\_\_hosts:\n
367
367
  \_\_\_\_\_\_\_\_\_\_- localhost:27017\n\n"
368
- no_session_database:
369
- message: "No database provided for session configuration: :%{name}."
370
- summary: "Each session configuration must provide a database so Mongoid
368
+ no_client_database:
369
+ message: "No database provided for client configuration: :%{name}."
370
+ summary: "Each client configuration must provide a database so Mongoid
371
371
  knows where the default database to persist to. What was provided
372
372
  was: %{config}."
373
373
  resolution: "If configuring via a mongoid.yml, ensure that within
374
- your :%{name} section a :database value for the session's default
374
+ your :%{name} section a :database value for the client's default
375
375
  database is defined.\n\n
376
376
  Example:\n
377
377
  \_\_development:\n
378
- \_\_\_\_sessions:\n
378
+ \_\_\_\_clients:\n
379
379
  \_\_\_\_\_\_%{name}:\n
380
380
  \_\_\_\_\_\_\_\_database: my_app_db\n
381
381
  \_\_\_\_\_\_\_\_hosts:\n
382
382
  \_\_\_\_\_\_\_\_\_\_- localhost:27017\n\n"
383
- no_session_hosts:
384
- message: "No hosts provided for session configuration: :%{name}."
385
- summary: "Each session configuration must provide hosts so Mongoid
383
+ no_client_hosts:
384
+ message: "No hosts provided for client configuration: :%{name}."
385
+ summary: "Each client configuration must provide hosts so Mongoid
386
386
  knows where the database server is located. What was provided
387
387
  was: %{config}."
388
388
  resolution: "If configuring via a mongoid.yml, ensure that within
389
- your :%{name} section a :hosts value for the session hosts is
389
+ your :%{name} section a :hosts value for the client hosts is
390
390
  defined.\n\n
391
391
  Example:\n
392
392
  \_\_development:\n
393
- \_\_\_\_sessions:\n
393
+ \_\_\_\_clients:\n
394
394
  \_\_\_\_\_\_%{name}:\n
395
395
  \_\_\_\_\_\_\_\_database: my_app_db\n
396
396
  \_\_\_\_\_\_\_\_hosts:\n
@@ -13,14 +13,13 @@ require "active_support/time_with_zone"
13
13
  require "active_model"
14
14
 
15
15
  require "origin"
16
- require "moped"
16
+ require "mongo"
17
17
 
18
18
  require "mongoid/version"
19
19
  require "mongoid/config"
20
20
  require "mongoid/loggable"
21
- require "mongoid/sessions"
21
+ require "mongoid/clients"
22
22
  require "mongoid/document"
23
- require "mongoid/log_subscriber"
24
23
  require "mongoid/tasks/database"
25
24
  require "mongoid/query_cache"
26
25
 
@@ -35,9 +34,11 @@ I18n.load_path << File.join(File.dirname(__FILE__), "config", "locales", "en.yml
35
34
 
36
35
  module Mongoid
37
36
  extend Loggable
37
+ extend Gem::Deprecate
38
38
  extend self
39
39
 
40
- MONGODB_VERSION = "2.2.0"
40
+ # The minimum MongoDB version supported.
41
+ MONGODB_VERSION = "2.4.0"
41
42
 
42
43
  # Sets the Mongoid configuration options. Best used by passing a block.
43
44
  #
@@ -53,41 +54,47 @@ module Mongoid
53
54
  block_given? ? yield(Config) : Config
54
55
  end
55
56
 
56
- # Convenience method for getting the default session.
57
+ # Convenience method for getting the default client.
57
58
  #
58
- # @example Get the default session.
59
- # Mongoid.default_session
59
+ # @example Get the default client.
60
+ # Mongoid.default_client
60
61
  #
61
- # @return [ Moped::Session ] The default session.
62
+ # @return [ Mongo::Client ] The default client.
62
63
  #
63
64
  # @since 3.0.0
64
- def default_session
65
- Sessions.default
65
+ def default_client
66
+ Clients.default
66
67
  end
68
+ alias :default_session :default_client
69
+ deprecate :default_session, :default_client, 2015, 12
67
70
 
68
- # Disconnect all active sessions.
71
+ # Disconnect all active clients.
69
72
  #
70
- # @example Disconnect all active sessions.
71
- # Mongoid.disconnect_sessions
73
+ # @example Disconnect all active clients.
74
+ # Mongoid.disconnect_clients
72
75
  #
73
76
  # @return [ true ] True.
74
77
  #
75
78
  # @since 3.1.0
76
- def disconnect_sessions
77
- Sessions.disconnect
79
+ def disconnect_clients
80
+ Clients.disconnect
78
81
  end
82
+ alias :disconnect_sessions :disconnect_clients
83
+ deprecate :disconnect_sessions, :disconnect_clients, 2015, 12
79
84
 
80
- # Convenience method for getting a named session.
85
+ # Convenience method for getting a named client.
81
86
  #
82
- # @example Get a named session.
83
- # Mongoid.session(:default)
87
+ # @example Get a named client.
88
+ # Mongoid.client(:default)
84
89
  #
85
- # @return [ Moped::Session ] The named session.
90
+ # @return [ Mongo::Client ] The named client.
86
91
  #
87
92
  # @since 3.0.0
88
- def session(name)
89
- Sessions.with_name(name)
93
+ def client(name)
94
+ Clients.with_name(name)
90
95
  end
96
+ alias :session :client
97
+ deprecate :session, :client, 2015, 12
91
98
 
92
99
  # Take all the public instance methods from the Config singleton and allow
93
100
  # them to be accessed through the Mongoid module directly.
@@ -329,9 +329,7 @@ module Mongoid
329
329
  # @since 3.0.10
330
330
  def process_flagged_destroys
331
331
  _assigning do
332
- flagged_destroys.each do |block|
333
- block.call
334
- end
332
+ flagged_destroys.each(&:call)
335
333
  end
336
334
  flagged_destroys.clear
337
335
  end
@@ -373,7 +371,7 @@ module Mongoid
373
371
  # @since 3.0.6
374
372
  def touch_atomic_updates(field = nil)
375
373
  updates = atomic_updates
376
- return {} unless atomic_updates.has_key?("$set")
374
+ return {} unless atomic_updates.key?("$set")
377
375
  touches = {}
378
376
  updates["$set"].each_pair do |key, value|
379
377
  touches.merge!({ key => value }) if key =~ /updated_at|#{field}/
@@ -58,7 +58,7 @@ module Mongoid
58
58
  #
59
59
  # @since 3.0.0
60
60
  def has_attribute?(name)
61
- attributes.has_key?(name.to_s)
61
+ attributes.key?(name.to_s)
62
62
  end
63
63
 
64
64
  # Does the document have the provided attribute before it was assigned
@@ -74,7 +74,7 @@ module Mongoid
74
74
  #
75
75
  # @since 3.1.0
76
76
  def has_attribute_before_type_cast?(name)
77
- attributes_before_type_cast.has_key?(name.to_s)
77
+ attributes_before_type_cast.key?(name.to_s)
78
78
  end
79
79
 
80
80
  # Read a value from the document attributes. If the value does not exist
@@ -119,7 +119,7 @@ module Mongoid
119
119
  # @since 3.1.0
120
120
  def read_attribute_before_type_cast(name)
121
121
  attr = name.to_s
122
- if attributes_before_type_cast.has_key?(attr)
122
+ if attributes_before_type_cast.key?(attr)
123
123
  attributes_before_type_cast[attr]
124
124
  else
125
125
  read_attribute(attr)
@@ -256,9 +256,9 @@ module Mongoid
256
256
 
257
257
  def selection_included?(name, selection, field)
258
258
  if field && field.localized?
259
- selection.has_key?("#{name}.#{::I18n.locale}")
259
+ selection.key?("#{name}.#{::I18n.locale}")
260
260
  else
261
- selection.has_key?(name)
261
+ selection.key?(name)
262
262
  end
263
263
  end
264
264
 
@@ -273,7 +273,7 @@ module Mongoid
273
273
  #
274
274
  # @since 3.0.15
275
275
  def hash_dot_syntax?(string)
276
- string.include?(".")
276
+ string.include?(".".freeze)
277
277
  end
278
278
 
279
279
  # Return the typecasted value for a field.
@@ -288,7 +288,7 @@ module Mongoid
288
288
  #
289
289
  # @since 1.0.0
290
290
  def typed_value_for(key, value)
291
- fields.has_key?(key) ? fields[key].mongoize(value) : value.mongoize
291
+ fields.key?(key) ? fields[key].mongoize(value) : value.mongoize
292
292
  end
293
293
 
294
294
  module ClassMethods
@@ -92,7 +92,10 @@ module Mongoid
92
92
  #
93
93
  # @since 2.0.0.rc.7
94
94
  def process_attribute(name, value)
95
- responds = respond_to?("#{name}=")
95
+ if !respond_to?("#{name}=", true) && store_as = aliased_fields.invert[name.to_s]
96
+ name = store_as
97
+ end
98
+ responds = respond_to?("#{name}=", true)
96
99
  raise Errors::UnknownAttribute.new(self.class, name) unless responds
97
100
  send("#{name}=", value)
98
101
  end
@@ -23,7 +23,7 @@ module Mongoid
23
23
  #
24
24
  # @since 3.0.0
25
25
  def attribute_writable?(name)
26
- new_record? || !readonly_attributes.include?(name.to_s)
26
+ new_record? || !readonly_attributes.include?(database_field_name(name))
27
27
  end
28
28
 
29
29
  module ClassMethods
@@ -47,7 +47,7 @@ module Mongoid
47
47
  # @since 3.0.0
48
48
  def attr_readonly(*names)
49
49
  names.each do |name|
50
- readonly_attributes << name.to_s
50
+ readonly_attributes << database_field_name(name)
51
51
  end
52
52
  end
53
53
  end