tpitale-mongolytics 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +8 -5
- data/lib/mongolytics/param.rb +5 -0
- data/lib/mongolytics/session.rb +5 -0
- data/lib/mongolytics/statistic.rb +4 -7
- data/lib/mongolytics/tracker.rb +6 -7
- data/lib/mongolytics/version.rb +1 -1
- data/lib/mongolytics.rb +4 -2
- data/test/unit/mongolytics/statistic_test.rb +0 -10
- data/test/unit/mongolytics/tracker_test.rb +26 -18
- data/test/unit/mongolytics_test.rb +1 -6
- metadata +5 -4
data/README.md
CHANGED
@@ -39,11 +39,16 @@ Simple analytics tracking for Rails using the awesomest: MongoDB
|
|
39
39
|
track_change_stats # tracks create, update, destroy
|
40
40
|
track_stats_for :new, :edit, :show, :destroy # track any action mix, other actions
|
41
41
|
|
42
|
-
If you want to track a
|
42
|
+
If you want to track a session variable:
|
43
43
|
|
44
44
|
track_session_key :username # tracks session[:username] as a String
|
45
45
|
track_session_key :user_id, Integer # tracks session[:user_id] as an Integer
|
46
46
|
|
47
|
+
If you want to track a params variable:
|
48
|
+
|
49
|
+
track_params_key :username # tracks params[:username] as a String
|
50
|
+
track_params_key :user_id, Integer # tracks params[:user_id] as an Integer
|
51
|
+
|
47
52
|
Later, retrieve stats via (given UsersController is our controller):
|
48
53
|
|
49
54
|
# by path, useful for getting per-id stats e.g., /users/1
|
@@ -52,12 +57,10 @@ Simple analytics tracking for Rails using the awesomest: MongoDB
|
|
52
57
|
# by controller and action keys, useful if you want all views of users/show page
|
53
58
|
Mongolytics.stats_for_keys :users, :show # using the controller and action
|
54
59
|
|
55
|
-
# by controller/action and session key/value hash
|
56
|
-
Mongolytics.stats_for_keys :users, :show, :user_id => 1 # note: session keys, not request params
|
57
|
-
|
58
60
|
You can always query the Statistics:
|
59
61
|
|
60
|
-
Mongolytics::Statistic.count({:user_id => 1})
|
62
|
+
Mongolytics::Statistic.count(:session => {:user_id => 1})
|
63
|
+
Mongolytics::Statistic.count(:param => {:user_id => 1})
|
61
64
|
|
62
65
|
## Motivation
|
63
66
|
|
@@ -6,18 +6,15 @@ module Mongolytics
|
|
6
6
|
key :action, String, :required => true
|
7
7
|
key :path, String
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
def self.session_keys
|
12
|
-
keys.map{|k,v| k} - BASE_KEYS
|
13
|
-
end
|
9
|
+
many :sessions
|
10
|
+
many :params
|
14
11
|
|
15
12
|
def self.stats_for_path(path)
|
16
13
|
count({:path => path})
|
17
14
|
end
|
18
15
|
|
19
|
-
def self.stats_for_keys(controller, action
|
20
|
-
count({:controller => controller.to_s, :action => action.to_s}
|
16
|
+
def self.stats_for_keys(controller, action)
|
17
|
+
count({:controller => controller.to_s, :action => action.to_s})
|
21
18
|
end
|
22
19
|
end
|
23
20
|
end
|
data/lib/mongolytics/tracker.rb
CHANGED
@@ -11,12 +11,7 @@ module Mongolytics
|
|
11
11
|
:path => request.path
|
12
12
|
}
|
13
13
|
|
14
|
-
|
15
|
-
hash[key.to_sym] = session[key.to_sym] if session.has_key?(key.to_sym)
|
16
|
-
hash
|
17
|
-
end
|
18
|
-
|
19
|
-
Statistic.create(options.merge(session_options))
|
14
|
+
Statistic.create(options.merge(:sessions => [session], :params => [params]))
|
20
15
|
end
|
21
16
|
|
22
17
|
module ClassMethods
|
@@ -37,7 +32,11 @@ module Mongolytics
|
|
37
32
|
end
|
38
33
|
|
39
34
|
def track_session_key(key, type = String)
|
40
|
-
|
35
|
+
Session.key(key, type)
|
36
|
+
end
|
37
|
+
|
38
|
+
def track_params_key(key, type = String)
|
39
|
+
Param.key(key, type)
|
41
40
|
end
|
42
41
|
end
|
43
42
|
end
|
data/lib/mongolytics/version.rb
CHANGED
data/lib/mongolytics.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
$:.unshift File.dirname(__FILE__)
|
2
2
|
|
3
3
|
require 'mongolytics/statistic'
|
4
|
+
require 'mongolytics/session'
|
5
|
+
require 'mongolytics/param'
|
4
6
|
require 'mongolytics/tracker'
|
5
7
|
|
6
8
|
module Mongolytics
|
@@ -8,7 +10,7 @@ module Mongolytics
|
|
8
10
|
Statistic.stats_for_path(path)
|
9
11
|
end
|
10
12
|
|
11
|
-
def self.stats_for_keys(controller, action
|
12
|
-
Statistic.stats_for_keys(controller, action
|
13
|
+
def self.stats_for_keys(controller, action)
|
14
|
+
Statistic.stats_for_keys(controller, action)
|
13
15
|
end
|
14
16
|
end
|
@@ -12,16 +12,6 @@ module Mongolytics
|
|
12
12
|
Statistic.expects(:count).with({:controller => 'users', :action => 'show'}).returns(11211)
|
13
13
|
Statistic.stats_for_keys(:users, :show).should == 11211
|
14
14
|
end
|
15
|
-
|
16
|
-
should "find count of stats for a given controller/action and session key hash" do
|
17
|
-
Statistic.expects(:count).with({:controller => 'users', :action => 'show', :user_id => 1}).returns(13131)
|
18
|
-
Statistic.stats_for_keys(:users, :show, :user_id => 1).should == 13131
|
19
|
-
end
|
20
|
-
|
21
|
-
should "know of any session keys" do
|
22
|
-
Statistic.key(:extra_key, String)
|
23
|
-
assert_equal ["extra_key"], Statistic.session_keys
|
24
|
-
end
|
25
15
|
end
|
26
16
|
end
|
27
17
|
end
|
@@ -27,38 +27,46 @@ module Mongolytics
|
|
27
27
|
FauxController.track_change_stats
|
28
28
|
end
|
29
29
|
|
30
|
-
should "add a session key to
|
31
|
-
|
30
|
+
should "add a session key to Session" do
|
31
|
+
Session.expects(:key).with(:username, String)
|
32
32
|
FauxController.track_session_key :username
|
33
33
|
end
|
34
34
|
|
35
|
-
should "allow override of class type for key added to
|
36
|
-
|
35
|
+
should "allow override of class type for a session key added to Session" do
|
36
|
+
Session.expects(:key).with(:user_id, Integer)
|
37
37
|
FauxController.track_session_key :user_id, Integer
|
38
38
|
end
|
39
|
+
|
40
|
+
should "add a params key to Session" do
|
41
|
+
Param.expects(:key).with(:username, String)
|
42
|
+
FauxController.track_params_key :username
|
43
|
+
end
|
44
|
+
|
45
|
+
should "allow override of class type for a params key added to Session" do
|
46
|
+
Param.expects(:key).with(:user_id, Integer)
|
47
|
+
FauxController.track_params_key :user_id, Integer
|
48
|
+
end
|
39
49
|
end
|
40
50
|
|
41
51
|
context "An instance of a Controller with Tracker mixed-in" do
|
42
52
|
should "create a statistic with controller, action, and path" do
|
43
53
|
controller = FauxController.new
|
44
54
|
|
45
|
-
controller
|
46
|
-
|
47
|
-
controller.stubs(:session).returns({})
|
48
|
-
|
49
|
-
Statistic.expects(:create).with(:controller => 'faux', :action => 'show', :path => '/users/1').returns(true)
|
50
|
-
assert controller.track_stat
|
51
|
-
end
|
52
|
-
|
53
|
-
should "create a statistic with controller, action, path, and user_id" do
|
54
|
-
FauxController.track_session_key :user_id, Integer
|
55
|
-
controller = FauxController.new
|
55
|
+
params = {:controller => 'faux', :action => 'show'}
|
56
|
+
session = {}
|
56
57
|
|
57
58
|
controller.stubs(:request).returns(stub(:path => '/users/1'))
|
58
|
-
controller.stubs(:params).returns(
|
59
|
-
controller.stubs(:session).returns(
|
59
|
+
controller.stubs(:params).returns(params)
|
60
|
+
controller.stubs(:session).returns(session)
|
61
|
+
|
62
|
+
Statistic.expects(:create).with({
|
63
|
+
:controller => 'faux',
|
64
|
+
:action => 'show',
|
65
|
+
:path => '/users/1',
|
66
|
+
:params => [params],
|
67
|
+
:sessions => [session]
|
68
|
+
}).returns(true)
|
60
69
|
|
61
|
-
Statistic.expects(:create).with(:controller => 'faux', :action => 'show', :path => '/users/1', :user_id => 1).returns(true)
|
62
70
|
assert controller.track_stat
|
63
71
|
end
|
64
72
|
end
|
@@ -8,13 +8,8 @@ class MongolyticsTest < Test::Unit::TestCase
|
|
8
8
|
end
|
9
9
|
|
10
10
|
should "delegate stats_for_keys to Statistic" do
|
11
|
-
Mongolytics::Statistic.expects(:stats_for_keys).with(:users, :show
|
11
|
+
Mongolytics::Statistic.expects(:stats_for_keys).with(:users, :show)
|
12
12
|
Mongolytics.stats_for_keys(:users, :show)
|
13
13
|
end
|
14
|
-
|
15
|
-
should "delegate stats_for_keys with session options to Statistic" do
|
16
|
-
Mongolytics::Statistic.expects(:stats_for_keys).with(:users, :show, :user_id => 1)
|
17
|
-
Mongolytics.stats_for_keys(:users, :show, :user_id => 1)
|
18
|
-
end
|
19
14
|
end
|
20
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tpitale-mongolytics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Pitale
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-29 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -34,6 +34,8 @@ files:
|
|
34
34
|
- README.md
|
35
35
|
- Rakefile
|
36
36
|
- lib/mongolytics
|
37
|
+
- lib/mongolytics/param.rb
|
38
|
+
- lib/mongolytics/session.rb
|
37
39
|
- lib/mongolytics/statistic.rb
|
38
40
|
- lib/mongolytics/tracker.rb
|
39
41
|
- lib/mongolytics/version.rb
|
@@ -46,7 +48,6 @@ files:
|
|
46
48
|
- test/unit/mongolytics_test.rb
|
47
49
|
has_rdoc: false
|
48
50
|
homepage: http://t.pitale.com
|
49
|
-
licenses:
|
50
51
|
post_install_message:
|
51
52
|
rdoc_options: []
|
52
53
|
|
@@ -67,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
68
|
requirements: []
|
68
69
|
|
69
70
|
rubyforge_project:
|
70
|
-
rubygems_version: 1.
|
71
|
+
rubygems_version: 1.2.0
|
71
72
|
signing_key:
|
72
73
|
specification_version: 3
|
73
74
|
summary: Provide basic analytics tracking, server-side, using mongodb
|