appoxy-simple_record 1.1.2 → 1.1.3
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/results_array.rb +3 -1
- data/lib/simple_record.rb +10 -1
- data/lib/stats.rb +10 -0
- data/test/test_simple_record.rb +13 -149
- metadata +2 -1
data/lib/results_array.rb
CHANGED
@@ -22,10 +22,12 @@ module SimpleRecord
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def size
|
25
|
+
# puts 'SIZE count=' + @count.inspect
|
25
26
|
return @count if @count
|
26
27
|
params_for_count = params.dup
|
27
28
|
params_for_count[0] = :count
|
28
|
-
@count = clz.find(*
|
29
|
+
@count = clz.find(*params_for_count)
|
30
|
+
# puts '@count=' + @count.to_s
|
29
31
|
@count
|
30
32
|
end
|
31
33
|
|
data/lib/simple_record.rb
CHANGED
@@ -25,11 +25,17 @@
|
|
25
25
|
|
26
26
|
require 'right_aws'
|
27
27
|
require 'sdb/active_sdb'
|
28
|
-
#require 'results_array'
|
28
|
+
#require 'results_array' # why the heck isn't this picking up???
|
29
29
|
require File.expand_path(File.dirname(__FILE__) + "/results_array")
|
30
|
+
require File.expand_path(File.dirname(__FILE__) + "/stats")
|
30
31
|
|
31
32
|
module SimpleRecord
|
32
33
|
|
34
|
+
@@stats = SimpleRecord::Stats.new
|
35
|
+
|
36
|
+
def self.stats
|
37
|
+
@@stats
|
38
|
+
end
|
33
39
|
|
34
40
|
# Create a new handle to an Sdb account. All handles share the same per process or per thread
|
35
41
|
# HTTP connection to Amazon Sdb. Each handle is for a specific account.
|
@@ -75,6 +81,8 @@ module SimpleRecord
|
|
75
81
|
include SimpleRecord::Callbacks
|
76
82
|
|
77
83
|
|
84
|
+
|
85
|
+
|
78
86
|
# todo: move into Callbacks module
|
79
87
|
#this bit of code creates a "run_blank" function for everything value in the @@callbacks array.
|
80
88
|
#this function can then be inserted in the appropriate place in the save, new, destroy, etc overrides
|
@@ -864,6 +872,7 @@ This is done on getters now
|
|
864
872
|
results = q_type == :all ? [] : nil
|
865
873
|
begin
|
866
874
|
results=super(*params)
|
875
|
+
SimpleRecord.stats.selects += 1
|
867
876
|
if q_type != :count
|
868
877
|
cache_results(results)
|
869
878
|
if results.is_a?(Array)
|
data/lib/stats.rb
ADDED
data/test/test_simple_record.rb
CHANGED
@@ -12,6 +12,7 @@ class TestSimpleRecord < Test::Unit::TestCase
|
|
12
12
|
#puts @config.inspect
|
13
13
|
SimpleRecord.establish_connection(@config['amazon']['access_key'], @config['amazon']['secret_key'], :port=>80, :protocol=>"http")
|
14
14
|
SimpleRecord::Base.set_domain_prefix("simplerecord_tests_")
|
15
|
+
SimpleRecord.stats.clear
|
15
16
|
end
|
16
17
|
|
17
18
|
def teardown
|
@@ -19,159 +20,22 @@ class TestSimpleRecord < Test::Unit::TestCase
|
|
19
20
|
end
|
20
21
|
|
21
22
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
25
|
-
mm.age = 32
|
26
|
-
mm.cool = true
|
27
|
-
mm.save
|
28
|
-
|
29
|
-
assert !mm.created.nil?
|
30
|
-
assert !mm.updated.nil?
|
31
|
-
assert !mm.id.nil?
|
32
|
-
assert mm.age == 32
|
33
|
-
assert mm.cool = true
|
34
|
-
assert mm.name = "Travis"
|
35
|
-
|
36
|
-
id = mm.id
|
37
|
-
puts 'id=' + id.to_s
|
38
|
-
# Get the object back
|
39
|
-
mm2 = MyModel.find(id)
|
40
|
-
#puts 'got=' + mm2.name + ' and he/she is ' + mm2.age.to_s + ' years old and he/she is cool? ' + mm2.cool.to_s
|
41
|
-
#puts mm2.cool.class.name
|
42
|
-
assert mm2.id == mm.id
|
43
|
-
assert mm2.age == mm.age
|
44
|
-
assert mm2.cool == mm.cool
|
45
|
-
assert mm2.age == 32
|
46
|
-
assert mm2.cool = true
|
47
|
-
assert mm2.name = "Travis"
|
48
|
-
assert mm2.created.is_a? DateTime
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_bad_query
|
52
|
-
assert_raise RightAws::AwsError do
|
53
|
-
mm2 = MyModel.find(:all, :conditions=>["name =4?", "1"])
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_batch_save
|
58
|
-
items = []
|
59
|
-
mm = MyModel.new
|
60
|
-
mm.name = "Travis"
|
61
|
-
mm.age = 32
|
62
|
-
mm.cool = true
|
63
|
-
items << mm
|
64
|
-
mm = MyModel.new
|
65
|
-
mm.name = "Tritt"
|
66
|
-
mm.age = 44
|
67
|
-
mm.cool = false
|
68
|
-
items << mm
|
69
|
-
MyModel.batch_save(items)
|
70
|
-
items.each do |item|
|
71
|
-
puts 'id=' + item.id
|
72
|
-
new_item = MyModel.find(item.id)
|
73
|
-
puts 'new=' + new_item.inspect
|
74
|
-
assert item.id == new_item.id
|
75
|
-
assert item.name == new_item.name
|
76
|
-
assert item.cool == new_item.cool
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
# Testing getting the association ID without materializing the obejct
|
81
|
-
def test_get_belongs_to_id
|
82
|
-
mm = MyModel.new
|
83
|
-
mm.name = "Parent"
|
84
|
-
mm.age = 55
|
85
|
-
mm.cool = true
|
86
|
-
mm.save
|
87
|
-
|
88
|
-
child = MyChildModel.new
|
89
|
-
child.name = "Child"
|
90
|
-
child.my_model = mm
|
91
|
-
child.save
|
92
|
-
|
93
|
-
child = MyChildModel.find(child.id)
|
94
|
-
puts child.my_model_id
|
95
|
-
assert child.my_model_id == mm.id
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_callbacks
|
99
|
-
|
100
|
-
|
101
|
-
mm = MyModel.new
|
102
|
-
assert !mm.save
|
103
|
-
assert mm.errors.count == 1 # name is required
|
104
|
-
|
105
|
-
# test queued callback before_create
|
106
|
-
mm.name = "Travis"
|
107
|
-
assert mm.save
|
108
|
-
# now nickname should be set on before_create
|
109
|
-
assert mm.nickname == mm.name
|
110
|
-
|
111
|
-
mm2 = MyModel.find(mm.id)
|
112
|
-
assert mm2.nickname = mm.nickname
|
113
|
-
assert mm2.name = mm.name
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
end
|
118
|
-
|
119
|
-
def test_dirty
|
120
|
-
mm = MyModel.new
|
121
|
-
mm.name = "Travis"
|
122
|
-
mm.age = 32
|
123
|
-
mm.cool = true
|
124
|
-
mm.save
|
125
|
-
id = mm.id
|
126
|
-
puts 'id=' + id.to_s
|
127
|
-
# Get the object back
|
128
|
-
mm2 = MyModel.find(id)
|
129
|
-
puts 'got=' + mm2.name + ' and he/she is ' + mm2.age.to_s + ' years old and he/she is cool? ' + mm2.cool.to_s
|
130
|
-
assert mm2.id == mm.id
|
131
|
-
assert mm2.age == mm.age
|
132
|
-
assert mm2.cool == mm.cool
|
133
|
-
|
134
|
-
mm2.name = "Travis 2"
|
135
|
-
mm2.save(:dirty=>true)
|
136
|
-
|
137
|
-
# todo: how do we assert this?
|
138
|
-
|
139
|
-
end
|
140
|
-
|
141
|
-
# http://api.rubyonrails.org/classes/ActiveRecord/Dirty.html#M002136
|
142
|
-
def test_changed
|
143
|
-
mm = MyModel.new
|
144
|
-
mm.name = "Travis"
|
145
|
-
mm.age = 32
|
146
|
-
mm.cool = true
|
147
|
-
mm.save
|
148
|
-
|
149
|
-
puts 'changed?=' + mm.changed?.to_s
|
150
|
-
assert !mm.changed?
|
151
|
-
assert mm.changed.size == 0
|
152
|
-
assert mm.changes.size == 0
|
153
|
-
assert !mm.name_changed?
|
154
|
-
|
155
|
-
mm.name = "Jim"
|
156
|
-
assert mm.changed?
|
157
|
-
assert mm.changed.size == 1
|
158
|
-
assert mm.changed[0] == "name"
|
23
|
+
def test_count
|
24
|
+
count = MyModel.find(:count) # select 1
|
25
|
+
assert count > 0
|
159
26
|
|
160
|
-
|
161
|
-
|
162
|
-
assert
|
163
|
-
assert
|
27
|
+
mms = MyModel.find(:all) # select 2
|
28
|
+
assert mms.size > 0 # select 3
|
29
|
+
assert mms.size == count # skipped
|
30
|
+
assert SimpleRecord.stats.selects == 3, "should have been 3 select, but was actually #{SimpleRecord.stats.selects}" # count should not have been called twice
|
164
31
|
|
165
|
-
|
166
|
-
assert
|
167
|
-
assert mm.name_change[0] == "Travis"
|
168
|
-
assert mm.name_change[1] == "Jim"
|
32
|
+
count = MyModel.find(:count, :conditions=>["name=?", "Travis"])
|
33
|
+
assert count > 0
|
169
34
|
|
170
|
-
|
35
|
+
mms = MyModel.find(:all, :conditions=>["name=?", "Travis"])
|
36
|
+
assert mms.size > 0
|
37
|
+
assert mms.size == count
|
171
38
|
|
172
|
-
def test_count
|
173
|
-
count = MyModel.find(:count)
|
174
|
-
assert count > 0
|
175
39
|
end
|
176
40
|
|
177
41
|
def test_attributes_correct
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appoxy-simple_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Reeder
|
@@ -25,6 +25,7 @@ extra_rdoc_files:
|
|
25
25
|
files:
|
26
26
|
- lib/results_array.rb
|
27
27
|
- lib/simple_record.rb
|
28
|
+
- lib/stats.rb
|
28
29
|
- README.markdown
|
29
30
|
has_rdoc: true
|
30
31
|
homepage: http://github.com/appoxy/simple_record/
|