redis-breadcrumbs 0.0.2 → 0.0.3

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/.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