mongoid 2.2.5 → 2.2.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +706 -2
- data/lib/mongoid/collection.rb +1 -1
- data/lib/mongoid/contexts/enumerable.rb +24 -0
- data/lib/mongoid/hierarchy.rb +84 -87
- data/lib/mongoid/logger.rb +7 -1
- data/lib/mongoid/relations/embedded/atomic.rb +3 -3
- data/lib/mongoid/relations/proxy.rb +1 -0
- data/lib/mongoid/version.rb +1 -1
- metadata +20 -20
data/CHANGELOG.md
CHANGED
@@ -3,18 +3,712 @@
|
|
3
3
|
For instructions on upgrading to newer versions, visit
|
4
4
|
[mongoid.org](http://mongoid.org/docs/upgrading.html).
|
5
5
|
|
6
|
-
##
|
6
|
+
## 3.0.0 (branch: master)
|
7
|
+
|
8
|
+
### New Features
|
9
|
+
|
10
|
+
* \#1741 Mongoid now provides a rake task to force remove indexes for
|
11
|
+
environments where Mongoid manages the index definitions and the
|
12
|
+
removal should be automated. (Hans Hasselberg)
|
13
|
+
|
14
|
+
rake db:force_remove_indexes
|
15
|
+
rake db:mongoid:force_remove_indexes
|
16
|
+
|
17
|
+
* \#1726 `Mongoid.load!` now accepts an optional second argument for the
|
18
|
+
environment to load. This takes precedence over any environment variable
|
19
|
+
that is set if provided.
|
20
|
+
|
21
|
+
Mongoid.load!("/path/to/mongoid.yml", :development)
|
22
|
+
|
23
|
+
* \#1724 Mongoid now supports regex fields.
|
24
|
+
|
25
|
+
class Rule
|
26
|
+
include Mongoid::Document
|
27
|
+
field :pattern, type: Regexp, default: /[^abc]/
|
28
|
+
end
|
29
|
+
|
30
|
+
* \#1714/\#1706 Added better logging on index creation. (Hans Hasselberg)
|
31
|
+
|
32
|
+
When an index is present on a root document model:
|
33
|
+
|
34
|
+
Creating indexes on: Model for: name, dob.
|
35
|
+
|
36
|
+
When an index is defined on an embedded model:
|
37
|
+
|
38
|
+
Index ignored on: Address, please define in the root model.
|
39
|
+
|
40
|
+
When no index is defined, nothing is logged, and if a bad index is
|
41
|
+
defined an error is raised.
|
42
|
+
|
43
|
+
* \#1710 For cases when you don't want Mongoid to auto-protect the id
|
44
|
+
and type attributes, you can set a configuration option to turn this
|
45
|
+
off.
|
46
|
+
|
47
|
+
Mongoid.protect_sensitive_fields = false
|
48
|
+
|
49
|
+
* \#1685 Belongs to relations now have build_ and create_ methods.
|
50
|
+
|
51
|
+
class Comment
|
52
|
+
include Mongoid::Document
|
53
|
+
belongs_to :user
|
54
|
+
end
|
55
|
+
|
56
|
+
comment = Comment.new
|
57
|
+
comment.build_user # Build a new user object
|
58
|
+
comment.create_user # Create a new user object
|
59
|
+
|
60
|
+
* \#1684 Raise a `Mongoid::Errors::InverseNotFound` when attempting to
|
61
|
+
set a child on a relation without the proper inverse_of definitions
|
62
|
+
due to Mongoid not being able to determine it.
|
63
|
+
|
64
|
+
class Lush
|
65
|
+
include Mongoid::Document
|
66
|
+
embeds_one :whiskey, class_name: "Drink"
|
67
|
+
end
|
68
|
+
|
69
|
+
class Drink
|
70
|
+
include Mongoid::Document
|
71
|
+
embedded_in :alcoholic, class_name: "Lush"
|
72
|
+
end
|
73
|
+
|
74
|
+
lush = Lush.new
|
75
|
+
lush.whiskey = Drink.new # raises an InverseNotFound error.
|
76
|
+
|
77
|
+
* \#1680 Polymorphic relations now use `*_type` keys in lookup queries.
|
78
|
+
|
79
|
+
class User
|
80
|
+
include Mongoid::Document
|
81
|
+
has_many :comments, as: :commentable
|
82
|
+
end
|
83
|
+
|
84
|
+
class Comment
|
85
|
+
include Mongoid::Document
|
86
|
+
belongs_to :commentable, polymorphic: true
|
87
|
+
end
|
88
|
+
|
89
|
+
user = User.find(id)
|
90
|
+
user.comments # Uses user.id and type "User" in the query.
|
91
|
+
|
92
|
+
* \#1677 Support for parent separable polymorphic relations to the same
|
93
|
+
parent class is now available. This only works if set from the parent
|
94
|
+
side in order to know which relation the children belong to.
|
95
|
+
(Douwe Maan)
|
96
|
+
|
97
|
+
class Face
|
98
|
+
include Mongoid::Document
|
99
|
+
has_one :left_eye, class_name: "Eye", as: :visible
|
100
|
+
has_one :right_eye, class_name: "Eye", as: :visible
|
101
|
+
end
|
102
|
+
|
103
|
+
class Eye
|
104
|
+
include Mongoid::Document
|
105
|
+
belongs_to :visible, polymorphic: true
|
106
|
+
end
|
107
|
+
|
108
|
+
face = Face.new
|
109
|
+
right_eye = Eye.new
|
110
|
+
left_eye = Eye.new
|
111
|
+
face.right_eye = right_eye
|
112
|
+
face.left_eye = left_eye
|
113
|
+
right_eye.visible = face # Will raise an error.
|
114
|
+
|
115
|
+
* \#1650 Objects that respond to \#to_criteria can now be merged into
|
116
|
+
existing criteria objects.
|
117
|
+
|
118
|
+
class Filter
|
119
|
+
def to_criteria
|
120
|
+
# return a Criteria object.
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
criteria = Person.where(title: "Sir")
|
125
|
+
criteria.merge(filter)
|
126
|
+
|
127
|
+
* \#1635 All exceptions now provide more comprehensive errors, including
|
128
|
+
the problem that occured, a detail summary of why it happened, and
|
129
|
+
potential resolutions. Example:
|
130
|
+
|
131
|
+
(Mongoid::Errors::DocumentNotFound)
|
132
|
+
Problem:
|
133
|
+
Document not found for class Town with
|
134
|
+
id(s) [BSON::ObjectId('4f35781b8ad54812e1000001')].
|
135
|
+
Summary:
|
136
|
+
When calling Town.find with an id or array of ids,
|
137
|
+
each parameter must match a document in the database
|
138
|
+
or this error will be raised.
|
139
|
+
Resolution:
|
140
|
+
Search for an id that is in the database or set the
|
141
|
+
Mongoid.raise_not_found_error configuration option to
|
142
|
+
false, which will cause a nil to be returned instead
|
143
|
+
of raising this error.
|
144
|
+
|
145
|
+
* \#1616 `Model.find_by` added which takes a hash of arugments to search
|
146
|
+
for in the database. If no single document is returned a DocumentNotFound
|
147
|
+
error is raised. (Piotr Jakubowski)
|
148
|
+
|
149
|
+
Band.find_by(name: "Depeche Mode")
|
150
|
+
|
151
|
+
* \#1477 Mongoid now automatically protects the id and type attributes
|
152
|
+
from mass assignment. You can override this (not recommended) by redefining
|
153
|
+
them as accessible.
|
154
|
+
|
155
|
+
class Band
|
156
|
+
include Mongoid::Document
|
157
|
+
attr_accessible :id, :_id, :_type
|
158
|
+
end
|
159
|
+
|
160
|
+
* \#1459 The identity map can be disabled now for specific code execution
|
161
|
+
by passing options to the unit of work.
|
162
|
+
|
163
|
+
Mongoid.unit_of_work(disable: :all) do
|
164
|
+
# Disables the identity map on all threads for the block.
|
165
|
+
end
|
166
|
+
|
167
|
+
Mongoid.unit_of_work(disable: :current) do
|
168
|
+
# Disables the identity map on the current thread for the block.
|
169
|
+
end
|
170
|
+
|
171
|
+
Mongoid.unit_of_work do
|
172
|
+
# Business as usual.
|
173
|
+
end
|
174
|
+
|
175
|
+
* \#1355 Associations now can have safety options provided to them on single
|
176
|
+
document persistence operations.
|
177
|
+
|
178
|
+
band.albums.safely.push(album)
|
179
|
+
band.albums.safely.create(name: "Smiths")
|
180
|
+
|
181
|
+
album.safely.create_producer(name: "Flood")
|
182
|
+
|
183
|
+
* \#1348 Eager loading is now supported on many-to-many relations.
|
184
|
+
|
185
|
+
* \#1292 Remove attribute now unsets the attribute when the document is
|
186
|
+
saved instead of setting to nil.
|
187
|
+
|
188
|
+
band = Band.find(id)
|
189
|
+
band.remove_attribute(:label) # Uses $unset when the document is saved.
|
190
|
+
|
191
|
+
* \#1212 Embedded documents can now be popped off a relation with persistence.
|
192
|
+
|
193
|
+
band.albums.pop # Pop 1 document and persist the removal.
|
194
|
+
band.albums.pop(3) # Pop 3 documents and persist the removal.
|
195
|
+
|
196
|
+
* \#1081 Mongoid indexes both id and type as a compound index when providing
|
197
|
+
`index: true` to a polymorphic belongs_to.
|
198
|
+
|
199
|
+
class Comment
|
200
|
+
include Mongoid::Document
|
201
|
+
|
202
|
+
# Indexes commentable_id and commentable_type as a compound index.
|
203
|
+
belongs_to :commentable, polymorphic: true, index: true
|
204
|
+
end
|
205
|
+
|
206
|
+
* \#1053 Raise a `Mongoid::Errors::UnknownAttribute` instead of no method
|
207
|
+
when attempting to set a field that is not defined and allow dynamic
|
208
|
+
fields is false. (Cyril Mougel)
|
209
|
+
|
210
|
+
Mongoid.allow_dynamic_fields = false
|
211
|
+
|
212
|
+
class Person
|
213
|
+
include Mongoid::Document
|
214
|
+
field :title, type: String
|
215
|
+
end
|
216
|
+
|
217
|
+
Person.new.age = 50 # raises the UnknownAttribute error.
|
218
|
+
|
219
|
+
* \#772 Fields can now be flagged as readonly, which will only let their
|
220
|
+
values be set when the document is new.
|
221
|
+
|
222
|
+
class Band
|
223
|
+
include Mongoid::Document
|
224
|
+
field :name, type: String
|
225
|
+
field :genre, type: String
|
226
|
+
|
227
|
+
attr_readonly :name, :genre
|
228
|
+
end
|
229
|
+
|
230
|
+
Readonly values are ignored when attempting to set them on persisted
|
231
|
+
documents, with the exception of update_attribute and remove_attribute,
|
232
|
+
where errors will get raised.
|
233
|
+
|
234
|
+
band = Band.create(name: "Depeche Mode")
|
235
|
+
band.update_attribute(:name, "Smiths") # Raises ReadonlyAttribute error.
|
236
|
+
band.remove_attribute(:name) # Raises ReadonlyAttribute error.
|
237
|
+
|
238
|
+
|
239
|
+
### Major Changes
|
240
|
+
|
241
|
+
* `Model.defaults` no longer exists. You may get all defaults with a
|
242
|
+
combination of `Model.pre_processed_defaults` and
|
243
|
+
`Model.post_processed_defaults`
|
244
|
+
|
245
|
+
* `Model.identity` and `Model.key` have been removed. For custom ids,
|
246
|
+
users must now override the _id field.
|
247
|
+
|
248
|
+
When the default value is a proc, the default is applied *after* all
|
249
|
+
other attributes are set.
|
250
|
+
|
251
|
+
class Band
|
252
|
+
include Mongoid::Document
|
253
|
+
field :_id, type: String, default: ->{ name }
|
254
|
+
end
|
255
|
+
|
256
|
+
To have the default applied *before* other attributes, set `:pre_processed`
|
257
|
+
to true.
|
258
|
+
|
259
|
+
class Band
|
260
|
+
include Mongoid::Document
|
261
|
+
field :_id,
|
262
|
+
type: String,
|
263
|
+
pre_processed: true,
|
264
|
+
default: ->{ BSON::ObjectId.new.to_s }
|
265
|
+
end
|
266
|
+
|
267
|
+
* Custom application exceptions in various languages has been removed,
|
268
|
+
along with the `Mongoid.add_language` feature.
|
269
|
+
|
270
|
+
* Mongoid no longer supports 1.8 syntax. 1.9.x or other vms running in
|
271
|
+
1.9 mode is now only supported.
|
272
|
+
|
273
|
+
* \#1734 When searching for documents via `Model.find` with multiple ids,
|
274
|
+
Mongoid will raise an error if not *all* ids are found, and tell you
|
275
|
+
what the missing ones were. Previously the error only got raised if
|
276
|
+
nothing was returned.
|
277
|
+
|
278
|
+
* \#1484 `Model#has_attribute?` now behaves the same as Active Record.
|
279
|
+
|
280
|
+
* \#1471 Mongoid no longer strips any level of precision off of times.
|
281
|
+
|
282
|
+
* \#1475 Active support's time zone is now used by default in time
|
283
|
+
serialization if it is defined.
|
284
|
+
|
285
|
+
* \#1342 `Model.find` and `model.relation.find` now only take a single or
|
286
|
+
multiple ids. The first/last/all with a conditions hash has been removed.
|
287
|
+
|
288
|
+
* \#1270 Relation macros have been changed to match their AR counterparts:
|
289
|
+
only :has_one, :has_many, :has_and_belongs_to_many, and :belongs_to
|
290
|
+
exist now.
|
291
|
+
|
292
|
+
* \#1268 `Model#new?` has been removed, developers must now always use
|
293
|
+
`Model#new_record?`.
|
294
|
+
|
295
|
+
* \#933 `:field.size` has been renamed to `:field.count` in criteria for
|
296
|
+
$size not to conflict with Symbol's size method.
|
297
|
+
|
298
|
+
### Resolved Issues
|
299
|
+
|
300
|
+
* \#1718 Ensure consistency of #first/#last in relations - they now always
|
301
|
+
match first/last in the database, but opts for in memory first.
|
302
|
+
|
303
|
+
* \#1692/\#1376 `Model#updateattributes` and `Model#update_attributes!` now
|
304
|
+
accept assignment options. (Hans Hasselberg)
|
305
|
+
|
306
|
+
* \#1688/\#1207 Don't require namespacing when providing class name on
|
307
|
+
relation macros inside the namespace. (Hans Hasselberg)
|
308
|
+
|
309
|
+
* \#1665/\#1672 Expand complex criteria in nested criteria selectors, like
|
310
|
+
\#matches. (Hans Hasselberg)
|
311
|
+
|
312
|
+
* \#1335 Don't add id sorting criteria to first/last is there is already
|
313
|
+
sorting options on the criteria.
|
314
|
+
|
315
|
+
* \#1135 DateTimes now properly get time zones on derserialization.
|
316
|
+
|
317
|
+
## 2.4.5 (branch: 2.4.0-stable)
|
318
|
+
|
319
|
+
### Resolved Issues
|
320
|
+
|
321
|
+
* \#1751 Mongoid's logger now responds to level for Ruby logging API
|
322
|
+
compatibility.
|
323
|
+
|
324
|
+
* \#1744/#1750 Sorting works now for localized fields in embedded documents
|
325
|
+
using the criteria API. (Hans Hasselberg)
|
326
|
+
|
327
|
+
* \#1746 Presence validation now shows which locales were empty for
|
328
|
+
localized fields. (Cyril Mougel)
|
329
|
+
|
330
|
+
* \#1727 Allow dot notation in embedded criteria to work on both embeds one
|
331
|
+
and embeds many. (Lyle Underwood)
|
332
|
+
|
333
|
+
* \#1723 Initialize callbacks should cascade through children without needing
|
334
|
+
to determine if the child is changed.
|
335
|
+
|
336
|
+
* \#1715 Serializable hashes are now consistent on inclusion of embedded
|
337
|
+
documents per or post save.
|
338
|
+
|
339
|
+
* \#1713 Fixing === checks when comparing a class with an instance of a
|
340
|
+
subclass.
|
341
|
+
|
342
|
+
* \#1495 Callbacks no longer get the 'super called outside of method` errors on
|
343
|
+
busted 1.8.7 rubies.
|
344
|
+
|
345
|
+
## 2.4.4
|
346
|
+
|
347
|
+
### Resolved Issues
|
348
|
+
|
349
|
+
* \#1705 Allow changing the order of many to many foreign keys.
|
350
|
+
|
351
|
+
* \#1703 Updated at is now versioned again. (Lucas Souza)
|
352
|
+
|
353
|
+
* \#1686 Set the base metadata on unbind as well as bind for belongs to
|
354
|
+
relations.
|
355
|
+
|
356
|
+
* \#1681 Attempt to create indexes for models without namespacing if the
|
357
|
+
namespace does not exist for the subdirectory.
|
358
|
+
|
359
|
+
* \#1676 Allow eager loading to work as a default scope.
|
360
|
+
|
361
|
+
* \#1665/\#1672 Expand complex criteria in nested criteria selectors, like
|
362
|
+
\#matches. (Hans Hasselberg)
|
363
|
+
|
364
|
+
* \#1668 Ensure Mongoid logger exists before calling warn. (Rémy Coutable)
|
365
|
+
|
366
|
+
* \#1661 Ensure uniqueness validation works on cloned documents.
|
367
|
+
|
368
|
+
* \#1659 Clear delayed atomic sets when resetting the same embedded relation.
|
369
|
+
|
370
|
+
* \#1656/\#1657 Don't hit database for uniqueness validation if BOTH scope
|
371
|
+
and attribute hasn't changed. (priyaaank)
|
372
|
+
|
373
|
+
* \#1205/\#1642 When limiting fields returned from the database via
|
374
|
+
`Criteria#only` and `Criteria#without` and then subsequently saving
|
375
|
+
the document. Default values no longer override excluded fields.
|
376
|
+
|
377
|
+
## 2.4.3
|
378
|
+
|
379
|
+
### Resolved Issues
|
380
|
+
|
381
|
+
* \#1647 DateTime serialization when already in UTC does not convert to
|
382
|
+
local time.
|
383
|
+
|
384
|
+
* \#1641/\#1639 Mongoid.observer.disable :all now behaves as AR does.
|
385
|
+
|
386
|
+
* \#1640 Update consumers should be tied to the name of the collection
|
387
|
+
they persist to, not the name of the class.
|
388
|
+
|
389
|
+
* \#1637/\#1636 Scopes no longer modify parent class scopes when subclassing.
|
390
|
+
(Hans Hasselberg)
|
391
|
+
|
392
|
+
* \#1629 $all and $in criteria on embedded many relations now properly
|
393
|
+
handles regex searches and elements of varying length. (Douwe Maan)
|
394
|
+
|
395
|
+
* \#1623/\#1634 Default scopes no longer break Mongoid::Versioning.
|
396
|
+
(Hans Hasselberg)
|
397
|
+
|
398
|
+
* \#1605 Fix regression of rescue responses, Rails 3.2
|
399
|
+
|
400
|
+
## 2.4.2
|
401
|
+
|
402
|
+
### Resolved Issues
|
403
|
+
|
404
|
+
* \#1628 _type field can once again be included in serialization to json
|
405
|
+
or xml as a global option with `include_type_for_serialization`.
|
406
|
+
(Roman Shterenzon)
|
407
|
+
|
408
|
+
* \#1627 Validating format now works properly with localized fields.
|
409
|
+
(Douwe Maan)
|
410
|
+
|
411
|
+
* \#1617 Relation proxy methods now show up in Mongoid's list of
|
412
|
+
prohibited fields.
|
413
|
+
|
414
|
+
* \#1615 Allow a single configuration of host and port for all spec runs,
|
415
|
+
overridden by setting MONGOID_SPEC_HOST and MONGOID_SPEC_PORT env vars.
|
416
|
+
|
417
|
+
* \#1610 When versioning paranoid documents and max version is set, hard
|
418
|
+
delete old versions from the embedded relation.
|
419
|
+
|
420
|
+
* \#1609 Allow connection retry during cursor iteration as well as all other
|
421
|
+
operations.
|
422
|
+
|
423
|
+
* \#1608 Guard against no method errors when passing ids in nested attributes
|
424
|
+
and the documents do not exist.
|
425
|
+
|
426
|
+
* \#1605 Remove deprecation warning on rescue responses, Rails 3.2
|
427
|
+
|
428
|
+
* \#1602 Preserve structure of $and and $or queries when typecasting.
|
429
|
+
|
430
|
+
* \#1600 Uniqueness validation no longer errors when provided a relation.
|
431
|
+
|
432
|
+
* \#1599 Make sure enumerable targets yield to what is in memory first when
|
433
|
+
performing #each, not always the unloaded first.
|
434
|
+
|
435
|
+
* \#1597 Fix the ability to change the order of array fields with the same
|
436
|
+
elements.
|
437
|
+
|
438
|
+
* \#1590 Allow proper serialization of boolean values in criteria where the
|
439
|
+
field is nested inside an array.
|
440
|
+
|
441
|
+
## 2.4.1
|
442
|
+
|
443
|
+
### Resolved Issues
|
444
|
+
|
445
|
+
* \#1593 Arrays on embedded documents now properly atomically update when
|
446
|
+
modified from original version.
|
447
|
+
|
448
|
+
* \#1592 Don't swallow exceptions from index generation in the create_indexes
|
449
|
+
rake task.
|
450
|
+
|
451
|
+
* \#1589 Allow assignment of empty array to HABTM when no documents are yet
|
452
|
+
loaded into memory.
|
453
|
+
|
454
|
+
* \#1587 When a previous value for an array field was an explicit nil, it can
|
455
|
+
now be reset atomically with new values.
|
456
|
+
|
457
|
+
* \#1585 `Model#respond_to?` returns true now for the setter when allowing
|
458
|
+
dynamic fields.
|
459
|
+
|
460
|
+
* \#1582 Allow nil values to be set in arrays.
|
461
|
+
|
462
|
+
* \#1580 Allow arrays to be set to nil post save, and not just empty.
|
463
|
+
|
464
|
+
* \#1579 Don't call #to_a on individual set field elements in criterion.
|
465
|
+
|
466
|
+
* \#1576 Don't hit database on uniqueness validation if the field getting
|
467
|
+
validated has not changed.
|
468
|
+
|
469
|
+
* \#1571 Aliased fields get all the dirty attribute methods and all getters and
|
470
|
+
setters for both the original name and the alias. (Hans Hasselberg)
|
471
|
+
|
472
|
+
* \#1568 Fallback to development environment with warning when no env configured.
|
473
|
+
|
474
|
+
* \#1565 For fields and foreign keys with non-standard Ruby or database names,
|
475
|
+
use define_method instead of class_eval for creating the accessors and
|
476
|
+
dirty methods.
|
477
|
+
|
478
|
+
* \#1557 Internal strategy class no longer conflicts with models.
|
479
|
+
|
480
|
+
* \#1551 Parent documents now return `true` for `Model#changed?` if only child
|
481
|
+
(embedded) documents have changed.
|
482
|
+
|
483
|
+
* \#1547 Resetting persisted children from a parent save when new waits until post
|
484
|
+
callbacks, mirroring update functionality.
|
485
|
+
|
486
|
+
* \#1536 Eager loading now happens when calling `first` or `last` on a
|
487
|
+
criteria if inclusions are specified.
|
488
|
+
|
489
|
+
## 2.4.0
|
7
490
|
|
8
491
|
### New Features
|
9
492
|
|
10
493
|
* Ranges can now be passed to #where criteria to create a $gte/$lte query under the
|
11
494
|
covers. `Person.where(dob: start_date...end_date)`
|
12
495
|
|
496
|
+
* Custom serializable fields can now override #selection to provide
|
497
|
+
customized serialization for criteria queries.
|
498
|
+
|
499
|
+
* \#1544 Internals use `Array.wrap` instead of `to_a` now where possible.
|
500
|
+
|
501
|
+
* \#1511 Presence validation now supports localized fields. (Tiago Rafael Godinho)
|
502
|
+
|
503
|
+
* \#1506 `Model.set` will now accept false and nil values. (Marten Veldthuis)
|
504
|
+
|
505
|
+
* \#1505 `Model.delete_all/destroy_all` now take either a :conditions hash or
|
506
|
+
the attributes directly.
|
507
|
+
|
508
|
+
* \#1504 `Model.recursively_embeds_many` now accepts a :cascade_callbacks
|
509
|
+
option. (Pavel Pravosud)
|
510
|
+
|
511
|
+
* \#1496 Mongoid now casts strings back to symbols for symbol fields that
|
512
|
+
get saved as strings by another application.
|
513
|
+
|
514
|
+
* \#1454, \#900 Associations now have an `after_build` callback that gets
|
515
|
+
executed after `.build` or `build_` methods are called.
|
516
|
+
(Jeffrey Jones, Ryan Townsend)
|
517
|
+
|
518
|
+
* \#1451 Ranges can now be any range value, not just numbers. (aupajo)
|
519
|
+
|
520
|
+
* \#1448 Localization is now used when sorting. (Hans Hasselberg)
|
521
|
+
|
522
|
+
* \#1422 Mongoid raises an error at yaml load if no environment is found.
|
523
|
+
(Tom Stuart)
|
524
|
+
|
525
|
+
* \#1413 $not support added to criteria symbol methods. (Marc Weil)
|
526
|
+
|
527
|
+
* \#1403 Added configuration option `scope_overwrite_exception` which defaults to
|
528
|
+
false for raising an error when defining a named scope with the same name of
|
529
|
+
an existing method. (Christoph Grabo)
|
530
|
+
|
531
|
+
* \#1388 `model.add_to_set` now supports adding multiple values and performs an
|
532
|
+
$addToSet with $each under the covers. (Christian Felder)
|
533
|
+
|
534
|
+
* \#1387 Added `Model#cache_key` for use in Rails caching. (Seivan Heidari)
|
535
|
+
|
536
|
+
* \#1380 Calling Model.find(id) will now properly convert to and from any type
|
537
|
+
based on the type of the _id field.
|
538
|
+
|
539
|
+
* \#1363 Added fallbacks and default support to localized fields, and added
|
540
|
+
ability to get and set all translations at once.
|
541
|
+
|
542
|
+
* \#1362 Aliased fields now properly typecast in criteria.
|
543
|
+
|
544
|
+
* \#1337 Array fields, including HABTM many foreign keys now have smarter dirty
|
545
|
+
checking and no longer perform a simple $set if the array has changed. If
|
546
|
+
items have only been added to the array, it performs a $pushAll. If items
|
547
|
+
have only been removed, it performs a $pullAll. If both additions and
|
548
|
+
removals have occurred it performs a $set to avoid conflicting mods.
|
549
|
+
|
13
550
|
### Resolved Issues
|
14
551
|
|
552
|
+
* Calling `Document#as_document` on a frozen document on Rubinius returns the
|
553
|
+
attributes instead of nil.
|
554
|
+
|
555
|
+
* \#1554 Split application of default values into proc/non-procs, where
|
556
|
+
non-procs get executed immediately during instantiation, and procs get
|
557
|
+
executed after all other values are set.
|
558
|
+
|
559
|
+
* \#1553 Combinations of adding and removing values from an array use a $set
|
560
|
+
on the current contents of the array, not the new values.
|
561
|
+
|
562
|
+
* \#1546 Dirty changes should be returned in a hash with indifferent access.
|
563
|
+
|
564
|
+
* \#1542 Eager loading now respects the options (ie skip, limit) provided to
|
565
|
+
the criteria when fetch the associations.
|
566
|
+
|
567
|
+
* \#1530 Don't duplicate added values to arrays via dirty tracking if the
|
568
|
+
array is a foreign key field.
|
569
|
+
|
570
|
+
* \#1529 Calling `unscoped` on relational associations now works properly.
|
571
|
+
|
572
|
+
* \#1524 Allow access to relations in overridden field setters by pre-setting
|
573
|
+
foreign key default values.
|
574
|
+
|
575
|
+
* \#1523 Allow disabling of observers via `disable`. (Jonas Schneider)
|
576
|
+
|
577
|
+
* \#1522 Fixed create indexes rake task for Rails 3.2. (Gray Manley)
|
578
|
+
|
579
|
+
* \#1517 Fix Mongoid documents to properly work with RSpec's stub_model.
|
580
|
+
(Tiago Rafael Godinho)
|
581
|
+
|
582
|
+
* \#1516 Don't duplicate relational many documents on bind.
|
583
|
+
|
584
|
+
* \#1515 Mongoid no longer attempts to serialize custom fields on complex
|
585
|
+
criteria by default.
|
586
|
+
|
587
|
+
* \#1503 Has many relation substitution now handles any kind of mix of existing
|
588
|
+
and new docs.
|
589
|
+
|
590
|
+
* \#1502 Nested attributes on embedded documents respects if the child is
|
591
|
+
paranoid.
|
592
|
+
|
593
|
+
* \#1497 Use provided message on failing uniqueness validation. (Justin Etheredge)
|
594
|
+
|
595
|
+
* \#1491 Return nil when no default set on localized fields. (Tiago Rafael Godinho)
|
596
|
+
|
597
|
+
* \#1483 Sending module includes at runtime which add new fields to a parent
|
598
|
+
document, also have the fields added to subclasses.
|
599
|
+
|
600
|
+
* \#1482 Applying new sorting options does not merge into previously
|
601
|
+
chained criteria. (Gerad Suyderhoud)
|
602
|
+
|
603
|
+
* \#1481 Fix invalid query when accessing many-to-many relations before
|
604
|
+
defaults are set.
|
605
|
+
|
606
|
+
* \#1480 Mongoid's internal serialized field types renamespaced to Internal in order
|
607
|
+
to not conflict with ruby core classes in custom serializable types.
|
608
|
+
|
609
|
+
* \#1479 Don't duplicate ids on many-to-many when using create or create!
|
610
|
+
|
611
|
+
* \#1469 When extract_id returns nil, get the document out of the identity map
|
612
|
+
by the criteria selector.
|
613
|
+
|
614
|
+
* \#1467 Defining a field named metadata now properly raises an invalid field
|
615
|
+
error.
|
616
|
+
|
617
|
+
* \#1463 Batch insert consumers are now scoped to collection to avoid persistence
|
618
|
+
of documents to other collections in callbacks going to the wrong place.
|
619
|
+
|
620
|
+
* \#1462 Assigning has many relations via nested attribtues `*_attributes=` does
|
621
|
+
not autosave the relation.
|
622
|
+
|
623
|
+
* \#1461 Fixed serialization of foreign key fields in complex criteria not to
|
624
|
+
escape the entire hash.
|
625
|
+
|
626
|
+
* \#1458 Versioning no longer skips fields that have been protected from mass
|
627
|
+
assignment.
|
628
|
+
|
629
|
+
* \#1455, \#1456 Calling destroy on any document now temporarily marks it as
|
630
|
+
flagged for destroy until the operation is complete. (Nader Akhnoukh)
|
631
|
+
|
632
|
+
* \#1453 `Model#to_key` should return a value when the document is destroyed.
|
633
|
+
|
634
|
+
* \#1449 New documents no longer get persisted when replaced on a has one as
|
635
|
+
a side effect. (jasonsydes)
|
636
|
+
|
637
|
+
* \#1439 embedded? should return true when relation defined as cyclic.
|
638
|
+
|
639
|
+
* \#1433 Polymorphic nested attributes for embedded and relational 1-1 now
|
640
|
+
update properly.
|
641
|
+
|
642
|
+
* \#1426 Frozen documents can now be cloned. (aagrawal2001)
|
643
|
+
|
644
|
+
* \#1382 Raise proper error when creating indexes via rake task if index
|
645
|
+
definition is incorrect. (Mathieu Ravaux)
|
646
|
+
|
647
|
+
* \#1381, \#1371 The identity map now functions properly with inherited
|
648
|
+
documents. (Paul Canavese)
|
649
|
+
|
650
|
+
* \#1370 Split concat on embedded arrays into its own method to handle the
|
651
|
+
batch processing due to after callback run execution issues.
|
652
|
+
|
653
|
+
* \#1366 Array and hash values now get deep copied for dirty tracking.
|
654
|
+
|
655
|
+
* \#1359 Provide ability to not have default scope applied to all named
|
656
|
+
scopes via using lambdas.
|
657
|
+
|
15
658
|
* \#1333 Fixed errors with custom types that exist in namespaces. (Peter Gumeson)
|
16
659
|
|
17
|
-
|
660
|
+
* \#1259 Default values are treated as dirty if they differ from the database
|
661
|
+
state.
|
662
|
+
|
663
|
+
* \#1255 Ensure embedded documents respect the defined default scope.
|
664
|
+
|
665
|
+
## 2.3.4
|
666
|
+
|
667
|
+
* \#1445 Prevent duplicate documents in the loaded array on the target
|
668
|
+
enumerable for relational associations.
|
669
|
+
|
670
|
+
* \#1442 When using create_ methods for has one relations, the appropriate
|
671
|
+
destructive methods now get called when replacing an existing document.
|
672
|
+
|
673
|
+
* \#1431 Enumerable context should add to the loaded array post yield, so
|
674
|
+
that methods like #any? that short circuit based on the value of the block
|
675
|
+
dont falsely have extra documents.
|
676
|
+
|
677
|
+
* \#1418 Documents being loaded from the database for revision purposes
|
678
|
+
no longer get placed in the identity map.
|
679
|
+
|
680
|
+
* \#1399 Allow conversion of strings to integers in foreign keys where the
|
681
|
+
id is defined as an int.
|
682
|
+
|
683
|
+
* \#1397 Don't add default sorting criteria on first if they sort criteria
|
684
|
+
already exists.
|
685
|
+
|
686
|
+
* \#1394 Fix exists? to work when count is greater than 1. (Nick Hoffman)
|
687
|
+
|
688
|
+
* \#1392 Return 0 on aggregation functions where field is nonexistant.
|
689
|
+
|
690
|
+
* \#1391 Uniqueness validation now works properly on embedded documents that are
|
691
|
+
using primary key definitions.
|
692
|
+
|
693
|
+
* \#1390 When _type field is lower case class camelize before constantizing.
|
694
|
+
|
695
|
+
* \#1383 Fix cast on read for serializable fields that are subclassed.
|
696
|
+
|
697
|
+
* \#1357 Delayed atomic sets from update_attributes on embedded documents
|
698
|
+
multiple levels deep now properly persist.
|
699
|
+
|
700
|
+
* \#1326 Ensure base document on HABTM gets its keys saved after saving a newly
|
701
|
+
build child document.
|
702
|
+
|
703
|
+
* \#1301 Don't overwrite base metadata on embedded in relations if already set.
|
704
|
+
|
705
|
+
* \#1221 HABTM with inverse nil is allowed again on embedded documents.
|
706
|
+
|
707
|
+
* \#1208 Don't auto-persist child documents via the setter when setting from
|
708
|
+
an embedded_in.
|
709
|
+
|
710
|
+
* \#791 Root document updates its timestamps when only embedded documents have
|
711
|
+
changed.
|
18
712
|
|
19
713
|
## 2.3.3
|
20
714
|
|
@@ -211,6 +905,16 @@ For instructions on upgrading to newer versions, visit
|
|
211
905
|
* Deleting versions created with `Mongoid::Versioning` no longer fires off
|
212
906
|
dependent cascading on relations.
|
213
907
|
|
908
|
+
## 2.2.6
|
909
|
+
|
910
|
+
* \#1751 Mongoid's logger now responds to level for Ruby logging API
|
911
|
+
compatibility.
|
912
|
+
|
913
|
+
## 2.2.5
|
914
|
+
|
915
|
+
* This was a small patch release to address 2.2.x Heroku errors during asset
|
916
|
+
compilation.
|
917
|
+
|
214
918
|
## 2.2.4
|
215
919
|
|
216
920
|
* \#1377 Fix aggregation functions to properly handle nil or indefined values.
|
data/lib/mongoid/collection.rb
CHANGED
@@ -142,7 +142,7 @@ module Mongoid #:nodoc
|
|
142
142
|
#
|
143
143
|
# @since 2.0.0
|
144
144
|
def update(selector, document, options = {})
|
145
|
-
updater = Threaded.update_consumer(
|
145
|
+
updater = Threaded.update_consumer(name)
|
146
146
|
if updater
|
147
147
|
updater.consume(selector, document, options)
|
148
148
|
else
|
@@ -210,6 +210,18 @@ module Mongoid #:nodoc:
|
|
210
210
|
|
211
211
|
protected
|
212
212
|
|
213
|
+
# Get the root class collection name.
|
214
|
+
#
|
215
|
+
# @example Get the root class collection name.
|
216
|
+
# context.collection_name
|
217
|
+
#
|
218
|
+
# @return [ String ] The name of the collection.
|
219
|
+
#
|
220
|
+
# @since 2.4.3
|
221
|
+
def collection_name
|
222
|
+
root ? root.collection_name : nil
|
223
|
+
end
|
224
|
+
|
213
225
|
# Filters the documents against the criteria's selector
|
214
226
|
#
|
215
227
|
# @example Filter the documents.
|
@@ -251,10 +263,22 @@ module Mongoid #:nodoc:
|
|
251
263
|
documents
|
252
264
|
end
|
253
265
|
|
266
|
+
# Get the root document for the enumerable.
|
267
|
+
#
|
268
|
+
# @example Get the root document.
|
269
|
+
# context.root
|
270
|
+
#
|
271
|
+
# @return [ Document ] The root.
|
254
272
|
def root
|
255
273
|
@root ||= documents.first.try(:_root)
|
256
274
|
end
|
257
275
|
|
276
|
+
# Get the root class for the enumerable.
|
277
|
+
#
|
278
|
+
# @example Get the root class.
|
279
|
+
# context.root_class
|
280
|
+
#
|
281
|
+
# @return [ Class ] The root class.
|
258
282
|
def root_class
|
259
283
|
@root_class ||= root ? root.class : nil
|
260
284
|
end
|
data/lib/mongoid/hierarchy.rb
CHANGED
@@ -20,101 +20,98 @@ module Mongoid #:nodoc
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
children.concat(doc._children) unless metadata.versioned?
|
45
|
-
end if child
|
46
|
-
end
|
23
|
+
# Get all child +Documents+ to this +Document+, going n levels deep if
|
24
|
+
# necessary. This is used when calling update persistence operations from
|
25
|
+
# the root document, where changes in the entire tree need to be
|
26
|
+
# determined. Note that persistence from the embedded documents will
|
27
|
+
# always be preferred, since they are optimized calls... This operation
|
28
|
+
# can get expensive in domains with large hierarchies.
|
29
|
+
#
|
30
|
+
# @example Get all the document's children.
|
31
|
+
# person._children
|
32
|
+
#
|
33
|
+
# @return [ Array<Document> ] All child documents in the hierarchy.
|
34
|
+
def _children
|
35
|
+
@_children ||=
|
36
|
+
[].tap do |children|
|
37
|
+
relations.each_pair do |name, metadata|
|
38
|
+
if metadata.embedded?
|
39
|
+
child = send(name)
|
40
|
+
child.to_a.each do |doc|
|
41
|
+
children.push(doc)
|
42
|
+
children.concat(doc._children) unless metadata.versioned?
|
43
|
+
end if child
|
47
44
|
end
|
48
45
|
end
|
49
|
-
|
46
|
+
end
|
47
|
+
end
|
50
48
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
49
|
+
# Determines if the document is a subclass of another document.
|
50
|
+
#
|
51
|
+
# @example Check if the document is a subclass
|
52
|
+
# Square.new.hereditary?
|
53
|
+
#
|
54
|
+
# @return [ true, false ] True if hereditary, false if not.
|
55
|
+
def hereditary?
|
56
|
+
self.class.hereditary?
|
57
|
+
end
|
60
58
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
59
|
+
# Sets up a child/parent association. This is used for newly created
|
60
|
+
# objects so they can be properly added to the graph.
|
61
|
+
#
|
62
|
+
# @example Set the parent document.
|
63
|
+
# document.parentize(parent)
|
64
|
+
#
|
65
|
+
# @param [ Document ] document The parent document.
|
66
|
+
#
|
67
|
+
# @return [ Document ] The parent document.
|
68
|
+
def parentize(document)
|
69
|
+
self._parent = document
|
70
|
+
end
|
73
71
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
72
|
+
# Remove a child document from this parent. If an embeds one then set to
|
73
|
+
# nil, otherwise remove from the embeds many.
|
74
|
+
#
|
75
|
+
# This is called from the +RemoveEmbedded+ persistence command.
|
76
|
+
#
|
77
|
+
# @example Remove the child.
|
78
|
+
# document.remove_child(child)
|
79
|
+
#
|
80
|
+
# @param [ Document ] child The child (embedded) document to remove.
|
81
|
+
#
|
82
|
+
# @since 2.0.0.beta.1
|
83
|
+
def remove_child(child)
|
84
|
+
name = child.metadata.name
|
85
|
+
child.embedded_one? ? remove_ivar(name) : send(name).delete_one(child)
|
86
|
+
end
|
89
87
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
end
|
88
|
+
# After children are persisted we can call this to move all their changes
|
89
|
+
# and flag them as persisted in one call.
|
90
|
+
#
|
91
|
+
# @example Reset the children.
|
92
|
+
# document.reset_persisted_children
|
93
|
+
#
|
94
|
+
# @return [ Array<Document> ] The children.
|
95
|
+
#
|
96
|
+
# @since 2.1.0
|
97
|
+
def reset_persisted_children
|
98
|
+
_children.each do |child|
|
99
|
+
child.move_changes
|
100
|
+
child.new_record = false
|
104
101
|
end
|
102
|
+
end
|
105
103
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
end
|
104
|
+
# Return the root document in the object graph. If the current document
|
105
|
+
# is the root object in the graph it will return self.
|
106
|
+
#
|
107
|
+
# @example Get the root document in the hierarchy.
|
108
|
+
# document._root
|
109
|
+
#
|
110
|
+
# @return [ Document ] The root document in the hierarchy.
|
111
|
+
def _root
|
112
|
+
object = self
|
113
|
+
while (object._parent) do object = object._parent; end
|
114
|
+
object || self
|
118
115
|
end
|
119
116
|
end
|
120
117
|
end
|
data/lib/mongoid/logger.rb
CHANGED
@@ -4,7 +4,13 @@ module Mongoid #:nodoc:
|
|
4
4
|
# The Mongoid logger which wraps some other ruby compliant logger class.
|
5
5
|
class Logger
|
6
6
|
|
7
|
-
delegate
|
7
|
+
delegate \
|
8
|
+
:info,
|
9
|
+
:debug,
|
10
|
+
:error,
|
11
|
+
:fatal,
|
12
|
+
:level,
|
13
|
+
:unknown, :to => :logger, :allow_nil => true
|
8
14
|
|
9
15
|
# Emit a warning log message.
|
10
16
|
#
|
@@ -55,13 +55,13 @@ module Mongoid #:nodoc:
|
|
55
55
|
#
|
56
56
|
# @since 2.0.0
|
57
57
|
def atomically(modifier, &block)
|
58
|
-
updater = Threaded.update_consumer(
|
59
|
-
Threaded.set_update_consumer(
|
58
|
+
updater = Threaded.update_consumer(collection_name) ||
|
59
|
+
Threaded.set_update_consumer(collection_name, MODIFIERS[modifier].new)
|
60
60
|
count_executions do
|
61
61
|
block.call if block
|
62
62
|
end.tap do
|
63
63
|
if @executions.zero?
|
64
|
-
Threaded.set_update_consumer(
|
64
|
+
Threaded.set_update_consumer(collection_name, nil)
|
65
65
|
updater.execute(collection)
|
66
66
|
end
|
67
67
|
end
|
@@ -17,6 +17,7 @@ module Mongoid # :nodoc:
|
|
17
17
|
# Backwards compatibility with Mongoid beta releases.
|
18
18
|
delegate :klass, :to => :metadata
|
19
19
|
delegate :bind_one, :unbind_one, :to => :binding
|
20
|
+
delegate :collection_name, :to => :base
|
20
21
|
|
21
22
|
# Convenience for setting the target and the metadata properties since
|
22
23
|
# all proxies will need to do this.
|
data/lib/mongoid/version.rb
CHANGED
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: 2.2.
|
4
|
+
version: 2.2.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-02-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activemodel
|
16
|
-
requirement: &
|
16
|
+
requirement: &70168480357500 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 3.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70168480357500
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: tzinfo
|
27
|
-
requirement: &
|
27
|
+
requirement: &70168480357020 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.3.22
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70168480357020
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mongo
|
38
|
-
requirement: &
|
38
|
+
requirement: &70168480356540 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '1.3'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70168480356540
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rdoc
|
49
|
-
requirement: &
|
49
|
+
requirement: &70168480356060 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 3.5.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70168480356060
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: bson_ext
|
60
|
-
requirement: &
|
60
|
+
requirement: &70168480355580 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '1.3'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70168480355580
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mocha
|
71
|
-
requirement: &
|
71
|
+
requirement: &70168480355100 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.9.12
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70168480355100
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &70168480354620 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '2.6'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70168480354620
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: watchr
|
93
|
-
requirement: &
|
93
|
+
requirement: &70168480354140 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: '0.6'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70168480354140
|
102
102
|
description: Mongoid is an ODM (Object Document Mapper) Framework for MongoDB, written
|
103
103
|
in Ruby.
|
104
104
|
email:
|
@@ -385,7 +385,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
385
385
|
version: '0'
|
386
386
|
segments:
|
387
387
|
- 0
|
388
|
-
hash:
|
388
|
+
hash: -2081146589811076586
|
389
389
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
390
390
|
none: false
|
391
391
|
requirements:
|