mongoid 2.1.5 → 2.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/mongoid/dirty.rb +18 -1
- data/lib/mongoid/document.rb +1 -5
- data/lib/mongoid/extensions.rb +2 -0
- data/lib/mongoid/extensions/object/substitutable.rb +15 -0
- data/lib/mongoid/fields.rb +4 -4
- data/lib/mongoid/fields/serializable/foreign_keys/array.rb +1 -1
- data/lib/mongoid/relations.rb +17 -0
- data/lib/mongoid/relations/accessors.rb +4 -23
- data/lib/mongoid/relations/embedded/in.rb +13 -0
- data/lib/mongoid/relations/embedded/many.rb +3 -0
- data/lib/mongoid/relations/metadata.rb +13 -1
- data/lib/mongoid/relations/proxy.rb +13 -1
- data/lib/mongoid/relations/referenced/in.rb +12 -0
- data/lib/mongoid/relations/referenced/many.rb +2 -9
- data/lib/mongoid/relations/referenced/many_to_many.rb +34 -30
- data/lib/mongoid/relations/synchronization.rb +1 -0
- data/lib/mongoid/relations/targets/enumerable.rb +14 -0
- data/lib/mongoid/version.rb +1 -1
- metadata +20 -19
data/lib/mongoid/dirty.rb
CHANGED
@@ -21,7 +21,9 @@ module Mongoid #:nodoc:
|
|
21
21
|
{}.tap do |hash|
|
22
22
|
changed.each do |name|
|
23
23
|
change = attribute_change(name)
|
24
|
-
|
24
|
+
if change
|
25
|
+
hash[name] = change if change[0] != change[1]
|
26
|
+
end
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
@@ -89,5 +91,20 @@ module Mongoid #:nodoc:
|
|
89
91
|
def attribute_change(attr)
|
90
92
|
[changed_attributes[attr], attributes[attr]] if attribute_changed?(attr)
|
91
93
|
end
|
94
|
+
|
95
|
+
# Determine if a specific attribute has changed.
|
96
|
+
#
|
97
|
+
# @note Overriding AM::Dirty once again since their implementation is not
|
98
|
+
# friendly to fields that can be changed in place.
|
99
|
+
#
|
100
|
+
# @param [ String ] attr The name of the attribute.
|
101
|
+
#
|
102
|
+
# @return [ true, false ] Whether the attribute has changed.
|
103
|
+
#
|
104
|
+
# @since 2.1.6
|
105
|
+
def attribute_changed?(attr)
|
106
|
+
return false unless changed_attributes.include?(attr)
|
107
|
+
changed_attributes[attr] != attributes[attr]
|
108
|
+
end
|
92
109
|
end
|
93
110
|
end
|
data/lib/mongoid/document.rb
CHANGED
@@ -154,11 +154,7 @@ module Mongoid #:nodoc:
|
|
154
154
|
changed_attributes.clear
|
155
155
|
apply_default_attributes
|
156
156
|
tap do
|
157
|
-
|
158
|
-
if instance_variable_defined?("@#{name}")
|
159
|
-
remove_instance_variable("@#{name}")
|
160
|
-
end
|
161
|
-
end
|
157
|
+
reload_relations
|
162
158
|
run_callbacks(:initialize)
|
163
159
|
end
|
164
160
|
end
|
data/lib/mongoid/extensions.rb
CHANGED
@@ -6,6 +6,7 @@ require "mongoid/extensions/hash/scoping"
|
|
6
6
|
require "mongoid/extensions/nil/collectionization"
|
7
7
|
require "mongoid/extensions/object/checks"
|
8
8
|
require "mongoid/extensions/object/reflections"
|
9
|
+
require "mongoid/extensions/object/substitutable"
|
9
10
|
require "mongoid/extensions/object/yoda"
|
10
11
|
require "mongoid/extensions/proc/scoping"
|
11
12
|
require "mongoid/extensions/string/conversions"
|
@@ -37,6 +38,7 @@ end
|
|
37
38
|
class Object #:nodoc:
|
38
39
|
include Mongoid::Extensions::Object::Checks
|
39
40
|
include Mongoid::Extensions::Object::Reflections
|
41
|
+
include Mongoid::Extensions::Object::Substitutable
|
40
42
|
include Mongoid::Extensions::Object::Yoda
|
41
43
|
end
|
42
44
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc:
|
3
|
+
module Extensions #:nodoc:
|
4
|
+
module Object #:nodoc:
|
5
|
+
|
6
|
+
# This module is for defining base substitutable behaviour.
|
7
|
+
module Substitutable #:nodoc:
|
8
|
+
|
9
|
+
def substitutable
|
10
|
+
self
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/mongoid/fields.rb
CHANGED
@@ -242,11 +242,11 @@ module Mongoid #:nodoc
|
|
242
242
|
end
|
243
243
|
else
|
244
244
|
define_method(meth) do
|
245
|
-
|
246
|
-
|
247
|
-
|
245
|
+
read_attribute(name).tap do |value|
|
246
|
+
if value.is_a?(Array) || value.is_a?(Hash)
|
247
|
+
changed_attributes[name] = value.clone unless attribute_changed?(name)
|
248
|
+
end
|
248
249
|
end
|
249
|
-
value
|
250
250
|
end
|
251
251
|
end
|
252
252
|
define_method("#{meth}=") do |value|
|
data/lib/mongoid/relations.rb
CHANGED
@@ -107,5 +107,22 @@ module Mongoid # :nodoc:
|
|
107
107
|
def referenced_one?
|
108
108
|
metadata && metadata.macro == :references_one
|
109
109
|
end
|
110
|
+
|
111
|
+
# Convenience method for iterating through the loaded relations and
|
112
|
+
# reloading them.
|
113
|
+
#
|
114
|
+
# @example Reload the relations.
|
115
|
+
# document.reload_relations
|
116
|
+
#
|
117
|
+
# @return [ Hash ] The relations metadata.
|
118
|
+
#
|
119
|
+
# @since 2.1.6
|
120
|
+
def reload_relations
|
121
|
+
relations.each_pair do |name, meta|
|
122
|
+
if instance_variable_defined?("@#{name}")
|
123
|
+
remove_instance_variable("@#{name}")
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
110
127
|
end
|
111
128
|
end
|
@@ -74,20 +74,6 @@ module Mongoid # :nodoc:
|
|
74
74
|
instance_variable_set("@#{name}", relation)
|
75
75
|
end
|
76
76
|
|
77
|
-
# Replace an existing relation with a new one.
|
78
|
-
#
|
79
|
-
# @example Replace the relation.
|
80
|
-
# document.substitute("addresses", Address.new)
|
81
|
-
#
|
82
|
-
# @param [ String ] name The name of the relation.
|
83
|
-
# @param [ Document ] object The document to replace with.
|
84
|
-
# @param [ Hash ] options The options.
|
85
|
-
#
|
86
|
-
# @since 2.0.0
|
87
|
-
def substitute(name, object)
|
88
|
-
set_relation(name, ivar(name).substitute(object))
|
89
|
-
end
|
90
|
-
|
91
77
|
module ClassMethods #:nodoc:
|
92
78
|
|
93
79
|
# Defines the getter for the relation. Nothing too special here: just
|
@@ -134,16 +120,11 @@ module Mongoid # :nodoc:
|
|
134
120
|
# @since 2.0.0.rc.1
|
135
121
|
def setter(name, metadata)
|
136
122
|
tap do
|
137
|
-
define_method("#{name}=") do
|
138
|
-
|
139
|
-
|
140
|
-
substitute(name, object)
|
123
|
+
define_method("#{name}=") do |object|
|
124
|
+
if relation_exists?(name) || metadata.many?
|
125
|
+
set_relation(name, send(name).substitute(object.substitutable))
|
141
126
|
else
|
142
|
-
|
143
|
-
substitute(name, object)
|
144
|
-
else
|
145
|
-
build(name, object, metadata)
|
146
|
-
end
|
127
|
+
set_relation(name, build(name, object.substitutable, metadata))
|
147
128
|
end
|
148
129
|
end
|
149
130
|
end
|
@@ -26,6 +26,18 @@ module Mongoid # :nodoc:
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
# This substituable does not clone.
|
30
|
+
#
|
31
|
+
# @example Get the substitutable.
|
32
|
+
# proxy.substitutable
|
33
|
+
#
|
34
|
+
# @return [ Object ] The target.
|
35
|
+
#
|
36
|
+
# @since 2.1.6
|
37
|
+
def substitutable
|
38
|
+
target
|
39
|
+
end
|
40
|
+
|
29
41
|
# Substitutes the supplied target documents for the existing document
|
30
42
|
# in the relation.
|
31
43
|
#
|
@@ -44,6 +56,7 @@ module Mongoid # :nodoc:
|
|
44
56
|
base.delete unless binding?
|
45
57
|
return nil
|
46
58
|
end
|
59
|
+
base.new_record = true
|
47
60
|
proxy.target = replacement
|
48
61
|
proxy.bind_one
|
49
62
|
end
|
@@ -231,6 +231,9 @@ module Mongoid # :nodoc:
|
|
231
231
|
proxy.clear
|
232
232
|
else
|
233
233
|
atomically(:$set) do
|
234
|
+
if replacement.first.is_a?(Hash)
|
235
|
+
replacement = Many.builder(metadata, replacement).build
|
236
|
+
end
|
234
237
|
proxy.target = replacement.compact
|
235
238
|
proxy.target.each_with_index do |doc, index|
|
236
239
|
integrate(doc)
|
@@ -375,7 +375,7 @@ module Mongoid # :nodoc:
|
|
375
375
|
# @since 2.0.0.rc.1
|
376
376
|
def inverse_foreign_key
|
377
377
|
@inverse_foreign_key ||=
|
378
|
-
( inverse_of ? inverse_of.to_s.singularize : inverse_class_name.underscore ) <<
|
378
|
+
( inverse_of ? inverse_of.to_s.singularize : inverse_class_name.demodulize.underscore ) <<
|
379
379
|
relation.foreign_key_suffix
|
380
380
|
end
|
381
381
|
|
@@ -496,6 +496,18 @@ module Mongoid # :nodoc:
|
|
496
496
|
@klass ||= class_name.constantize
|
497
497
|
end
|
498
498
|
|
499
|
+
# Is this metadata representing a one to many or many to many relation?
|
500
|
+
#
|
501
|
+
# @example Is the relation a many?
|
502
|
+
# metadata.many?
|
503
|
+
#
|
504
|
+
# @return [ true, false ] If the relation is a many.
|
505
|
+
#
|
506
|
+
# @since 2.1.6
|
507
|
+
def many?
|
508
|
+
@many ||= relation.macro =~ /many/
|
509
|
+
end
|
510
|
+
|
499
511
|
# Returns the macro for the relation of this metadata.
|
500
512
|
#
|
501
513
|
# @example Get the macro.
|
@@ -16,7 +16,6 @@ module Mongoid # :nodoc:
|
|
16
16
|
|
17
17
|
# Backwards compatibility with Mongoid beta releases.
|
18
18
|
delegate :klass, :to => :metadata
|
19
|
-
|
20
19
|
delegate :bind_one, :unbind_one, :to => :binding
|
21
20
|
|
22
21
|
# Convenience for setting the target and the metadata properties since
|
@@ -36,6 +35,19 @@ module Mongoid # :nodoc:
|
|
36
35
|
extend metadata.extension if metadata.extension?
|
37
36
|
end
|
38
37
|
|
38
|
+
# The default substitutable object for a relation proxy is the clone of
|
39
|
+
# the target.
|
40
|
+
#
|
41
|
+
# @example Get the substitutable.
|
42
|
+
# proxy.substitutable
|
43
|
+
#
|
44
|
+
# @return [ Object ] A clone of the target.
|
45
|
+
#
|
46
|
+
# @since 2.1.6
|
47
|
+
def substitutable
|
48
|
+
target.clone
|
49
|
+
end
|
50
|
+
|
39
51
|
protected
|
40
52
|
|
41
53
|
# Is the current thread in binding mode?
|
@@ -25,6 +25,18 @@ module Mongoid # :nodoc:
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
# This substituable does not clone.
|
29
|
+
#
|
30
|
+
# @example Get the substitutable.
|
31
|
+
# proxy.substitutable
|
32
|
+
#
|
33
|
+
# @return [ Object ] The target.
|
34
|
+
#
|
35
|
+
# @since 2.1.6
|
36
|
+
def substitutable
|
37
|
+
target
|
38
|
+
end
|
39
|
+
|
28
40
|
# Substitutes the supplied target documents for the existing document
|
29
41
|
# in the relation.
|
30
42
|
#
|
@@ -214,15 +214,8 @@ module Mongoid #:nodoc:
|
|
214
214
|
#
|
215
215
|
# @since 2.0.0.beta.1
|
216
216
|
def initialize(base, target, metadata)
|
217
|
-
init(base, Targets::Enumerable.new(target), metadata) do
|
217
|
+
init(base, Targets::Enumerable.new(target), metadata) do
|
218
218
|
raise_mixed if klass.embedded?
|
219
|
-
batched do
|
220
|
-
proxy.in_memory do |doc|
|
221
|
-
characterize_one(doc)
|
222
|
-
bind_one(doc)
|
223
|
-
doc.save if persistable?
|
224
|
-
end
|
225
|
-
end
|
226
219
|
end
|
227
220
|
end
|
228
221
|
|
@@ -275,7 +268,7 @@ module Mongoid #:nodoc:
|
|
275
268
|
def substitute(replacement)
|
276
269
|
tap do |proxy|
|
277
270
|
proxy.purge
|
278
|
-
proxy.push(replacement) if replacement
|
271
|
+
proxy.push(replacement.compact) if replacement
|
279
272
|
end
|
280
273
|
end
|
281
274
|
|
@@ -132,36 +132,6 @@ module Mongoid # :nodoc:
|
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
135
|
-
# Instantiate a new references_many relation. Will set the foreign key
|
136
|
-
# and the base on the inverse object.
|
137
|
-
#
|
138
|
-
# @example Create the new relation.
|
139
|
-
# Referenced::Many.new(base, target, metadata)
|
140
|
-
#
|
141
|
-
# @param [ Document ] base The document this relation hangs off of.
|
142
|
-
# @param [ Array<Document> ] target The target of the relation.
|
143
|
-
# @param [ Metadata ] metadata The relation's metadata.
|
144
|
-
#
|
145
|
-
# @since 2.0.0.beta.1
|
146
|
-
def initialize(base, target, metadata)
|
147
|
-
init(base, Targets::Enumerable.new(target), metadata) do |proxy|
|
148
|
-
raise_mixed if klass.embedded?
|
149
|
-
batched do
|
150
|
-
proxy.in_memory do |doc|
|
151
|
-
characterize_one(doc)
|
152
|
-
bind_one(doc)
|
153
|
-
if persistable?
|
154
|
-
base.push(metadata.foreign_key, doc.id)
|
155
|
-
base.synced[metadata.foreign_key] = false
|
156
|
-
doc.save
|
157
|
-
else
|
158
|
-
base.send(metadata.foreign_key).push(doc.id)
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
135
|
# Removes all associations between the base document and the target
|
166
136
|
# documents by deleting the foreign keys and the references, orphaning
|
167
137
|
# the target documents in the process.
|
@@ -185,6 +155,27 @@ module Mongoid # :nodoc:
|
|
185
155
|
alias :nullify_all :nullify
|
186
156
|
alias :clear :nullify
|
187
157
|
|
158
|
+
# Clear the relation. Will delete the documents from the db if they are
|
159
|
+
# already persisted.
|
160
|
+
#
|
161
|
+
# @example Clear the relation.
|
162
|
+
# person.posts.clear
|
163
|
+
#
|
164
|
+
# @return [ Many ] The relation emptied.
|
165
|
+
#
|
166
|
+
# @since 2.0.0.beta.1
|
167
|
+
def purge
|
168
|
+
criteria.delete_all
|
169
|
+
base.set(
|
170
|
+
metadata.foreign_key,
|
171
|
+
base.send(metadata.foreign_key).clear
|
172
|
+
)
|
173
|
+
target.clear do |doc|
|
174
|
+
unbind_one(doc)
|
175
|
+
doc.destroyed = true
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
188
179
|
private
|
189
180
|
|
190
181
|
# Appends the document to the target array, updating the index on the
|
@@ -244,6 +235,19 @@ module Mongoid # :nodoc:
|
|
244
235
|
Builders::Referenced::ManyToMany.new(meta, object, loading)
|
245
236
|
end
|
246
237
|
|
238
|
+
# Create the standard criteria for this relation given the supplied
|
239
|
+
# metadata and object.
|
240
|
+
#
|
241
|
+
# @example Get the criteria.
|
242
|
+
# Proxy.criteria(meta, object)
|
243
|
+
#
|
244
|
+
# @param [ Metadata ] metadata The relation metadata.
|
245
|
+
# @param [ Object ] object The object for the criteria.
|
246
|
+
# @param [ Class ] type The criteria class.
|
247
|
+
#
|
248
|
+
# @return [ Criteria ] The criteria.
|
249
|
+
#
|
250
|
+
# @since 2.1.0
|
247
251
|
def criteria(metadata, object, type = nil)
|
248
252
|
metadata.klass.any_in(:_id => object)
|
249
253
|
end
|
@@ -61,6 +61,7 @@ module Mongoid # :nodoc:
|
|
61
61
|
#
|
62
62
|
# @since 2.1.0
|
63
63
|
def update_inverse_keys(meta)
|
64
|
+
return unless changes.has_key?(meta.foreign_key)
|
64
65
|
old, new = changes[meta.foreign_key]
|
65
66
|
meta.criteria(new - old).add_to_set(meta.inverse_foreign_key, id)
|
66
67
|
meta.criteria(old - new).pull(meta.inverse_foreign_key, id)
|
@@ -67,6 +67,20 @@ module Mongoid #:nodoc:
|
|
67
67
|
loaded.clear and added.clear
|
68
68
|
end
|
69
69
|
|
70
|
+
# Clones each document in the enumerable.
|
71
|
+
#
|
72
|
+
# @note This loads all documents into memory.
|
73
|
+
#
|
74
|
+
# @example Clone the enumerable.
|
75
|
+
# enumerable.clone
|
76
|
+
#
|
77
|
+
# @return [ Array<Document> ] An array clone of the enumerable.
|
78
|
+
#
|
79
|
+
# @since 2.1.6
|
80
|
+
def clone
|
81
|
+
collect { |doc| doc.clone }
|
82
|
+
end
|
83
|
+
|
70
84
|
# Delete the supplied document from the enumerable.
|
71
85
|
#
|
72
86
|
# @example Delete the document.
|
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.1.
|
4
|
+
version: 2.1.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-08-
|
12
|
+
date: 2011-08-08 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activemodel
|
16
|
-
requirement: &
|
16
|
+
requirement: &70184069667540 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70184069667540
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: tzinfo
|
27
|
-
requirement: &
|
27
|
+
requirement: &70184069666660 !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: *70184069666660
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mongo
|
38
|
-
requirement: &
|
38
|
+
requirement: &70184069665680 !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: *70184069665680
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rdoc
|
49
|
-
requirement: &
|
49
|
+
requirement: &70184069664720 !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: *70184069664720
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: bson_ext
|
60
|
-
requirement: &
|
60
|
+
requirement: &70184069663720 !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: *70184069663720
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mocha
|
71
|
-
requirement: &
|
71
|
+
requirement: &70184069662540 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.9.8
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70184069662540
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &70184069661380 !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: *70184069661380
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: watchr
|
93
|
-
requirement: &
|
93
|
+
requirement: &70184069660280 !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: *70184069660280
|
102
102
|
description: Mongoid is an ODM (Object Document Mapper) Framework for MongoDB, written
|
103
103
|
in Ruby.
|
104
104
|
email:
|
@@ -186,6 +186,7 @@ files:
|
|
186
186
|
- lib/mongoid/extensions/nil/collectionization.rb
|
187
187
|
- lib/mongoid/extensions/object/checks.rb
|
188
188
|
- lib/mongoid/extensions/object/reflections.rb
|
189
|
+
- lib/mongoid/extensions/object/substitutable.rb
|
189
190
|
- lib/mongoid/extensions/object/yoda.rb
|
190
191
|
- lib/mongoid/extensions/object_id/conversions.rb
|
191
192
|
- lib/mongoid/extensions/proc/scoping.rb
|
@@ -378,7 +379,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
378
379
|
version: '0'
|
379
380
|
segments:
|
380
381
|
- 0
|
381
|
-
hash:
|
382
|
+
hash: -4360740221674892894
|
382
383
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
383
384
|
none: false
|
384
385
|
requirements:
|