frivol 0.1.6 → 0.1.7
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/VERSION +1 -1
- data/frivol.gemspec +2 -2
- data/lib/frivol.rb +5 -0
- data/test/fake_redis.rb +4 -0
- data/test/test_frivol.rb +29 -1
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.7
|
data/frivol.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{frivol}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Marc Heiligers"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-11-01}
|
13
13
|
s.description = %q{Simple Redis backed temporary storage intended primarily for use with ActiveRecord models to provide caching}
|
14
14
|
s.email = %q{marc@eternal.co.za}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/frivol.rb
CHANGED
@@ -241,7 +241,12 @@ module Frivol
|
|
241
241
|
|
242
242
|
def self.store_counter(instance, counter, value)
|
243
243
|
key = instance.send(:storage_key, counter)
|
244
|
+
is_new = !Frivol::Config.redis.exists(key)
|
244
245
|
Frivol::Config.redis[key] = value
|
246
|
+
if is_new
|
247
|
+
time = instance.class.storage_expiry(counter)
|
248
|
+
Frivol::Config.redis.expire(key, time) if time != Frivol::NEVER_EXPIRE
|
249
|
+
end
|
245
250
|
end
|
246
251
|
|
247
252
|
def self.retrieve_counter(instance, counter, default)
|
data/test/fake_redis.rb
CHANGED
data/test/test_frivol.rb
CHANGED
@@ -2,7 +2,7 @@ require 'helper'
|
|
2
2
|
|
3
3
|
class TestFrivol < Test::Unit::TestCase
|
4
4
|
def setup
|
5
|
-
|
5
|
+
fake_redis # Comment out this line to test against a real live Redis
|
6
6
|
Frivol::Config.redis_config = { :thread_safe => true } # This will connect to a default Redis setup, otherwise set to { :host => "localhost", :port => 6379 }, for example
|
7
7
|
Frivol::Config.redis.flushdb
|
8
8
|
end
|
@@ -258,6 +258,34 @@ class TestFrivol < Test::Unit::TestCase
|
|
258
258
|
assert_equal 11, t.increment_blue
|
259
259
|
assert_equal 11, t.load_blue
|
260
260
|
end
|
261
|
+
|
262
|
+
should "set expiry on counters" do
|
263
|
+
class SetExpireCounterTestClass < TestClass
|
264
|
+
storage_bucket :sheep_counter, :counter => true, :expires_in => 0.5
|
265
|
+
end
|
266
|
+
t = SetExpireCounterTestClass.new
|
267
|
+
assert_equal 0.5, SetExpireCounterTestClass.storage_expiry(:sheep_counter)
|
268
|
+
end
|
269
|
+
|
270
|
+
should "expire a counter bucket" do
|
271
|
+
class ExpireCounterTestClass < TestClass
|
272
|
+
storage_bucket :kitten_grave, :counter => true, :expires_in => 0.5
|
273
|
+
|
274
|
+
def bury_kittens
|
275
|
+
store_kitten_grave 10
|
276
|
+
end
|
277
|
+
|
278
|
+
def peek_in_grave
|
279
|
+
retrieve_kitten_grave 0
|
280
|
+
end
|
281
|
+
end
|
282
|
+
k = ExpireCounterTestClass.new
|
283
|
+
k.bury_kittens
|
284
|
+
assert_equal 10, k.peek_in_grave
|
285
|
+
sleep(0.6)
|
286
|
+
assert_equal 0, k.peek_in_grave
|
287
|
+
|
288
|
+
end
|
261
289
|
|
262
290
|
# Note: this test will fail from time to time using fake_redis because fake_redis is not thread safe
|
263
291
|
should "have thread safe counters" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: frivol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 7
|
10
|
+
version: 0.1.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Marc Heiligers
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-11-01 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|