gatoroid 0.2.9 → 0.2.10
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/VERSION +1 -1
- data/gatoroid.gemspec +2 -2
- data/lib/gator/gatorer.rb +19 -7
- data/lib/gator/readers.rb +14 -0
- data/spec/gatoroid_spec.rb +14 -0
- metadata +14 -14
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.10
|
data/gatoroid.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "gatoroid"
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.10"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kevin Haight"]
|
12
|
-
s.date = "2012-06
|
12
|
+
s.date = "2012-08-06"
|
13
13
|
s.description = "Gatoroid is a way to store analytics using the poweful features of MongoDB for scalability"
|
14
14
|
s.email = "kevinjhaight@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/gator/gatorer.rb
CHANGED
@@ -34,6 +34,16 @@ module Mongoid #:nodoc:
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
# Get collections for group
|
38
|
+
def collection_for_group(date,off_set,opts={})
|
39
|
+
unless date.nil?
|
40
|
+
return @object.collection.group(:key => create_group_key_hash,
|
41
|
+
:reduce => "function(obj,prev){for (var key in obj.#{@for}) {prev.#{@for} += obj.#{@for}}}",
|
42
|
+
:cond=>create_query_hash(date,"HOUR",opts),
|
43
|
+
:initial => {@for => 0})
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
37
47
|
# Convert date levels
|
38
48
|
def convert_date_by_level(date,level)
|
39
49
|
if date.is_a?(Range)
|
@@ -175,7 +185,6 @@ module Mongoid #:nodoc:
|
|
175
185
|
@object.gator_keys.each do | gk |
|
176
186
|
keys << gk
|
177
187
|
end
|
178
|
-
keys << :date
|
179
188
|
return keys
|
180
189
|
end
|
181
190
|
|
@@ -183,14 +192,17 @@ module Mongoid #:nodoc:
|
|
183
192
|
def create_query_hash(date = Time.now, grain, opts)
|
184
193
|
key_hash = Hash.new { |hash, key| hash[key] = [] }
|
185
194
|
# Set Keys
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
195
|
+
if !opts.empty?
|
196
|
+
@object.gator_keys.each do | gk |
|
197
|
+
raise Errors::ModelNotSaved, "Missing key value #{gk}" if opts[gk].nil?
|
198
|
+
if opts[gk].kind_of?(Array)
|
199
|
+
key_hash[gk] = {"$in" => opts[gk]}
|
200
|
+
else
|
201
|
+
key_hash[gk] = opts[gk]
|
202
|
+
end
|
192
203
|
end
|
193
204
|
end
|
205
|
+
|
194
206
|
sdate,edate = convert_date_by_level(date,grain) # Set Dates
|
195
207
|
key_hash[:date] = {"$gte" => normalize_date(sdate), "$lt" => normalize_date(edate)}
|
196
208
|
return key_hash
|
data/lib/gator/readers.rb
CHANGED
@@ -76,6 +76,20 @@ module Mongoid #:nodoc:
|
|
76
76
|
data = data.sort_by { |hsh| hsh["date"] }
|
77
77
|
return data
|
78
78
|
end
|
79
|
+
|
80
|
+
|
81
|
+
# Group_by - retuns a collection for a specific key
|
82
|
+
def group_by(date, opts={})
|
83
|
+
# Get Offset
|
84
|
+
if date.is_a?(Range)
|
85
|
+
off_set = date.first.utc_offset
|
86
|
+
else
|
87
|
+
off_set = date.utc_offset
|
88
|
+
end
|
89
|
+
data = collection_for_group(date,off_set,opts)
|
90
|
+
return data
|
91
|
+
end
|
92
|
+
|
79
93
|
end
|
80
94
|
end
|
81
95
|
end
|
data/spec/gatoroid_spec.rb
CHANGED
@@ -120,6 +120,12 @@ describe Mongoid::Gator do
|
|
120
120
|
@obj.visits.today(:siteid=>100).should == 0
|
121
121
|
end
|
122
122
|
|
123
|
+
it "should have 1 record using range method for today and yesterday at day grain", :test => true do
|
124
|
+
lambda { @obj.visits.add(1,:siteid=>100) }.should_not raise_error Mongoid::Errors::ModelNotSaved
|
125
|
+
lambda { @obj.visits.add(1,:siteid=>200) }.should_not raise_error Mongoid::Errors::ModelNotSaved
|
126
|
+
lambda { @obj.visits.add(1,:siteid=>200) }.should_not raise_error Mongoid::Errors::ModelNotSaved
|
127
|
+
@obj.visits.group_by(Time.now..Time.now + 1.day).should have(2).record
|
128
|
+
end
|
123
129
|
end
|
124
130
|
|
125
131
|
|
@@ -201,6 +207,14 @@ describe Mongoid::Gator do
|
|
201
207
|
Test.visits.reset(:date => Time.now, :siteid=>200).should_not raise_error Mongoid::Errors::ModelNotSaved
|
202
208
|
Test.visits.today(:siteid=>200).should == 0
|
203
209
|
end
|
210
|
+
|
211
|
+
it "should have 1 record using range method for today and yesterday at day grain", :test => true do
|
212
|
+
lambda { Test.visits.add(1,:siteid=>100) }.should_not raise_error Mongoid::Errors::ModelNotSaved
|
213
|
+
lambda { Test.visits.add(1,:siteid=>200) }.should_not raise_error Mongoid::Errors::ModelNotSaved
|
214
|
+
lambda { Test.visits.add(1,:siteid=>200) }.should_not raise_error Mongoid::Errors::ModelNotSaved
|
215
|
+
Test.visits.group_by(Time.now..Time.now + 1.day).should have(2).record
|
216
|
+
end
|
217
|
+
|
204
218
|
end
|
205
219
|
|
206
220
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gatoroid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.10
|
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: 2012-06
|
12
|
+
date: 2012-08-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
16
|
-
requirement: &
|
16
|
+
requirement: &2156253380 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2156253380
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156252880 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156252880
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156252340 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2156252340
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156251760 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.2.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2156251760
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: mocha
|
60
|
-
requirement: &
|
60
|
+
requirement: &2156251240 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2156251240
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bson_ext
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156250620 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2156250620
|
80
80
|
description: Gatoroid is a way to store analytics using the poweful features of MongoDB
|
81
81
|
for scalability
|
82
82
|
email: kevinjhaight@gmail.com
|