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 CHANGED
@@ -1,3 +1,7 @@
1
+ === 2.0.1 / 2009-08-08
2
+
3
+ * Handle native ObjectID's correctly.
4
+
1
5
  === 2.0.0 / 2009-08-07
2
6
 
3
7
  * Switched to MongoDB for persistence.
data/Rakefile CHANGED
@@ -20,4 +20,4 @@ task :radiant_features do
20
20
  end
21
21
  end
22
22
 
23
- task :test => [:basic_features, :radiant_features]
23
+ task :default => [:basic_features, :radiant_features]
@@ -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(:_id => id).next_object
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({:_id => visitor["_id"]}, visitor)
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(:_id => id).next_object
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(:visitor => visitor)
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 => {:time => 1}).to_a
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
@@ -6,7 +6,7 @@ require 'metry/experiment'
6
6
  require 'metry/psycho'
7
7
 
8
8
  module Metry
9
- VERSION = '2.0.0'
9
+ VERSION = '2.0.1'
10
10
 
11
11
  def self.init(dbname)
12
12
  @storage = Storage.new(dbname)
data/test/test_storage.rb CHANGED
@@ -10,5 +10,10 @@ class TestTokyo < Test::Unit::TestCase
10
10
  should "be empty" do
11
11
  assert_equal 0, @storage.event_count
12
12
  end
13
+
14
+ should "handle object ids" do
15
+ v = @storage.new_visitor
16
+ assert_equal v, @storage.visitor(v['_id'].to_s)
17
+ end
13
18
  end
14
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metry
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathaniel Talbott