redis-breadcrumbs 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -2,3 +2,4 @@ Gemfile.lock
2
2
  pkg
3
3
  .rvmrc
4
4
  *.rdb
5
+ .rbx
data/.travis.yml CHANGED
@@ -3,7 +3,11 @@ rvm:
3
3
  - 1.8.7
4
4
  - 1.9.2
5
5
  - 1.9.3
6
+ - 2.0.0
6
7
  - jruby-18mode
7
8
  - jruby-19mode
8
9
  - rbx-18mode
9
10
  - rbx-19mode
11
+ matrix:
12
+ allow_failures:
13
+ - rvm: 2.0.0
data/CHANGELOG.md ADDED
@@ -0,0 +1,43 @@
1
+ # Redis Breadcrumbs Changelog
2
+
3
+ ## 0.0.3
4
+
5
+ [28 commits by 1 author](https://github.com/ecoffey/redis-breadcrumbs/compare/v0.0.2...v0.0.3)
6
+
7
+ * Add ability to track sorted set membership
8
+ [aaa36c4](https://github.com/ecoffey/redis-breadcrumbs/commit/aaa36c4)
9
+ [51b46f9](https://github.com/ecoffey/redis-breadcrumbs/commit/51b46f9)
10
+ * Introduce reseting keys
11
+ [bdc053b](https://github.com/ecoffey/redis-breadcrumbs/commit/bdc053b)
12
+ [9b863ce](https://github.com/ecoffey/redis-breadcrumbs/commit/9b863ce)
13
+ * Introduce `as` proxy methods
14
+ [9485610](https://github.com/ecoffey/redis-breadcrumbs/commit/9485610)
15
+ [b50cee1](https://github.com/ecoffey/redis-breadcrumbs/commit/b50cee1)
16
+
17
+ ## 0.0.2
18
+
19
+ [40 commits by 1 author](https://github.com/ecoffey/redis-breadcrumbs/compare/v0.0.1...v0.0.2)
20
+
21
+ * Can be a member of a set
22
+ [bab7a45](https://github.com/ecoffey/redis-breadcrumbs/commit/bab7a45)
23
+ * Add support for templating in relationship declarations
24
+ [63357f4](https://github.com/ecoffey/redis-breadcrumbs/commit/63357f4)
25
+ [579f1c7](https://github.com/ecoffey/redis-breadcrumbs/commit/579f1c7)
26
+ [0df0562](https://github.com/ecoffey/redis-breadcrumbs/commit/0df0562)
27
+ * `tracked_in` is optional
28
+ [23b17ae](https://github.com/ecoffey/redis-breadcrumbs/commit/23b17ae)
29
+ * Unwraps Redis::Namespace to the raw connection
30
+ [ddc9e3f](https://github.com/ecoffey/redis-breadcrumbs/commit/ddc9e3f)
31
+ * Introduce cleaning up keys
32
+ [79b161a](https://github.com/ecoffey/redis-breadcrumbs/commit/79b161a)
33
+ [ff562c0](https://github.com/ecoffey/redis-breadcrumbs/commit/ff562c0)
34
+ [5053284](https://github.com/ecoffey/redis-breadcrumbs/commit/5053284)
35
+
36
+ ## 0.0.1
37
+
38
+ [8 commits by 1 author](https://github.com/ecoffey/redis-breadcrumbs/compare/aa281857c04a4900e92888e276d2d777d71257ce...v0.0.1)
39
+
40
+ * Added ability to track keys in redis
41
+ [7342aeb](https://github.com/ecoffey/redis-breadcrumbs/commit/7342aeb)
42
+ * Added ability to own a key
43
+ [65b5767](https://github.com/ecoffey/redis-breadcrumbs/commit/65b5767)
data/README.md CHANGED
@@ -25,7 +25,7 @@ class WorkerBreadcrumb < Redis::Breadcrumb
25
25
  end
26
26
  ```
27
27
 
28
- ## Usage
28
+ ## Installation
29
29
 
30
30
  Either
31
31
 
@@ -33,7 +33,50 @@ Either
33
33
 
34
34
  or add the following to your Gemfile
35
35
 
36
- `gem "redis-breadcrumbs", "~> 0.0.1"`
36
+ `gem "redis-breadcrumbs", "~> 0.0.3"`
37
+
38
+ ## Usage
39
+
40
+ Create your breadcrumb; we'll continue with the Resque example:
41
+
42
+ ```ruby
43
+ class WorkerBreadcrumb < Redis::Breadcrumb
44
+ owns 'resque:worker:<id>'
45
+ owns 'resque:worker:<id>:started'
46
+
47
+ member_of_set '<id>' => 'resque:workers'
48
+ end
49
+ ```
50
+
51
+ Keys that have `<...>` snippets in them are **templates**. When you call `track!` or `clean!`,
52
+ the Breadcrumb will expect an object that responds to symbols in between the brackets.
53
+
54
+ You can also specify a key to track keys in with `tracked_in 'resque:worker:<id>:tracking'`
55
+
56
+ Using `tracked_in` will let your breadcrumb remember how to clean up keys that are not currently
57
+ defined in the class (because of code changes, etc).
58
+
59
+ Breadcrumb also needs to be told about a redis connection:
60
+
61
+ ```ruby
62
+ # Breadcrumb always operates on the 'raw' client,
63
+ # so it will 'unwrap' Redis::Namespace
64
+
65
+ Redis::Breadcrumb.redis = Resque.redis
66
+ ```
67
+
68
+ When you're ready to start tracking keys (say after the worker finished booting) you can
69
+ do:
70
+
71
+ ```ruby
72
+ WorkerBreadcrumb.track!(self)
73
+ ```
74
+
75
+ And when you're ready to clean up keys (say when working is shutting down, or in a clean up rake task)
76
+
77
+ ```ruby
78
+ WorkerBreadcrumb.clean!(self)
79
+ ```
37
80
 
38
81
  ## Contributing
39
82
 
data/TODO.txt ADDED
@@ -0,0 +1 @@
1
+ prefix namespace
@@ -0,0 +1,20 @@
1
+ require 'redis-breadcrumbs/key_proxy'
2
+
3
+ module Breadcrumbs
4
+ module AsMethods
5
+
6
+ def self.included subclass
7
+ subclass.extend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ def create_as_method key_template, as
12
+ instance_eval do
13
+ define_method as.to_sym do
14
+ KeyProxy.new(self.class.keys[key_template], redis)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,13 +1,24 @@
1
1
  require 'redis-breadcrumbs/dsl'
2
+ require 'redis-breadcrumbs/as_methods'
3
+ require 'redis-breadcrumbs/entrance'
2
4
  require 'redis-breadcrumbs/keys'
5
+ require 'redis-breadcrumbs/unspecialized_dummy_object'
3
6
 
4
7
  class Redis
5
8
  class Breadcrumb
6
9
  include Breadcrumbs::Dsl
10
+ include Breadcrumbs::AsMethods
11
+ include Breadcrumbs::Entrance
12
+
13
+ class << self
14
+ def method_missing mthd, *args
15
+ new.send(mthd)
16
+ end
17
+ end
7
18
 
8
19
  attr_reader :tracked_in
9
20
 
10
- def initialize object
21
+ def initialize object=Breadcrumbs::UnspecializedDummyObject.new
11
22
  @tracked_in = self.class.tracked_in_key.specialize(object).to_s
12
23
  @keys = self.class.keys.specialize object
13
24
  end
@@ -20,14 +31,12 @@ class Redis
20
31
  redis.sadd @tracked_in, jsons
21
32
  end
22
33
 
23
- def clean!
24
- cmds = Set.new tracked_keys.concat(@keys.clean_cmds)
34
+ def reset!
35
+ run_cmds @keys.reset_cmds
36
+ end
25
37
 
26
- cmds.each do |cmd_tuple|
27
- cmd = cmd_tuple[0]
28
- args = cmd_tuple[1..-1]
29
- redis.send cmd, *args
30
- end
38
+ def clean!
39
+ run_cmds Set.new(tracked_keys.concat(@keys.clean_cmds))
31
40
  end
32
41
 
33
42
  def tracked_keys
@@ -42,5 +51,13 @@ class Redis
42
51
  self.class.redis
43
52
  end
44
53
 
54
+ def run_cmds cmds
55
+ cmds.each do |cmd_tuple|
56
+ cmd = cmd_tuple[0]
57
+ args = cmd_tuple[1..-1]
58
+ redis.send cmd, *args
59
+ end
60
+ end
61
+
45
62
  end
46
63
  end
@@ -1,22 +1,8 @@
1
1
  require 'redis-breadcrumbs/keys'
2
2
 
3
- class BreadcrumbSpecializationError < Exception; end
4
-
5
3
  module Breadcrumbs
6
4
  module Dsl
7
5
 
8
- class UnspecializedDummyObject
9
- instance_methods.each do |m|
10
- undef_method m unless m =~ /^(__|object_id|instance_eval)/
11
- end
12
-
13
- def method_missing method, *args
14
- raise BreadcrumbSpecializationError, "#{method}"
15
- end
16
-
17
- def respond_to? *args; false; end
18
- end
19
-
20
6
  def self.included subclass
21
7
  subclass.extend ClassMethods
22
8
  end
@@ -42,27 +28,25 @@ module Breadcrumbs
42
28
  Key.new tracked_in
43
29
  end
44
30
 
45
- def owns key
46
- owned_keys << key
47
- keys << OwnedKey.new(key)
48
- end
49
-
50
- def member_of_set member_to_set
51
- member = member_to_set.keys[0]
52
- set = member_to_set[member]
31
+ def owns key_template, options={}
32
+ owned_keys << key_template
33
+ as = options.delete(:as)
34
+ key = OwnedKey.new key_template, options
35
+ keys[key_template] = OwnedKey.new(key_template, options)
53
36
 
54
- member_of_sets << [member, set]
55
- keys << MemberOfSetKey.new(member, set, :srem)
37
+ create_as_method key_template, as unless as.nil?
56
38
  end
57
39
 
58
- def track! object=UnspecializedDummyObject.new
59
- new(object).tap(&:track!)
40
+ def member_of_set options
41
+ add_member_of_set options, member_of_sets, :srem
60
42
  end
61
43
 
62
- def clean! object=UnspecializedDummyObject.new
63
- new(object).tap(&:clean!)
44
+ def member_of_sorted_set options
45
+ add_member_of_set options, member_of_sorted_sets, :zrem
64
46
  end
65
47
 
48
+ alias :member_of_zset :member_of_sorted_set
49
+
66
50
  def tracked_keys
67
51
  redis.smembers(@tracked_in).map do |json|
68
52
  JSON.parse(json)
@@ -80,6 +64,23 @@ module Breadcrumbs
80
64
  def member_of_sets
81
65
  @member_of_sets ||= []
82
66
  end
67
+
68
+ def member_of_sorted_sets
69
+ @member_of_sorted_sets ||= []
70
+ end
71
+
72
+ private
73
+
74
+ def add_member_of_set options, specific_keys, clean_cmd
75
+ member_to_set = Hash[[options.to_a.shift]]
76
+
77
+ member = member_to_set.keys[0]
78
+ set = member_to_set[member]
79
+
80
+ specific_keys << [member, set]
81
+ keys[set] = MemberOfSetKey.new(member, set, clean_cmd, options)
82
+ end
83
+
83
84
  end
84
85
 
85
86
  end
@@ -0,0 +1,29 @@
1
+ require 'redis-breadcrumbs/key_proxy'
2
+ require 'redis-breadcrumbs/unspecialized_dummy_object'
3
+
4
+ module Breadcrumbs
5
+ module Entrance
6
+
7
+ def self.included subclass
8
+ subclass.extend ClassMethods
9
+ end
10
+
11
+ def self.included subclass
12
+ subclass.extend ClassMethods
13
+ end
14
+
15
+ module ClassMethods
16
+ def track! object=UnspecializedDummyObject.new
17
+ new(object).tap(&:track!)
18
+ end
19
+
20
+ def reset! object=UnspecializedDummyObject.new
21
+ new(object).tap(&:reset!)
22
+ end
23
+
24
+ def clean! object=UnspecializedDummyObject.new
25
+ new(object).tap(&:clean!)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,7 +1,7 @@
1
1
  module Breadcrumbs
2
2
  class Key
3
3
  def initialize key_template
4
- @key_template = key_template.to_s
4
+ @key_template = key_template
5
5
  end
6
6
 
7
7
  def specialize object
@@ -21,7 +21,8 @@ module Breadcrumbs
21
21
  TEMPLATE_REGEX = /(<\w+>)/
22
22
 
23
23
  def specialize_from_template template, object
24
- matches = TEMPLATE_REGEX.match template.to_s
24
+ template = template.to_s
25
+ matches = TEMPLATE_REGEX.match template
25
26
 
26
27
  return template if matches.nil?
27
28
 
@@ -0,0 +1,12 @@
1
+ module Breadcrumbs
2
+ class KeyProxy
3
+ def initialize key, redis
4
+ @key = key
5
+ @redis = redis
6
+ end
7
+
8
+ def method_missing mthd, *args
9
+ @redis.send(mthd, *([@key.key_name] + args))
10
+ end
11
+ end
12
+ end
@@ -4,22 +4,30 @@ require 'redis-breadcrumbs/member_of_set_key'
4
4
 
5
5
  module Breadcrumbs
6
6
  class Keys
7
- def initialize keys=[]
7
+ def initialize keys={}
8
8
  @keys = keys
9
9
  end
10
10
 
11
- def << key
12
- @keys << key
11
+ def [] key_template
12
+ @keys[key_template]
13
+ end
14
+
15
+ def []= key_template, key
16
+ @keys[key_template] = key
13
17
  end
14
18
 
15
19
  def specialize object
16
- Keys.new(@keys.map do |key|
17
- key.specialize object
18
- end)
20
+ Keys.new(Hash[@keys.map do |(key_template, key)|
21
+ [key_template, key.specialize(object)]
22
+ end])
19
23
  end
20
24
 
21
25
  def clean_cmds
22
- @keys.map &:clean_cmd
26
+ @keys.values.map &:clean_cmd
27
+ end
28
+
29
+ def reset_cmds
30
+ @keys.values.map(&:reset_cmd).compact
23
31
  end
24
32
  end
25
33
 
@@ -1,22 +1,33 @@
1
1
  module Breadcrumbs
2
2
  class MemberOfSetKey < Key
3
- def initialize member_template, set_template, clean_method
4
- @member_template = member_template.to_s
5
- @set_template = set_template.to_s
3
+ def initialize member_template, set_template, clean_method, options
4
+ @options = options || {}
5
+ @member_template = member_template
6
+ @set_template = set_template
6
7
  @clean_method = clean_method
8
+ @resetable = options[:reset]
7
9
  end
8
10
 
9
11
  def specialize object
10
12
  MemberOfSetKey.new(
11
13
  specialize_from_template(@member_template, object),
12
14
  specialize_from_template(@set_template, object),
13
- @clean_method
15
+ @clean_method,
16
+ @options
14
17
  )
15
18
  end
16
19
 
17
20
  def clean_cmd
18
21
  [@clean_method, @set_template, @member_template]
19
22
  end
23
+
24
+ def reset_cmd
25
+ clean_cmd if @resetable
26
+ end
27
+
28
+ def key_name
29
+ @set_template
30
+ end
20
31
  end
21
32
 
22
33
  end
@@ -1,16 +1,26 @@
1
1
  module Breadcrumbs
2
2
  class OwnedKey < Key
3
- def initialize key_template
4
- @key_template = key_template.to_s
3
+ def initialize key_template, options
4
+ @options = options || {}
5
+ @key_template = key_template
6
+ @resetable = options[:reset]
5
7
  end
6
8
 
7
9
  def specialize object
8
- OwnedKey.new specialize_from_template(@key_template, object)
10
+ OwnedKey.new specialize_from_template(@key_template, object), @options
9
11
  end
10
12
 
11
13
  def clean_cmd
12
14
  [:del, @key_template]
13
15
  end
16
+
17
+ def reset_cmd
18
+ clean_cmd if @resetable
19
+ end
20
+
21
+ def key_name
22
+ @key_template
23
+ end
14
24
  end
15
25
 
16
26
  end
@@ -0,0 +1,15 @@
1
+ class BreadcrumbSpecializationError < Exception; end
2
+
3
+ module Breadcrumbs
4
+ class UnspecializedDummyObject
5
+ instance_methods.each do |m|
6
+ undef_method m unless m =~ /^(__|object_id|instance_eval)/
7
+ end
8
+
9
+ def method_missing method, *args
10
+ raise BreadcrumbSpecializationError, "#{method}"
11
+ end
12
+
13
+ def respond_to? *args; false; end
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module RedisBreadcrumbs
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/test/as_test.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ describe 'Redis::Breadcrumb' do
4
+ before do
5
+ Redis::Breadcrumb.redis = MockRedis.new
6
+ end
7
+
8
+ it 'can access as methods directly from the breadcrumb' do
9
+ class DirectAsMethod < Redis::Breadcrumb
10
+ owns :a_key, :as => :my_key
11
+ end
12
+
13
+ DirectAsMethod.my_key.set 'hello'
14
+
15
+ assert_equal 'hello', DirectAsMethod.redis.get('a_key')
16
+ end
17
+
18
+ it 'can create a method to access the key through' do
19
+ class OwnedAsMethod < Redis::Breadcrumb
20
+ owns :a_key, :as => :my_key
21
+ end
22
+
23
+ OwnedAsMethod.new.my_key.set 'hello'
24
+
25
+ assert_equal 'hello', OwnedAsMethod.redis.get('a_key')
26
+ end
27
+ end
data/test/dsl_test.rb CHANGED
@@ -7,6 +7,7 @@ describe 'Redis::Breadcrumb' do
7
7
  owns :a_owned_key
8
8
 
9
9
  member_of_set :id => :a_set_of_things
10
+ member_of_zset :id => :a_sorted_set_of_things
10
11
  end
11
12
 
12
13
  before do
@@ -41,6 +42,10 @@ describe 'Redis::Breadcrumb' do
41
42
  assert_equal [[:id, :a_set_of_things]], DslBreadcrumb.member_of_sets
42
43
  end
43
44
 
45
+ it 'can be a member of a sorted set' do
46
+ assert_equal [[:id, :a_sorted_set_of_things]], DslBreadcrumb.member_of_sorted_sets
47
+ end
48
+
44
49
  it 'tracks keys for each class' do
45
50
  class Test2Breadcrumb < Redis::Breadcrumb
46
51
  tracked_in 'different_tracking_key'
@@ -0,0 +1,52 @@
1
+ require 'test_helper'
2
+
3
+ describe 'Redis::Breadcrumb' do
4
+ before do
5
+ Redis::Breadcrumb.redis = MockRedis.new
6
+ end
7
+
8
+ it 'by default resets owned key with clean command' do
9
+ class OwnedResetWithClean < Redis::Breadcrumb
10
+ owns :a_key, :reset => true
11
+ end
12
+
13
+ OwnedResetWithClean.redis.set 'a_key', 'hello'
14
+
15
+ OwnedResetWithClean.reset!
16
+
17
+ assert_nil OwnedResetWithClean.redis.get('a_key')
18
+ end
19
+
20
+ it 'by default resets member of set keys with clean command' do
21
+ class MemberOfSetResetWithClean < Redis::Breadcrumb
22
+ member_of_set :blah => :a_set, :reset => true
23
+ end
24
+
25
+ MemberOfSetResetWithClean.redis.sadd 'a_set', 'blah'
26
+
27
+ assert_equal 1, MemberOfSetResetWithClean.redis.scard('a_set')
28
+ assert MemberOfSetResetWithClean.redis.sismember 'a_set', 'blah'
29
+
30
+ MemberOfSetResetWithClean.reset!
31
+
32
+ assert_equal 0, MemberOfSetResetWithClean.redis.scard('a_set')
33
+ refute MemberOfSetResetWithClean.redis.sismember 'a_set', 'blah'
34
+ end
35
+
36
+ it 'by default resets member of sorted set keys with clean command' do
37
+ class MemberOfZsetResetWithClean < Redis::Breadcrumb
38
+ member_of_zset :blah => :a_set, :reset => true
39
+ end
40
+
41
+ MemberOfZsetResetWithClean.redis.zadd 'a_set', 1, 'blah'
42
+
43
+ assert_equal 1, MemberOfZsetResetWithClean.redis.zcard('a_set')
44
+ assert MemberOfZsetResetWithClean.redis.zrank 'a_set', 'blah'
45
+
46
+ MemberOfZsetResetWithClean.reset!
47
+
48
+ assert_equal 0, MemberOfZsetResetWithClean.redis.zcard('a_set')
49
+ refute MemberOfZsetResetWithClean.redis.zrank 'a_set', 'blah'
50
+ end
51
+
52
+ end
data/test/test_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
3
  require 'mock_redis'
4
+ require 'mock_redis/version'
4
5
  require 'minitest/autorun'
5
6
 
6
7
  require 'redis-breadcrumbs'
@@ -12,13 +12,15 @@ describe 'Redis::Breadcrumb' do
12
12
  owns :a_owned_key
13
13
 
14
14
  member_of_set :id => :a_set_of_things
15
+ member_of_zset :id => :a_sorted_set_of_things
15
16
  end
16
17
 
17
18
  TrackedInBreadcrumb.track!
18
19
 
19
20
  assert_equal [
20
21
  ["srem", "a_set_of_things", "id"],
21
- ["del", "a_owned_key"]
22
+ ["del", "a_owned_key"],
23
+ ["zrem", "a_sorted_set_of_things", "id"]
22
24
  ].sort, TrackedInBreadcrumb.tracked_keys.sort
23
25
  end
24
26
 
@@ -77,4 +79,21 @@ describe 'Redis::Breadcrumb' do
77
79
 
78
80
  assert_equal [["srem", "a_set_of_things", "foo"]], breadcrumb.tracked_keys
79
81
  end
82
+
83
+ it 'can track member of sorted set keys for a specific object' do
84
+ class MemberOfZsetBreadcrumb < Redis::Breadcrumb
85
+ tracked_in 'widget:<id>:tracking'
86
+
87
+ member_of_zset "<id>" => :a_sorted_set_of_things
88
+ end
89
+
90
+ obj = Object.new
91
+ class << obj
92
+ def id; "foo"; end
93
+ end
94
+
95
+ breadcrumb = MemberOfZsetBreadcrumb.track!(obj)
96
+
97
+ assert_equal [["zrem", "a_sorted_set_of_things", "foo"]], breadcrumb.tracked_keys
98
+ end
80
99
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-breadcrumbs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-30 00:00:00.000000000 Z
12
+ date: 2013-02-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -116,21 +116,29 @@ extra_rdoc_files: []
116
116
  files:
117
117
  - .gitignore
118
118
  - .travis.yml
119
+ - CHANGELOG.md
119
120
  - Gemfile
120
121
  - LICENSE.txt
121
122
  - README.md
122
123
  - Rakefile
124
+ - TODO.txt
123
125
  - lib/redis-breadcrumbs.rb
126
+ - lib/redis-breadcrumbs/as_methods.rb
124
127
  - lib/redis-breadcrumbs/breadcrumb.rb
125
128
  - lib/redis-breadcrumbs/dsl.rb
129
+ - lib/redis-breadcrumbs/entrance.rb
126
130
  - lib/redis-breadcrumbs/key.rb
131
+ - lib/redis-breadcrumbs/key_proxy.rb
127
132
  - lib/redis-breadcrumbs/keys.rb
128
133
  - lib/redis-breadcrumbs/member_of_set_key.rb
129
134
  - lib/redis-breadcrumbs/owned_key.rb
135
+ - lib/redis-breadcrumbs/unspecialized_dummy_object.rb
130
136
  - lib/redis-breadcrumbs/version.rb
131
137
  - redis-breadcrumbs.gemspec
138
+ - test/as_test.rb
132
139
  - test/cleaning_test.rb
133
140
  - test/dsl_test.rb
141
+ - test/reseting_test.rb
134
142
  - test/test_helper.rb
135
143
  - test/tracking_test.rb
136
144
  homepage: https://github.com/ecoffey/redis-breadcrumbs
@@ -147,7 +155,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
155
  version: '0'
148
156
  segments:
149
157
  - 0
150
- hash: -4237510823449836628
158
+ hash: 2467543944267407332
151
159
  required_rubygems_version: !ruby/object:Gem::Requirement
152
160
  none: false
153
161
  requirements:
@@ -156,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
164
  version: '0'
157
165
  segments:
158
166
  - 0
159
- hash: -4237510823449836628
167
+ hash: 2467543944267407332
160
168
  requirements: []
161
169
  rubyforge_project:
162
170
  rubygems_version: 1.8.24
@@ -164,7 +172,9 @@ signing_key:
164
172
  specification_version: 3
165
173
  summary: A friendly DSL for tracking and cleaning up redis keys.
166
174
  test_files:
175
+ - test/as_test.rb
167
176
  - test/cleaning_test.rb
168
177
  - test/dsl_test.rb
178
+ - test/reseting_test.rb
169
179
  - test/test_helper.rb
170
180
  - test/tracking_test.rb