redis-classy 1.0.1 → 1.0.2

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/README.md CHANGED
@@ -10,16 +10,17 @@ class Something < Redis::Classy
10
10
  end
11
11
 
12
12
  Something.set 'foo', 'bar' # equivalent of => redis.set 'Something:foo', 'bar'
13
- Something.get 'foo' # => redis.get 'Something:foo'
13
+ Something.get 'foo' # equivalent of => redis.get 'Something:foo'
14
14
  => "bar"
15
15
  ```
16
16
 
17
- This library contains only 30+ lines of code, yet powerful when you need better abstraction on Redis objects to keep things organized.
17
+ All methods are delegated to the `redis-namespace` gems.
18
18
 
19
- Requies the `redis-namespace` gem.
19
+ This library contains only 30+ lines of code, yet powerful when you need better abstraction on Redis objects to keep things organized.
20
20
 
21
- What's new:
21
+ ### What's new:
22
22
 
23
+ * v1.0.1: Relaxed version dependency on redis-namespace
23
24
  * v1.0.0: Play nice with Mongoid
24
25
 
25
26
  Synopsis
@@ -30,23 +31,32 @@ With the vanilla `redis` gem, you've been doing this:
30
31
  ```ruby
31
32
  redis = Redis.new
32
33
  redis.set 'foo', 'bar'
34
+ redis.get 'foo'
35
+ => "bar"
33
36
  ```
34
37
 
35
38
  With the `redis-namespace` gem, you can add a prefix in the following manner:
36
39
 
37
40
  ```ruby
38
41
  redis_ns = Redis::Namespace.new('ns', :redis => redis)
39
- redis_ns['foo'] = 'bar' # equivalent of => redis.set 'ns:foo', 'bar'
42
+ redis_ns['foo'] = 'bar' # equivalent of => redis.set 'ns:foo', 'bar'
43
+ redis_ns['foo'] # equivalent of => redis.get 'ns:foo'
44
+ => "bar"
40
45
  ```
41
46
 
42
- Now, with the redis-classy gem, you could finally do:
47
+ Now, with the `redis-classy` gem, you finally achieve a class-based encapsulation:
43
48
 
44
49
  ```ruby
45
50
  class Something < Redis::Classy
46
51
  end
47
52
 
48
- Something.set 'foo', 'bar' # equivalent of => redis.set 'Prefix:foo', 'bar'
49
- Something.get 'foo'
53
+ Something.set 'foo', 'bar' # equivalent of => redis.set 'Something:foo', 'bar'
54
+ Something.get 'foo' # equivalent of => redis.get 'Something:foo'
55
+ => "bar"
56
+
57
+ something = Something.new('foo')
58
+ something.set 'bar'
59
+ something.get
50
60
  => "bar"
51
61
  ```
52
62
 
@@ -64,14 +74,14 @@ In Gemfile:
64
74
  gem 'redis-classy'
65
75
  ```
66
76
 
67
- In config/initializers/redis_classy.rb:
77
+ Register the Redis server: (e.g. in `config/initializers/redis_classy.rb` for Rails)
68
78
 
69
79
  ```ruby
70
- Redis::Classy.db = Redis.new
80
+ Redis::Classy.db = Redis.new(:host => 'localhost')
71
81
  ```
72
82
 
73
- Now you can write models that inherit the Redis::Classy class, automatically prefixing keys with its class name.
74
- You can use any Redis commands on the class, since they are simply passed to the Redis instance.
83
+ Now you can write models that inherit `Redis::Classy`, automatically prefixing keys with its class name.
84
+ You can use any Redis commands on the class, as they are eventually passed to the `redis` gem.
75
85
 
76
86
  ```ruby
77
87
  class UniqueUser < Redis::Classy
@@ -80,16 +90,17 @@ class UniqueUser < Redis::Classy
80
90
  end
81
91
  end
82
92
 
83
- UniqueUser.sadd '2011-02-28', @user_a.id
84
- UniqueUser.sadd '2011-02-28', @user_b.id
85
- UniqueUser.sadd '2011-03-01', @user_c.id
93
+ UniqueUser.sadd '2011-02-28', '123'
94
+ UniqueUser.sadd '2011-02-28', '456'
95
+ UniqueUser.sadd '2011-03-01', '789'
86
96
 
87
97
  UniqueUser.smembers '2011-02-28'
88
98
  => ["123", "456"]
89
99
 
90
- UniqueUser.nuke
100
+ UniqueUser.keys
91
101
  => ["2011-02-28", "2011-03-01"]
92
102
 
103
+ UniqueUser.nuke
93
104
  UniqueUser.keys
94
105
  => []
95
106
  ```
@@ -109,24 +120,27 @@ end
109
120
  @room = Room.create
110
121
 
111
122
  counter = Counter.new(@room)
123
+ counter.key
124
+ => "Room:123"
125
+
112
126
  counter.incr
113
127
  counter.incr
114
128
  counter.get
115
129
  => "2"
116
-
117
- counter.key
118
- => "Room:123"
119
130
  ```
120
131
 
121
- You also have access to the non-namespaced, raw Redis instance via Redis::Classy
132
+ You also have access to the non-namespaced, raw Redis instance via `Redis::Classy`.
122
133
 
123
134
  ```ruby
135
+ Redis::Classy.keys
136
+ => ["UniqueUser:2011-02-28", "UniqueUser:2011-03-01", "Counter:Room:123"]
137
+
124
138
  Redis::Classy.keys 'UniqueUser:*'
125
139
  => ["UniqueUser:2011-02-28", "UniqueUser:2011-03-01"]
126
140
 
127
141
  Redis::Classy.multi do
128
- UniqueUser.sadd '2011-02-28', @user_a.id
129
- UniqueUser.sadd '2011-02-28', @user_b.id
142
+ UniqueUser.sadd '2011-02-28', '123'
143
+ UniqueUser.sadd '2011-02-28', '456'
130
144
  end
131
145
  ```
132
146
 
data/Rakefile CHANGED
@@ -22,6 +22,12 @@ Jeweler::Tasks.new do |gem|
22
22
  end
23
23
  Jeweler::RubygemsDotOrgTasks.new
24
24
 
25
+ desc "Flush the test database"
26
+ task :flushdb do
27
+ require 'redis'
28
+ Redis.new(:db => 15).flushdb
29
+ end
30
+
25
31
  task :default => :spec
26
32
  task :spec do
27
33
  exec "rspec spec"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.1
1
+ 1.0.2
data/lib/redis/classy.rb CHANGED
@@ -4,7 +4,7 @@ class Redis
4
4
  attr_accessor :db
5
5
 
6
6
  def inherited(subclass)
7
- subclass.db = Redis::Namespace.new(subclass.name, :redis => self.db)
7
+ subclass.db = Redis::Namespace.new(subclass.name, :redis => Redis::Classy.db)
8
8
  end
9
9
 
10
10
  def method_missing(method_name, *args, &block)
data/redis-classy.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "redis-classy"
8
- s.version = "1.0.1"
8
+ s.version = "1.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kenn Ejima"]
12
- s.date = "2011-11-05"
12
+ s.date = "2011-12-13"
13
13
  s.description = "Class-style namespace prefixing for Redis"
14
14
  s.email = "kenn.ejima@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
34
34
  s.homepage = "http://github.com/kenn/redis-classy"
35
35
  s.licenses = ["MIT"]
36
36
  s.require_paths = ["lib"]
37
- s.rubygems_version = "1.8.11"
37
+ s.rubygems_version = "1.8.10"
38
38
  s.summary = "Class-style namespace prefixing for Redis"
39
39
 
40
40
  if s.respond_to? :specification_version then
@@ -1,14 +1,22 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
1
+ require 'spec_helper'
2
2
 
3
3
  class Something < Redis::Classy
4
4
  end
5
5
 
6
+ class Another < Something
7
+ end
8
+
9
+ module Deep
10
+ class Klass < Another
11
+ end
12
+ end
13
+
6
14
  describe "RedisClassy" do
7
- before(:each) do
15
+ before do
8
16
  Redis::Classy.flushdb
9
17
  end
10
18
 
11
- after(:each) do
19
+ after do
12
20
  Redis::Classy.flushdb
13
21
  end
14
22
 
@@ -18,9 +26,16 @@ describe "RedisClassy" do
18
26
 
19
27
  it "should prepend class name to the key" do
20
28
  Something.set("foo", "bar")
29
+ Something.keys.should == ["foo"]
30
+ Redis::Classy.keys.should include "Something:foo"
31
+
32
+ Another.set("foo", "bar")
33
+ Another.keys.should == ["foo"]
34
+ Redis::Classy.keys.should include "Another:foo"
21
35
 
22
- Something.keys.should == ["foo"]
23
- Redis::Classy.keys.should == ["Something:foo"]
36
+ Deep::Klass.set("foo", "bar")
37
+ Deep::Klass.keys.should == ["foo"]
38
+ Redis::Classy.keys.should include "Deep::Klass:foo"
24
39
  end
25
40
 
26
41
  it "should delegate class methods" do
data/spec/spec_helper.rb CHANGED
@@ -10,4 +10,8 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
10
10
  RSpec.configure do |config|
11
11
  # Use database 15 for testing so we don't accidentally step on you real data.
12
12
  Redis::Classy.db = Redis.new(:db => 15)
13
+ unless Redis::Classy.keys.empty?
14
+ puts '[ERROR]: Redis database 15 not empty! If you are sure, run "rake flushdb" beforehand.'
15
+ exit!
16
+ end
13
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-classy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-05 00:00:00.000000000 Z
12
+ date: 2011-12-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis-namespace
16
- requirement: &70246658294580 !ruby/object:Gem::Requirement
16
+ requirement: &2158303540 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70246658294580
24
+ version_requirements: *2158303540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70246658294100 !ruby/object:Gem::Requirement
27
+ requirement: &2158302700 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70246658294100
35
+ version_requirements: *2158302700
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &70246658293560 !ruby/object:Gem::Requirement
38
+ requirement: &2158301960 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70246658293560
46
+ version_requirements: *2158301960
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &70246658293060 !ruby/object:Gem::Requirement
49
+ requirement: &2158301360 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70246658293060
57
+ version_requirements: *2158301360
58
58
  description: Class-style namespace prefixing for Redis
59
59
  email: kenn.ejima@gmail.com
60
60
  executables: []
@@ -91,7 +91,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
91
  version: '0'
92
92
  segments:
93
93
  - 0
94
- hash: -3343369064691227206
94
+ hash: 2229584726006491915
95
95
  required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
100
  version: '0'
101
101
  requirements: []
102
102
  rubyforge_project:
103
- rubygems_version: 1.8.11
103
+ rubygems_version: 1.8.10
104
104
  signing_key:
105
105
  specification_version: 3
106
106
  summary: Class-style namespace prefixing for Redis