mongo_mapper 0.14.0 → 0.15.4
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.
- checksums.yaml +5 -5
- data/LICENSE +1 -1
- data/README.md +72 -0
- data/examples/keys.rb +1 -1
- data/examples/modifiers/set.rb +1 -1
- data/examples/querying.rb +1 -1
- data/examples/safe.rb +2 -2
- data/examples/scopes.rb +1 -1
- data/lib/mongo_mapper.rb +19 -17
- data/lib/mongo_mapper/connection.rb +16 -38
- data/lib/mongo_mapper/extensions/array.rb +1 -1
- data/lib/mongo_mapper/extensions/binary.rb +1 -1
- data/lib/mongo_mapper/extensions/date.rb +1 -1
- data/lib/mongo_mapper/extensions/float.rb +1 -1
- data/lib/mongo_mapper/extensions/hash.rb +1 -1
- data/lib/mongo_mapper/extensions/nil_class.rb +2 -2
- data/lib/mongo_mapper/extensions/object.rb +1 -1
- data/lib/mongo_mapper/extensions/object_id.rb +6 -2
- data/lib/mongo_mapper/extensions/set.rb +1 -1
- data/lib/mongo_mapper/extensions/string.rb +1 -1
- data/lib/mongo_mapper/plugins/accessible.rb +1 -1
- data/lib/mongo_mapper/plugins/associations/base.rb +10 -2
- data/lib/mongo_mapper/plugins/associations/belongs_to_association.rb +1 -1
- data/lib/mongo_mapper/plugins/associations/many_association.rb +6 -5
- data/lib/mongo_mapper/plugins/associations/{belongs_to_polymorphic_proxy.rb → proxy/belongs_to_polymorphic_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{belongs_to_proxy.rb → proxy/belongs_to_proxy.rb} +6 -0
- data/lib/mongo_mapper/plugins/associations/proxy/collection.rb +55 -0
- data/lib/mongo_mapper/plugins/associations/{embedded_collection.rb → proxy/embedded_collection.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{in_array_proxy.rb → proxy/in_array_proxy.rb} +36 -6
- data/lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb +136 -0
- data/lib/mongo_mapper/plugins/associations/{many_documents_as_proxy.rb → proxy/many_documents_as_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{many_documents_proxy.rb → proxy/many_documents_proxy.rb} +0 -4
- data/lib/mongo_mapper/plugins/associations/{many_embedded_polymorphic_proxy.rb → proxy/many_embedded_polymorphic_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{many_embedded_proxy.rb → proxy/many_embedded_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{many_polymorphic_proxy.rb → proxy/many_polymorphic_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{one_as_proxy.rb → proxy/one_as_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{one_embedded_polymorphic_proxy.rb → proxy/one_embedded_polymorphic_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{one_embedded_proxy.rb → proxy/one_embedded_proxy.rb} +3 -1
- data/lib/mongo_mapper/plugins/associations/{one_proxy.rb → proxy/one_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/proxy/proxy.rb +164 -0
- data/lib/mongo_mapper/plugins/associations/single_association.rb +5 -13
- data/lib/mongo_mapper/plugins/dirty.rb +29 -37
- data/lib/mongo_mapper/plugins/document.rb +1 -1
- data/lib/mongo_mapper/plugins/dynamic_querying/dynamic_finder.rb +1 -1
- data/lib/mongo_mapper/plugins/embedded_callbacks.rb +1 -0
- data/lib/mongo_mapper/plugins/embedded_document.rb +2 -2
- data/lib/mongo_mapper/plugins/identity_map.rb +3 -1
- data/lib/mongo_mapper/plugins/indexes.rb +13 -6
- data/lib/mongo_mapper/plugins/keys.rb +12 -7
- data/lib/mongo_mapper/plugins/keys/key.rb +21 -13
- data/lib/mongo_mapper/plugins/modifiers.rb +39 -14
- data/lib/mongo_mapper/plugins/persistence.rb +6 -2
- data/lib/mongo_mapper/plugins/querying.rb +9 -3
- data/lib/mongo_mapper/plugins/querying/decorated_plucky_query.rb +6 -6
- data/lib/mongo_mapper/plugins/safe.rb +10 -4
- data/lib/mongo_mapper/plugins/scopes.rb +19 -3
- data/lib/mongo_mapper/plugins/stats.rb +1 -3
- data/lib/mongo_mapper/plugins/strong_parameters.rb +26 -0
- data/lib/mongo_mapper/plugins/validations.rb +1 -1
- data/lib/mongo_mapper/railtie.rb +1 -0
- data/lib/mongo_mapper/utils.rb +2 -2
- data/lib/mongo_mapper/version.rb +1 -1
- data/spec/examples.txt +1731 -0
- data/spec/functional/accessible_spec.rb +7 -1
- data/spec/functional/associations/belongs_to_polymorphic_proxy_spec.rb +2 -2
- data/spec/functional/associations/belongs_to_proxy_spec.rb +55 -5
- data/spec/functional/associations/in_array_proxy_spec.rb +149 -14
- data/spec/functional/associations/in_foreign_array_proxy_spec.rb +321 -0
- data/spec/functional/associations/many_documents_as_proxy_spec.rb +6 -6
- data/spec/functional/associations/many_documents_proxy_spec.rb +22 -22
- data/spec/functional/associations/many_embedded_polymorphic_proxy_spec.rb +2 -2
- data/spec/functional/associations/many_polymorphic_proxy_spec.rb +4 -4
- data/spec/functional/associations/one_as_proxy_spec.rb +8 -8
- data/spec/functional/associations/one_embedded_proxy_spec.rb +28 -0
- data/spec/functional/associations/one_proxy_spec.rb +19 -9
- data/spec/functional/associations_spec.rb +3 -3
- data/spec/functional/binary_spec.rb +2 -2
- data/spec/functional/caching_spec.rb +15 -22
- data/spec/functional/callbacks_spec.rb +2 -2
- data/spec/functional/counter_cache_spec.rb +10 -10
- data/spec/functional/dirty_spec.rb +48 -10
- data/spec/functional/dirty_with_callbacks_spec.rb +59 -0
- data/spec/functional/document_spec.rb +5 -8
- data/spec/functional/dumpable_spec.rb +1 -1
- data/spec/functional/embedded_document_spec.rb +5 -5
- data/spec/functional/identity_map_spec.rb +8 -8
- data/spec/functional/indexes_spec.rb +19 -18
- data/spec/functional/keys_spec.rb +64 -33
- data/spec/functional/logger_spec.rb +2 -2
- data/spec/functional/modifiers_spec.rb +81 -19
- data/spec/functional/partial_updates_spec.rb +8 -8
- data/spec/functional/protected_spec.rb +1 -1
- data/spec/functional/querying_spec.rb +70 -22
- data/spec/functional/safe_spec.rb +23 -27
- data/spec/functional/sci_spec.rb +7 -7
- data/spec/functional/scopes_spec.rb +89 -1
- data/spec/functional/static_keys_spec.rb +2 -2
- data/spec/functional/stats_spec.rb +28 -12
- data/spec/functional/strong_parameters_spec.rb +49 -0
- data/spec/functional/validations_spec.rb +8 -16
- data/spec/quality_spec.rb +1 -1
- data/spec/spec_helper.rb +39 -8
- data/spec/support/matchers.rb +1 -1
- data/spec/unit/associations/proxy_spec.rb +18 -10
- data/spec/unit/clone_spec.rb +1 -1
- data/spec/unit/document_spec.rb +3 -3
- data/spec/unit/embedded_document_spec.rb +4 -5
- data/spec/unit/extensions_spec.rb +12 -7
- data/spec/unit/identity_map_middleware_spec.rb +65 -96
- data/spec/unit/inspect_spec.rb +1 -1
- data/spec/unit/key_spec.rb +23 -18
- data/spec/unit/keys_spec.rb +17 -8
- data/spec/unit/mongo_mapper_spec.rb +41 -88
- data/spec/unit/rails_spec.rb +2 -2
- data/spec/unit/validations_spec.rb +18 -18
- metadata +70 -38
- data/README.rdoc +0 -56
- data/lib/mongo_mapper/extensions/ordered_hash.rb +0 -23
- data/lib/mongo_mapper/plugins/associations/collection.rb +0 -29
- data/lib/mongo_mapper/plugins/associations/proxy.rb +0 -141
metadata
CHANGED
@@ -1,73 +1,101 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongo_mapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
8
8
|
- Chris Heald
|
9
9
|
- Scott Taylor
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-06-18 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: mongo
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '2.0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '2.0'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: plucky
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - "~>"
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 0.8.0
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.8.0
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: activesupport
|
17
45
|
requirement: !ruby/object:Gem::Requirement
|
18
46
|
requirements:
|
19
47
|
- - ">="
|
20
48
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
49
|
+
version: '5.0'
|
22
50
|
type: :runtime
|
23
51
|
prerelease: false
|
24
52
|
version_requirements: !ruby/object:Gem::Requirement
|
25
53
|
requirements:
|
26
54
|
- - ">="
|
27
55
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
56
|
+
version: '5.0'
|
29
57
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
58
|
+
name: activemodel
|
31
59
|
requirement: !ruby/object:Gem::Requirement
|
32
60
|
requirements:
|
33
61
|
- - ">="
|
34
62
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
63
|
+
version: '5.0'
|
36
64
|
type: :runtime
|
37
65
|
prerelease: false
|
38
66
|
version_requirements: !ruby/object:Gem::Requirement
|
39
67
|
requirements:
|
40
68
|
- - ">="
|
41
69
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
70
|
+
version: '5.0'
|
43
71
|
- !ruby/object:Gem::Dependency
|
44
|
-
name:
|
72
|
+
name: activemodel-serializers-xml
|
45
73
|
requirement: !ruby/object:Gem::Requirement
|
46
74
|
requirements:
|
47
75
|
- - "~>"
|
48
76
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
77
|
+
version: '1.0'
|
50
78
|
type: :runtime
|
51
79
|
prerelease: false
|
52
80
|
version_requirements: !ruby/object:Gem::Requirement
|
53
81
|
requirements:
|
54
82
|
- - "~>"
|
55
83
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
84
|
+
version: '1.0'
|
57
85
|
- !ruby/object:Gem::Dependency
|
58
|
-
name:
|
86
|
+
name: rexml
|
59
87
|
requirement: !ruby/object:Gem::Requirement
|
60
88
|
requirements:
|
61
|
-
- - "
|
89
|
+
- - ">="
|
62
90
|
- !ruby/object:Gem::Version
|
63
|
-
version: '
|
91
|
+
version: '0'
|
64
92
|
type: :runtime
|
65
93
|
prerelease: false
|
66
94
|
version_requirements: !ruby/object:Gem::Requirement
|
67
95
|
requirements:
|
68
|
-
- - "
|
96
|
+
- - ">="
|
69
97
|
- !ruby/object:Gem::Version
|
70
|
-
version: '
|
98
|
+
version: '0'
|
71
99
|
description: MongoMapper is a Object-Document Mapper for Ruby and Rails
|
72
100
|
email:
|
73
101
|
- nunemaker@gmail.com
|
@@ -79,7 +107,7 @@ extensions: []
|
|
79
107
|
extra_rdoc_files: []
|
80
108
|
files:
|
81
109
|
- LICENSE
|
82
|
-
- README.
|
110
|
+
- README.md
|
83
111
|
- UPGRADES
|
84
112
|
- bin/mmconsole
|
85
113
|
- examples/attr_accessible.rb
|
@@ -111,7 +139,6 @@ files:
|
|
111
139
|
- lib/mongo_mapper/extensions/nil_class.rb
|
112
140
|
- lib/mongo_mapper/extensions/object.rb
|
113
141
|
- lib/mongo_mapper/extensions/object_id.rb
|
114
|
-
- lib/mongo_mapper/extensions/ordered_hash.rb
|
115
142
|
- lib/mongo_mapper/extensions/set.rb
|
116
143
|
- lib/mongo_mapper/extensions/string.rb
|
117
144
|
- lib/mongo_mapper/extensions/symbol.rb
|
@@ -124,23 +151,24 @@ files:
|
|
124
151
|
- lib/mongo_mapper/plugins/associations.rb
|
125
152
|
- lib/mongo_mapper/plugins/associations/base.rb
|
126
153
|
- lib/mongo_mapper/plugins/associations/belongs_to_association.rb
|
127
|
-
- lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb
|
128
|
-
- lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb
|
129
|
-
- lib/mongo_mapper/plugins/associations/collection.rb
|
130
|
-
- lib/mongo_mapper/plugins/associations/embedded_collection.rb
|
131
|
-
- lib/mongo_mapper/plugins/associations/in_array_proxy.rb
|
132
154
|
- lib/mongo_mapper/plugins/associations/many_association.rb
|
133
|
-
- lib/mongo_mapper/plugins/associations/many_documents_as_proxy.rb
|
134
|
-
- lib/mongo_mapper/plugins/associations/many_documents_proxy.rb
|
135
|
-
- lib/mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy.rb
|
136
|
-
- lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb
|
137
|
-
- lib/mongo_mapper/plugins/associations/many_polymorphic_proxy.rb
|
138
|
-
- lib/mongo_mapper/plugins/associations/one_as_proxy.rb
|
139
155
|
- lib/mongo_mapper/plugins/associations/one_association.rb
|
140
|
-
- lib/mongo_mapper/plugins/associations/
|
141
|
-
- lib/mongo_mapper/plugins/associations/
|
142
|
-
- lib/mongo_mapper/plugins/associations/
|
143
|
-
- lib/mongo_mapper/plugins/associations/proxy.rb
|
156
|
+
- lib/mongo_mapper/plugins/associations/proxy/belongs_to_polymorphic_proxy.rb
|
157
|
+
- lib/mongo_mapper/plugins/associations/proxy/belongs_to_proxy.rb
|
158
|
+
- lib/mongo_mapper/plugins/associations/proxy/collection.rb
|
159
|
+
- lib/mongo_mapper/plugins/associations/proxy/embedded_collection.rb
|
160
|
+
- lib/mongo_mapper/plugins/associations/proxy/in_array_proxy.rb
|
161
|
+
- lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb
|
162
|
+
- lib/mongo_mapper/plugins/associations/proxy/many_documents_as_proxy.rb
|
163
|
+
- lib/mongo_mapper/plugins/associations/proxy/many_documents_proxy.rb
|
164
|
+
- lib/mongo_mapper/plugins/associations/proxy/many_embedded_polymorphic_proxy.rb
|
165
|
+
- lib/mongo_mapper/plugins/associations/proxy/many_embedded_proxy.rb
|
166
|
+
- lib/mongo_mapper/plugins/associations/proxy/many_polymorphic_proxy.rb
|
167
|
+
- lib/mongo_mapper/plugins/associations/proxy/one_as_proxy.rb
|
168
|
+
- lib/mongo_mapper/plugins/associations/proxy/one_embedded_polymorphic_proxy.rb
|
169
|
+
- lib/mongo_mapper/plugins/associations/proxy/one_embedded_proxy.rb
|
170
|
+
- lib/mongo_mapper/plugins/associations/proxy/one_proxy.rb
|
171
|
+
- lib/mongo_mapper/plugins/associations/proxy/proxy.rb
|
144
172
|
- lib/mongo_mapper/plugins/associations/single_association.rb
|
145
173
|
- lib/mongo_mapper/plugins/caching.rb
|
146
174
|
- lib/mongo_mapper/plugins/callbacks.rb
|
@@ -175,6 +203,7 @@ files:
|
|
175
203
|
- lib/mongo_mapper/plugins/scopes.rb
|
176
204
|
- lib/mongo_mapper/plugins/serialization.rb
|
177
205
|
- lib/mongo_mapper/plugins/stats.rb
|
206
|
+
- lib/mongo_mapper/plugins/strong_parameters.rb
|
178
207
|
- lib/mongo_mapper/plugins/timestamps.rb
|
179
208
|
- lib/mongo_mapper/plugins/touch.rb
|
180
209
|
- lib/mongo_mapper/plugins/userstamps.rb
|
@@ -188,10 +217,12 @@ files:
|
|
188
217
|
- lib/rails/generators/mongo_mapper/config/templates/mongo.yml
|
189
218
|
- lib/rails/generators/mongo_mapper/model/model_generator.rb
|
190
219
|
- lib/rails/generators/mongo_mapper/model/templates/model.rb
|
220
|
+
- spec/examples.txt
|
191
221
|
- spec/functional/accessible_spec.rb
|
192
222
|
- spec/functional/associations/belongs_to_polymorphic_proxy_spec.rb
|
193
223
|
- spec/functional/associations/belongs_to_proxy_spec.rb
|
194
224
|
- spec/functional/associations/in_array_proxy_spec.rb
|
225
|
+
- spec/functional/associations/in_foreign_array_proxy_spec.rb
|
195
226
|
- spec/functional/associations/many_documents_as_proxy_spec.rb
|
196
227
|
- spec/functional/associations/many_documents_proxy_spec.rb
|
197
228
|
- spec/functional/associations/many_embedded_polymorphic_proxy_spec.rb
|
@@ -207,6 +238,7 @@ files:
|
|
207
238
|
- spec/functional/callbacks_spec.rb
|
208
239
|
- spec/functional/counter_cache_spec.rb
|
209
240
|
- spec/functional/dirty_spec.rb
|
241
|
+
- spec/functional/dirty_with_callbacks_spec.rb
|
210
242
|
- spec/functional/document_spec.rb
|
211
243
|
- spec/functional/dumpable_spec.rb
|
212
244
|
- spec/functional/dynamic_querying_spec.rb
|
@@ -228,6 +260,7 @@ files:
|
|
228
260
|
- spec/functional/scopes_spec.rb
|
229
261
|
- spec/functional/static_keys_spec.rb
|
230
262
|
- spec/functional/stats_spec.rb
|
263
|
+
- spec/functional/strong_parameters_spec.rb
|
231
264
|
- spec/functional/timestamps_spec.rb
|
232
265
|
- spec/functional/touch_spec.rb
|
233
266
|
- spec/functional/userstamps_spec.rb
|
@@ -270,7 +303,7 @@ homepage: http://mongomapper.com
|
|
270
303
|
licenses:
|
271
304
|
- MIT
|
272
305
|
metadata: {}
|
273
|
-
post_install_message:
|
306
|
+
post_install_message:
|
274
307
|
rdoc_options: []
|
275
308
|
require_paths:
|
276
309
|
- lib
|
@@ -285,9 +318,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
285
318
|
- !ruby/object:Gem::Version
|
286
319
|
version: '0'
|
287
320
|
requirements: []
|
288
|
-
|
289
|
-
|
290
|
-
signing_key:
|
321
|
+
rubygems_version: 3.1.6
|
322
|
+
signing_key:
|
291
323
|
specification_version: 4
|
292
324
|
summary: A Ruby Object Mapper for Mongo
|
293
325
|
test_files: []
|
data/README.rdoc
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
= MongoMapper
|
2
|
-
|
3
|
-
{<img src="https://badge.fury.io/rb/mongo_mapper.png" alt="RubyGem" />}[https://rubygems.org/gems/mongo_mapper]
|
4
|
-
{<img src="https://travis-ci.org/mongomapper/mongomapper.png?branch=master" alt="Build Status" />}[https://travis-ci.org/mongomapper/mongomapper]
|
5
|
-
{<img src="https://coveralls.io/repos/mongomapper/mongomapper/badge.png" alt="Coverage Status" />}[https://coveralls.io/r/mongomapper/mongomapper]
|
6
|
-
|
7
|
-
A Ruby Object Mapper for Mongo.
|
8
|
-
|
9
|
-
== Install
|
10
|
-
|
11
|
-
$ gem install mongo_mapper
|
12
|
-
|
13
|
-
== Documentation
|
14
|
-
|
15
|
-
http://mongomapper.com/documentation/
|
16
|
-
|
17
|
-
http://rdoc.info/github/mongomapper/mongomapper
|
18
|
-
|
19
|
-
== Compatibility
|
20
|
-
|
21
|
-
MongoMapper is tested against:
|
22
|
-
|
23
|
-
* MRI 1.8.7
|
24
|
-
* MRI 1.9.3
|
25
|
-
* MRI 2.0.0
|
26
|
-
* MRI 2.1.1
|
27
|
-
* JRuby (Versions with 1.9 compatibility)
|
28
|
-
|
29
|
-
Additionally, MongoMapper is tested against:
|
30
|
-
|
31
|
-
* Rails 3.0.x
|
32
|
-
* Rails 3.1.x
|
33
|
-
* Rails 3.2.x
|
34
|
-
* Rails 4.0.x
|
35
|
-
|
36
|
-
== Contributing & Development
|
37
|
-
|
38
|
-
$ git clone https://github.com/mongomapper/mongomapper && cd mongomapper
|
39
|
-
$ bundle install
|
40
|
-
$ bundle exec rake
|
41
|
-
|
42
|
-
* Fork the project.
|
43
|
-
* Make your feature addition or bug fix. All specs should pass.
|
44
|
-
* Add specs for your changes. This is important so I don't break it in a future version unintentionally.
|
45
|
-
* Commit, do not mess with Rakefile, version, or history. If you want to have your own version, that is fine but bump version in a commit by itself in another branch so a maintainer ignore it when your pull request is merged.
|
46
|
-
* Send a pull request. Bonus points for topic branches.
|
47
|
-
|
48
|
-
== Problems or Questions?
|
49
|
-
|
50
|
-
Hit up the Google group: http://groups.google.com/group/mongomapper
|
51
|
-
|
52
|
-
Hop on IRC: irc://chat.freenode.net/#mongomapper
|
53
|
-
|
54
|
-
== License & Copyright
|
55
|
-
|
56
|
-
See LICENSE for details.
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
# This class exists to make sure that Hash's extensions don't end up giving us unordered hashes.
|
3
|
-
# :nocov:
|
4
|
-
if RUBY_VERSION < "1.9"
|
5
|
-
module MongoMapper
|
6
|
-
module Extensions
|
7
|
-
module OrderedHash
|
8
|
-
def to_mongo(value)
|
9
|
-
value
|
10
|
-
end
|
11
|
-
|
12
|
-
def from_mongo(value)
|
13
|
-
value
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
class BSON::OrderedHash
|
20
|
-
extend MongoMapper::Extensions::OrderedHash
|
21
|
-
end
|
22
|
-
end
|
23
|
-
# :nocov:
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
module MongoMapper
|
3
|
-
module Plugins
|
4
|
-
module Associations
|
5
|
-
class Collection < Proxy
|
6
|
-
def to_ary
|
7
|
-
load_target
|
8
|
-
if target.is_a?(Array)
|
9
|
-
target.to_ary
|
10
|
-
else
|
11
|
-
Array(target)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
alias_method :to_a, :to_ary
|
16
|
-
|
17
|
-
def include?(*args)
|
18
|
-
load_target
|
19
|
-
target.include?(*args)
|
20
|
-
end
|
21
|
-
|
22
|
-
def reset
|
23
|
-
super
|
24
|
-
target = []
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,141 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require 'forwardable'
|
3
|
-
module MongoMapper
|
4
|
-
module Plugins
|
5
|
-
module Associations
|
6
|
-
class Proxy
|
7
|
-
extend Forwardable
|
8
|
-
|
9
|
-
alias :proxy_respond_to? :respond_to?
|
10
|
-
alias :proxy_extend :extend
|
11
|
-
|
12
|
-
instance_methods.each { |m| undef_method m unless m =~ /(^__|^nil\?$|^send$|proxy_|^respond_to_missing\?$|^object_id$)/ }
|
13
|
-
|
14
|
-
attr_reader :proxy_owner, :association, :target
|
15
|
-
|
16
|
-
alias :proxy_target :target
|
17
|
-
alias :proxy_association :association
|
18
|
-
|
19
|
-
def_delegators :proxy_association, :klass, :options
|
20
|
-
def_delegator :klass, :collection
|
21
|
-
|
22
|
-
def initialize(owner, association)
|
23
|
-
@proxy_owner, @association, @loaded = owner, association, false
|
24
|
-
Array(association.options[:extend]).each { |ext| proxy_extend(ext) }
|
25
|
-
reset
|
26
|
-
end
|
27
|
-
|
28
|
-
# Active support in rails 3 beta 4 can override to_json after this is loaded,
|
29
|
-
# at least when run in mongomapper tests. The implementation was changed in master
|
30
|
-
# some time after this, so not sure whether this is still a problem.
|
31
|
-
#
|
32
|
-
# In rails 2, this isn't a problem however it also solves an issue where
|
33
|
-
# to_json isn't forwarded because it supports to_json itself
|
34
|
-
def to_json(*options)
|
35
|
-
load_target
|
36
|
-
target.to_json(*options)
|
37
|
-
end
|
38
|
-
|
39
|
-
# see comments to to_json
|
40
|
-
def as_json(*options)
|
41
|
-
load_target
|
42
|
-
target.as_json(*options)
|
43
|
-
end
|
44
|
-
|
45
|
-
def inspect
|
46
|
-
load_target
|
47
|
-
target.inspect
|
48
|
-
end
|
49
|
-
|
50
|
-
def loaded?
|
51
|
-
@loaded
|
52
|
-
end
|
53
|
-
|
54
|
-
def loaded
|
55
|
-
@loaded = true
|
56
|
-
end
|
57
|
-
|
58
|
-
def nil?
|
59
|
-
load_target
|
60
|
-
target.nil?
|
61
|
-
end
|
62
|
-
|
63
|
-
def blank?
|
64
|
-
load_target
|
65
|
-
target.blank?
|
66
|
-
end
|
67
|
-
|
68
|
-
def present?
|
69
|
-
load_target
|
70
|
-
target.present?
|
71
|
-
end
|
72
|
-
|
73
|
-
def reload
|
74
|
-
reset
|
75
|
-
load_target
|
76
|
-
self unless target.nil?
|
77
|
-
end
|
78
|
-
|
79
|
-
# :nocov:
|
80
|
-
def replace(v)
|
81
|
-
raise NotImplementedError
|
82
|
-
end
|
83
|
-
# :nocov:
|
84
|
-
|
85
|
-
def reset
|
86
|
-
@loaded = false
|
87
|
-
@target = nil
|
88
|
-
end
|
89
|
-
|
90
|
-
def respond_to?(*args)
|
91
|
-
proxy_respond_to?(*args) || (load_target && target.respond_to?(*args))
|
92
|
-
end
|
93
|
-
|
94
|
-
def send(method, *args, &block)
|
95
|
-
if proxy_respond_to?(method, true)
|
96
|
-
super
|
97
|
-
else
|
98
|
-
load_target
|
99
|
-
target.send(method, *args, &block)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
protected
|
104
|
-
|
105
|
-
def load_target
|
106
|
-
unless loaded?
|
107
|
-
if @target.is_a?(Array) && @target.any?
|
108
|
-
@target = find_target + @target.find_all { |record| !record.persisted? }
|
109
|
-
else
|
110
|
-
@target = find_target
|
111
|
-
end
|
112
|
-
loaded
|
113
|
-
end
|
114
|
-
@target
|
115
|
-
rescue MongoMapper::DocumentNotFound
|
116
|
-
reset
|
117
|
-
end
|
118
|
-
|
119
|
-
# :nocov:
|
120
|
-
def find_target
|
121
|
-
raise NotImplementedError
|
122
|
-
end
|
123
|
-
# :nocov:
|
124
|
-
|
125
|
-
def flatten_deeper(array)
|
126
|
-
array.collect do |element|
|
127
|
-
(element.respond_to?(:flatten) && !element.is_a?(Hash)) ? element.flatten : element
|
128
|
-
end.flatten
|
129
|
-
end
|
130
|
-
|
131
|
-
private
|
132
|
-
|
133
|
-
def method_missing(method, *args, &block)
|
134
|
-
if load_target
|
135
|
-
target.send(method, *args, &block)
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|