metry 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Rakefile +1 -1
- data/lib/metry/rack/tracking.rb +2 -2
- data/lib/metry/storage.rb +19 -5
- data/lib/metry.rb +1 -1
- data/test/test_storage.rb +5 -0
- metadata +1 -1
data/History.txt
CHANGED
data/Rakefile
CHANGED
data/lib/metry/rack/tracking.rb
CHANGED
@@ -22,7 +22,7 @@ module Metry
|
|
22
22
|
|
23
23
|
unless env["metry.ignore"] == "true"
|
24
24
|
event["status"] = status.to_s
|
25
|
-
event["visitor"] = visitor['_id']
|
25
|
+
event["visitor"] = visitor['_id'].to_s
|
26
26
|
@storage.add_event(event)
|
27
27
|
end
|
28
28
|
|
@@ -47,7 +47,7 @@ module Metry
|
|
47
47
|
def save_visitor(response, visitor)
|
48
48
|
@storage.save_visitor(visitor)
|
49
49
|
response.set_cookie(COOKIE,
|
50
|
-
:value => visitor['_id'],
|
50
|
+
:value => visitor['_id'].to_s,
|
51
51
|
:expires => (Time.now+(60*60*24*365*20)),
|
52
52
|
:path => '/')
|
53
53
|
end
|
data/lib/metry/storage.rb
CHANGED
@@ -30,7 +30,7 @@ module Metry
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def visitor(id)
|
33
|
-
@db.collection('visitors').find(
|
33
|
+
@db.collection('visitors').find(prep_selector('_id' => id)).next_object
|
34
34
|
end
|
35
35
|
|
36
36
|
def visitor_count
|
@@ -46,7 +46,7 @@ module Metry
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def save_visitor(visitor)
|
49
|
-
@db.collection('visitors').repsert(
|
49
|
+
@db.collection('visitors').repsert(prep_selector('_id' => visitor["_id"]), visitor)
|
50
50
|
end
|
51
51
|
|
52
52
|
def add_event(event)
|
@@ -54,7 +54,7 @@ module Metry
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def event(id)
|
57
|
-
@db.collection('events').find(
|
57
|
+
@db.collection('events').find(prep_selector('_id' => id)).next_object
|
58
58
|
end
|
59
59
|
|
60
60
|
def event_count
|
@@ -62,11 +62,11 @@ module Metry
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def events_for(visitor)
|
65
|
-
@db.collection('events').find(
|
65
|
+
@db.collection('events').find('visitor' => visitor)
|
66
66
|
end
|
67
67
|
|
68
68
|
def last_events(count=1)
|
69
|
-
@db.collection('events').find({}, :limit => count, :sort => {
|
69
|
+
@db.collection('events').find({}, :limit => count, :sort => {'time' => 1}).to_a
|
70
70
|
end
|
71
71
|
|
72
72
|
def all_events(*find_options)
|
@@ -86,6 +86,20 @@ module Metry
|
|
86
86
|
@key_factory.clear if @key_factory
|
87
87
|
end
|
88
88
|
|
89
|
+
private
|
90
|
+
|
91
|
+
def prep_selector(selector)
|
92
|
+
if self.class.predictable_keys?
|
93
|
+
selector
|
94
|
+
elsif id = selector['_id']
|
95
|
+
case id
|
96
|
+
when String
|
97
|
+
selector['_id'] = ObjectID.from_string(id)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
selector
|
101
|
+
end
|
102
|
+
|
89
103
|
class PredictableKeyFactory
|
90
104
|
def initialize
|
91
105
|
clear
|
data/lib/metry.rb
CHANGED
data/test/test_storage.rb
CHANGED