redistat 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- redistat (0.0.6)
4
+ redistat (0.0.8)
5
5
  activesupport (>= 2.3.0)
6
6
  json (>= 1.4.0)
7
7
  redis (>= 2.1.0)
data/lib/redistat.rb CHANGED
@@ -13,6 +13,7 @@ require 'redistat/collection'
13
13
  require 'redistat/connection'
14
14
  require 'redistat/database'
15
15
  require 'redistat/date'
16
+ require 'redistat/date_helper'
16
17
  require 'redistat/event'
17
18
  require 'redistat/finder'
18
19
  require 'redistat/finder/date_set'
@@ -22,6 +23,7 @@ require 'redistat/model'
22
23
  require 'redistat/result'
23
24
  require 'redistat/scope'
24
25
  require 'redistat/summary'
26
+ require 'redistat/version'
25
27
 
26
28
  require 'redistat/core_ext/date'
27
29
  require 'redistat/core_ext/time'
@@ -18,6 +18,7 @@ module Redistat
18
18
  end
19
19
 
20
20
  def create(options = {})
21
+ #TODO clean/remove all ref-less connections
21
22
  ref = options.delete(:ref) || :default
22
23
  options.reverse_merge!(default_options)
23
24
  conn = (connections[connection_id(options)] ||= connection(options))
@@ -26,15 +27,11 @@ module Redistat
26
27
  end
27
28
 
28
29
  def connections
29
- threaded[:connections] ||= {}
30
+ @connections ||= {}
30
31
  end
31
32
 
32
33
  def references
33
- threaded[:references] ||= {}
34
- end
35
-
36
- def threaded
37
- Thread.current[:redistat] ||= {}
34
+ @references ||= {}
38
35
  end
39
36
 
40
37
  private
data/lib/redistat/date.rb CHANGED
@@ -85,11 +85,4 @@ module Redistat
85
85
  end
86
86
 
87
87
  end
88
-
89
- module DateHelper
90
- def to_redistat(depth = nil)
91
- Redistat::Date.new(self, depth)
92
- end
93
- alias :to_rs :to_redistat
94
- end
95
88
  end
@@ -0,0 +1,8 @@
1
+ module Redistat
2
+ module DateHelper
3
+ def to_redistat(depth = nil)
4
+ Redistat::Date.new(self, depth)
5
+ end
6
+ alias :to_rs :to_redistat
7
+ end
8
+ end
@@ -1,3 +1,3 @@
1
1
  module Redistat
2
- VERSION = "0.0.7"
3
- end
2
+ VERSION = "0.0.8"
3
+ end
data/spec/spec_helper.rb CHANGED
@@ -8,5 +8,5 @@ require 'rspec'
8
8
  require 'rspec/autorun'
9
9
 
10
10
  # use the test Redistat instance
11
- Redistat.connect(:port => 8379, :db => 15)
11
+ Redistat.connect(:port => 8379, :db => 15, :thread_safe => true)
12
12
  Redistat.redis.flushdb
@@ -0,0 +1,39 @@
1
+ require "spec_helper"
2
+
3
+ describe "Thread-Safety" do
4
+ include Redistat::Database
5
+
6
+ before(:each) do
7
+ db.flushdb
8
+ end
9
+
10
+ #TODO should have more comprehensive thread-safe tests
11
+
12
+ it "should incr in multiple threads" do
13
+ threads = []
14
+ 50.times do
15
+ threads << Thread.new {
16
+ db.incr("spec:incr")
17
+ }
18
+ end
19
+ threads.each { |t| t.join }
20
+ db.get("spec:incr").should == "50"
21
+ end
22
+
23
+ it "should store event in multiple threads" do
24
+ class ThreadSafetySpec
25
+ include Redistat::Model
26
+ end
27
+ threads = []
28
+ 50.times do
29
+ threads << Thread.new {
30
+ ThreadSafetySpec.store("spec:threadsafe", {:count => 1, :rand => rand(5)})
31
+ }
32
+ end
33
+ threads.each { |t| t.join }
34
+ result = ThreadSafetySpec.fetch("spec:threadsafe", 5.hours.ago, 5.hours.from_now)
35
+ result.total[:count].should == 50
36
+ result.total[:rand].should <= 250
37
+ end
38
+
39
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redistat
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 15
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 7
9
- version: 0.0.7
9
+ - 8
10
+ version: 0.0.8
10
11
  platform: ruby
11
12
  authors:
12
13
  - Jim Myhrberg
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-12-29 00:00:00 +00:00
18
+ date: 2011-01-12 00:00:00 +00:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
@@ -25,6 +26,7 @@ dependencies:
25
26
  requirements:
26
27
  - - ">="
27
28
  - !ruby/object:Gem::Version
29
+ hash: 3
28
30
  segments:
29
31
  - 2
30
32
  - 3
@@ -40,6 +42,7 @@ dependencies:
40
42
  requirements:
41
43
  - - ">="
42
44
  - !ruby/object:Gem::Version
45
+ hash: 7
43
46
  segments:
44
47
  - 1
45
48
  - 4
@@ -55,6 +58,7 @@ dependencies:
55
58
  requirements:
56
59
  - - ">="
57
60
  - !ruby/object:Gem::Version
61
+ hash: 11
58
62
  segments:
59
63
  - 2
60
64
  - 1
@@ -70,6 +74,7 @@ dependencies:
70
74
  requirements:
71
75
  - - ">="
72
76
  - !ruby/object:Gem::Version
77
+ hash: 7
73
78
  segments:
74
79
  - 0
75
80
  - 2
@@ -85,6 +90,7 @@ dependencies:
85
90
  requirements:
86
91
  - - ">="
87
92
  - !ruby/object:Gem::Version
93
+ hash: 11
88
94
  segments:
89
95
  - 2
90
96
  - 1
@@ -100,6 +106,7 @@ dependencies:
100
106
  requirements:
101
107
  - - ">="
102
108
  - !ruby/object:Gem::Version
109
+ hash: 1
103
110
  segments:
104
111
  - 0
105
112
  - 6
@@ -134,6 +141,7 @@ files:
134
141
  - lib/redistat/core_ext/time.rb
135
142
  - lib/redistat/database.rb
136
143
  - lib/redistat/date.rb
144
+ - lib/redistat/date_helper.rb
137
145
  - lib/redistat/event.rb
138
146
  - lib/redistat/finder.rb
139
147
  - lib/redistat/finder/date_set.rb
@@ -162,6 +170,7 @@ files:
162
170
  - spec/scope_spec.rb
163
171
  - spec/spec_helper.rb
164
172
  - spec/summary_spec.rb
173
+ - spec/thread_safety_spec.rb
165
174
  has_rdoc: true
166
175
  homepage: http://github.com/jimeh/redistat
167
176
  licenses: []
@@ -176,6 +185,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
185
  requirements:
177
186
  - - ">="
178
187
  - !ruby/object:Gem::Version
188
+ hash: 3
179
189
  segments:
180
190
  - 0
181
191
  version: "0"
@@ -184,6 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
194
  requirements:
185
195
  - - ">="
186
196
  - !ruby/object:Gem::Version
197
+ hash: 3
187
198
  segments:
188
199
  - 0
189
200
  version: "0"
@@ -212,3 +223,4 @@ test_files:
212
223
  - spec/scope_spec.rb
213
224
  - spec/spec_helper.rb
214
225
  - spec/summary_spec.rb
226
+ - spec/thread_safety_spec.rb