gatoroid 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
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.2"
8
+ s.version = "0.2.3"
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-07"
12
+ s.date = "2012-06-08"
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
@@ -25,9 +25,9 @@ module Mongoid #:nodoc:
25
25
  end
26
26
 
27
27
  # Get collections for
28
- def collection_for(date,grain, opts={})
28
+ def collection_for(date,grain,off_set,opts={})
29
29
  unless date.nil?
30
- return @object.collection.group(:keyf => create_fkey(grain),
30
+ return @object.collection.group(:keyf => create_fkey(grain,off_set),
31
31
  :reduce => "function(obj,prev){for (var key in obj.#{@for}) {prev.#{@for} += obj.#{@for}}}",
32
32
  :cond=>create_query_hash(date,grain,opts),
33
33
  :initial => {@for => 0})
@@ -45,23 +45,36 @@ module Mongoid #:nodoc:
45
45
  end
46
46
  case level
47
47
  when HOUR
48
- return sdate.change(:sec=>0), edate.change(:sec=>0)
48
+ return sdate.change(:sec=>0), edate.change(:sec=>0) + 1.hour
49
49
  when DAY
50
- return sdate.change(:hour=>0).change(:sec=>0), edate.change(:hour=>24).change(:sec=>0)
50
+ return sdate.change(:hour=>0).change(:sec=>0), edate.change(:hour=>0).change(:sec=>0) + 1.day
51
51
  when MONTH
52
52
  return sdate.change(:day=>1).change(:hour=>0).change(:sec=>0), edate.change(:day=>1).change(:hour=>0).change(:sec=>0) + 1.month
53
53
  end
54
54
  end
55
55
 
56
56
  # Create fkey
57
- def create_fkey(grain)
57
+ def create_fkey(grain,off_set)
58
58
  case grain
59
59
  when HOUR
60
60
  fkey = Javascript.aggregate_hour
61
61
  when MONTH
62
- fkey = Javascript.aggregate_month
62
+ fkey = "function(doc) {
63
+ off_set = #{off_set} * 1000;
64
+ dd = new Date((doc.date + #{off_set})* 1000);
65
+ utc_date = parseInt((Date.parse((dd.getUTCMonth() + 1) + '/' + '01' + '/' + dd.getUTCFullYear()) / 1000)/86400)*86400;
66
+ out = (utc_date - #{off_set});
67
+ return {date: out.toFixed(0)};
68
+ }"
69
+
63
70
  else # DEFAULT TO DAY
64
- fkey = Javascript.aggregate_day
71
+ fkey = "function(doc) {
72
+ off_set = #{off_set} * 1000;
73
+ dd = new Date((doc.date + #{off_set})* 1000);
74
+ utc_date = parseInt((Date.parse((dd.getUTCMonth() + 1) + '/' + dd.getUTCDate() + '/' + dd.getUTCFullYear()) / 1000)/86400)*86400;
75
+ out = (utc_date - #{off_set});
76
+ return {date: out.toFixed(0)};
77
+ }"
65
78
  end
66
79
  return fkey
67
80
  end
@@ -201,4 +214,4 @@ module Mongoid #:nodoc:
201
214
 
202
215
  end
203
216
  end
204
- end
217
+ end
@@ -1,17 +1,17 @@
1
1
  aggregate_hour:
2
- "function(doc) {
3
- d = new Date(doc.date* 1000);
4
- return {date: (Date.parse((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear() + ' ' + d.getHours() + ':00:00') / 1000).toFixed(0)};
2
+ "function(doc) {
3
+ d = new Date(doc.date* 1000);
4
+ return {date: (Date.parse((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear() + ' ' + d.getHours() + ':00:00') / 1000).toFixed(0)};
5
5
  }"
6
-
6
+
7
7
  aggregate_day:
8
- "function(doc) {
9
- d = new Date(doc.date* 1000);
10
- return {date: (Date.parse((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear()) / 1000).toFixed(0)};
8
+ "function(doc) {
9
+ d = new Date(doc.date* 1000);
10
+ return {date: (Date.parse((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear() + ' 00::00') / 1000).toFixed(0)};
11
11
  }"
12
-
12
+
13
13
  aggregate_month:
14
- "function(doc) {
15
- d = new Date(doc.date* 1000);
16
- return {date: (Date.parse((d.getMonth() + 1) + '/1/' + d.getFullYear()) / 1000).toFixed(0)};
17
- }"
14
+ "function(doc) {
15
+ d = new Date(doc.date* 1000);
16
+ return {date: (Date.parse((d.getMonth() + 1) + '/1/' + d.getFullYear()) / 1000).toFixed(0)};
17
+ }
data/lib/gator/readers.rb CHANGED
@@ -7,15 +7,15 @@ module Mongoid #:nodoc:
7
7
  DAY = "DAY"
8
8
  MONTH = "MONTH"
9
9
  DEFAULT_GRAIN = DAY
10
-
10
+
11
11
  # Today - Gets total for today on DAY level
12
12
  def today(opts={})
13
- total_for(Time.now, DEFAULT_GRAIN, opts).to_i
13
+ total_for(Time.zone.now, DEFAULT_GRAIN, opts).to_i
14
14
  end
15
-
15
+
16
16
  # Yesterday - Gets total for tomorrow on DAY level
17
17
  def yesterday(opts={})
18
- total_for(Time.now - 1.day, DEFAULT_GRAIN,opts).to_i
18
+ total_for(Time.zone.now - 1.day, DEFAULT_GRAIN,opts).to_i
19
19
  end
20
20
 
21
21
  # On - Gets total for a specified day on DAY level
@@ -25,31 +25,40 @@ module Mongoid #:nodoc:
25
25
 
26
26
  # Range - retuns a collection for a specified range on specified level
27
27
  def range(date, grain=DEFAULT_GRAIN, opts={})
28
- data = collection_for(date,grain,opts)
28
+ # Get Offset
29
+ if date.is_a?(Range)
30
+ off_set = date.first.utc_offset
31
+ else
32
+ off_set = date.utc_offset
33
+ end
34
+
35
+
36
+ data = collection_for(date,grain,off_set,opts)
37
+
29
38
  # Add Zero values for dates missing
30
39
  # May want to look into a way to get mongo to do this
31
40
  if date.is_a?(Range)
32
41
  start_date = date.first
33
42
  end_date = date.last
34
-
43
+
35
44
  case grain
36
45
  when HOUR
37
- start_date = start_date.change(:sec=>0)
38
- end_date = end_date.change(:sec=>0)
46
+ start_date.change(:sec=>0)
47
+ end_date.change(:sec=>0)
39
48
  when DAY
40
- start_date = start_date.change(:hour=>0).change(:sec=>0)
41
- end_date = end_date.change(:hour=>0).change(:sec=>0)
49
+ start_date.change(:hour=>0).change(:sec=>0)
50
+ end_date.change(:hour=>0).change(:sec=>0)
42
51
  when MONTH
43
- start_date = start_date.change(:day=>1).change(:hour=>0).change(:sec=>0)
44
- end_date = start_date.change(:day=>1).change(:hour=>0).change(:sec=>0)
52
+ start_date.change(:day=>1).change(:hour=>0).change(:sec=>0)
53
+ end_date.change(:day=>1).change(:hour=>0).change(:sec=>0)
45
54
  end
46
-
47
-
55
+
48
56
  while start_date <= end_date
49
57
  if data.select{|item| item['date'].to_i == start_date.to_i}.first.nil?
50
- data << {"date" => "#{start_date.to_i}", @for => 0}
51
- end
52
- case grain
58
+ data << {"date" => "#{start_date.to_i}", @for => 0}
59
+ end
60
+
61
+ case grain
53
62
  when HOUR
54
63
  start_date = start_date + 1.hour
55
64
  when DAY
@@ -57,13 +66,12 @@ module Mongoid #:nodoc:
57
66
  when MONTH
58
67
  start_date = start_date + 1.month
59
68
  end
60
- end
61
- end
62
- # Sort by date
63
- data = data.sort_by { |hsh| hsh["date"] }
64
- return data
69
+ end
70
+ end
71
+ # Sort by date
72
+ data = data.sort_by { |hsh| hsh["date"] }
73
+ return data
65
74
  end
66
-
67
75
  end
68
76
  end
69
77
  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.2
4
+ version: 0.2.3
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-07 00:00:00.000000000 Z
12
+ date: 2012-06-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongoid
16
- requirement: &2156253380 !ruby/object:Gem::Requirement
16
+ requirement: &2156222560 !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: *2156253380
24
+ version_requirements: *2156222560
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &2156252880 !ruby/object:Gem::Requirement
27
+ requirement: &2156222060 !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: *2156252880
35
+ version_requirements: *2156222060
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &2156252340 !ruby/object:Gem::Requirement
38
+ requirement: &2156221520 !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: *2156252340
46
+ version_requirements: *2156221520
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &2156251760 !ruby/object:Gem::Requirement
49
+ requirement: &2156220960 !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: *2156251760
57
+ version_requirements: *2156220960
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: mocha
60
- requirement: &2156251240 !ruby/object:Gem::Requirement
60
+ requirement: &2156220440 !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: *2156251240
68
+ version_requirements: *2156220440
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bson_ext
71
- requirement: &2156250620 !ruby/object:Gem::Requirement
71
+ requirement: &2156219800 !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: *2156250620
79
+ version_requirements: *2156219800
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