mongoo 0.3.0 → 0.3.1
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/Gemfile +2 -0
- data/VERSION +1 -1
- data/lib/mongoo/base.rb +1 -17
- data/lib/mongoo/hash_ext.rb +6 -2
- data/lib/mongoo/mongohash.rb +1 -1
- data/mongoo.gemspec +13 -5
- data/test/test_performance.rb +42 -0
- metadata +28 -4
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
data/lib/mongoo/base.rb
CHANGED
@@ -187,23 +187,7 @@ module Mongoo
|
|
187
187
|
end
|
188
188
|
|
189
189
|
def verify_attributes_in_mongohash(hash)
|
190
|
-
|
191
|
-
known_keys << "_id"
|
192
|
-
hash.dot_list.each do |k|
|
193
|
-
unless known_keys.include?(k)
|
194
|
-
k.split(".").each do |part|
|
195
|
-
if opts = self.class.attributes[part]
|
196
|
-
if opts[:type] == :hash
|
197
|
-
known_keys << k
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
201
|
-
unless known_keys.include?(k)
|
202
|
-
# this is just annoying.
|
203
|
-
#raise Mongoo::UnknownAttributeError, k.to_s
|
204
|
-
end
|
205
|
-
end
|
206
|
-
end
|
190
|
+
true
|
207
191
|
end # verify_attributes_in_mongohash
|
208
192
|
end
|
209
193
|
end
|
data/lib/mongoo/hash_ext.rb
CHANGED
@@ -1,18 +1,22 @@
|
|
1
1
|
module Mongoo
|
2
2
|
module HashExt
|
3
3
|
def deep_stringify_keys
|
4
|
-
|
4
|
+
deep_clone.deep_stringify_keys!
|
5
5
|
end
|
6
6
|
|
7
7
|
def deep_stringify_keys!
|
8
8
|
keys.each do |key|
|
9
9
|
self[key.to_s] = delete(key)
|
10
10
|
if self[key.to_s].is_a?(Hash)
|
11
|
-
self[key.to_s].
|
11
|
+
self[key.to_s].deep_stringify_keys!
|
12
12
|
end
|
13
13
|
end
|
14
14
|
self
|
15
15
|
end
|
16
|
+
|
17
|
+
def deep_clone
|
18
|
+
Marshal.load(Marshal.dump(self))
|
19
|
+
end
|
16
20
|
end
|
17
21
|
end
|
18
22
|
|
data/lib/mongoo/mongohash.rb
CHANGED
data/mongoo.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mongoo}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ben Myles"]
|
12
|
-
s.date = %q{2011-05-
|
12
|
+
s.date = %q{2011-05-17}
|
13
13
|
s.description = %q{Simple object mapper for MongoDB}
|
14
14
|
s.email = %q{ben.myles@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -43,12 +43,13 @@ Gem::Specification.new do |s|
|
|
43
43
|
"test/test_async.rb",
|
44
44
|
"test/test_identity_map.rb",
|
45
45
|
"test/test_mongohash.rb",
|
46
|
-
"test/test_mongoo.rb"
|
46
|
+
"test/test_mongoo.rb",
|
47
|
+
"test/test_performance.rb"
|
47
48
|
]
|
48
49
|
s.homepage = %q{http://github.com/benmyles/mongoo}
|
49
50
|
s.licenses = ["MIT"]
|
50
51
|
s.require_paths = ["lib"]
|
51
|
-
s.rubygems_version = %q{1.6.
|
52
|
+
s.rubygems_version = %q{1.6.2}
|
52
53
|
s.summary = %q{Object mapper for MongoDB}
|
53
54
|
s.test_files = [
|
54
55
|
"test/helper.rb",
|
@@ -56,7 +57,8 @@ Gem::Specification.new do |s|
|
|
56
57
|
"test/test_async.rb",
|
57
58
|
"test/test_identity_map.rb",
|
58
59
|
"test/test_mongohash.rb",
|
59
|
-
"test/test_mongoo.rb"
|
60
|
+
"test/test_mongoo.rb",
|
61
|
+
"test/test_performance.rb"
|
60
62
|
]
|
61
63
|
|
62
64
|
if s.respond_to? :specification_version then
|
@@ -73,6 +75,8 @@ Gem::Specification.new do |s|
|
|
73
75
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
74
76
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
|
75
77
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
78
|
+
s.add_development_dependency(%q<perftools.rb>, [">= 0"])
|
79
|
+
s.add_development_dependency(%q<bson_ext>, ["~> 1.3.1"])
|
76
80
|
else
|
77
81
|
s.add_dependency(%q<i18n>, [">= 0.4.1"])
|
78
82
|
s.add_dependency(%q<activesupport>, [">= 3.0.3"])
|
@@ -84,6 +88,8 @@ Gem::Specification.new do |s|
|
|
84
88
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
85
89
|
s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
|
86
90
|
s.add_dependency(%q<rcov>, [">= 0"])
|
91
|
+
s.add_dependency(%q<perftools.rb>, [">= 0"])
|
92
|
+
s.add_dependency(%q<bson_ext>, ["~> 1.3.1"])
|
87
93
|
end
|
88
94
|
else
|
89
95
|
s.add_dependency(%q<i18n>, [">= 0.4.1"])
|
@@ -96,6 +102,8 @@ Gem::Specification.new do |s|
|
|
96
102
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
97
103
|
s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
|
98
104
|
s.add_dependency(%q<rcov>, [">= 0"])
|
105
|
+
s.add_dependency(%q<perftools.rb>, [">= 0"])
|
106
|
+
s.add_dependency(%q<bson_ext>, ["~> 1.3.1"])
|
99
107
|
end
|
100
108
|
end
|
101
109
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'perftools'
|
3
|
+
|
4
|
+
class TestPerformance < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
[Person, TvShow, SearchIndex].each do |obj|
|
8
|
+
obj.drop
|
9
|
+
obj.create_indexes
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
should "be able to find 1000 times" do
|
14
|
+
p = Person.new
|
15
|
+
p.name = "Ben"
|
16
|
+
p.visits = 10
|
17
|
+
p.interests = ["skydiving","coding","reading","swimming"]
|
18
|
+
p.jobs.total = 5
|
19
|
+
p.jobs.professional = ["pro","fess","ion","al"]
|
20
|
+
p.jobs.volunteer = ["vol","un","teer"]
|
21
|
+
p.jobs.internships.high_school = ["one","two","three","four"]
|
22
|
+
p.location.city = "San Francisco"
|
23
|
+
p.location.demographics.crime_rate = :medium
|
24
|
+
p.location.demographics.education_quality = :high
|
25
|
+
p.misc = { "a" => "b", "c" => "d", "e" => "f", "g" => "h" }
|
26
|
+
1.upto(200) { |i| p.misc["i#{i}"] = "......... #{i} ........." }
|
27
|
+
p.insert!
|
28
|
+
|
29
|
+
t1 = Time.now.utc.to_f
|
30
|
+
PerfTools::CpuProfiler.start("/tmp/mongoo_test_performance") do
|
31
|
+
1000.times do |i|
|
32
|
+
Person.find_one(p.id)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
t2 = Time.now.utc.to_f
|
36
|
+
|
37
|
+
out = `pprof.rb --text /tmp/mongoo_test_performance`
|
38
|
+
puts out
|
39
|
+
|
40
|
+
puts "Perf: #{t2-t1}"
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: mongoo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.3.
|
5
|
+
version: 0.3.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ben Myles
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-17 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -123,6 +123,28 @@ dependencies:
|
|
123
123
|
type: :development
|
124
124
|
prerelease: false
|
125
125
|
version_requirements: *id010
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: perftools.rb
|
128
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: "0"
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: *id011
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: bson_ext
|
139
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
140
|
+
none: false
|
141
|
+
requirements:
|
142
|
+
- - ~>
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: 1.3.1
|
145
|
+
type: :development
|
146
|
+
prerelease: false
|
147
|
+
version_requirements: *id012
|
126
148
|
description: Simple object mapper for MongoDB
|
127
149
|
email: ben.myles@gmail.com
|
128
150
|
executables: []
|
@@ -160,6 +182,7 @@ files:
|
|
160
182
|
- test/test_identity_map.rb
|
161
183
|
- test/test_mongohash.rb
|
162
184
|
- test/test_mongoo.rb
|
185
|
+
- test/test_performance.rb
|
163
186
|
has_rdoc: true
|
164
187
|
homepage: http://github.com/benmyles/mongoo
|
165
188
|
licenses:
|
@@ -174,7 +197,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
174
197
|
requirements:
|
175
198
|
- - ">="
|
176
199
|
- !ruby/object:Gem::Version
|
177
|
-
hash: -
|
200
|
+
hash: -2907379497624021949
|
178
201
|
segments:
|
179
202
|
- 0
|
180
203
|
version: "0"
|
@@ -187,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
187
210
|
requirements: []
|
188
211
|
|
189
212
|
rubyforge_project:
|
190
|
-
rubygems_version: 1.6.
|
213
|
+
rubygems_version: 1.6.2
|
191
214
|
signing_key:
|
192
215
|
specification_version: 3
|
193
216
|
summary: Object mapper for MongoDB
|
@@ -198,3 +221,4 @@ test_files:
|
|
198
221
|
- test/test_identity_map.rb
|
199
222
|
- test/test_mongohash.rb
|
200
223
|
- test/test_mongoo.rb
|
224
|
+
- test/test_performance.rb
|