tpitale-mongolytics 0.1.0 → 0.2.0
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/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
|