castache 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 0.0.2 (Dec 1, 2012)
2
+
3
+ Features:
4
+ - returns an array of re-hydrated ruby objects from redis with `Castache.mget`
5
+ when given an array of cache keys
6
+
1
7
  ## 0.0.1 (Nov 30, 2012)
2
8
 
3
9
  _initial release!_
data/README.md CHANGED
@@ -23,10 +23,17 @@ Or install it yourself as:
23
23
  require 'castache'
24
24
  Castache.redis = Redis.new # you can also pass it a redis:// URI string
25
25
  # or hash of options to pass to Redis.new
26
- @object = Castache.fetch 'cache:key' do
27
- {hello: 'world'} # some expensive operation goes here...
26
+ object = Castache.fetch 'cache:key:1' do
27
+ {greeting: 'hello'} # some expensive operation goes here...
28
28
  end
29
- p @object
29
+ p object
30
+
31
+ Castache.set 'cache:key:2', {greeting: 'goodbye'}
32
+ object2 = Castache.get 'cache:key:2'
33
+ p object2
34
+
35
+ objects = Castache.mget ['cache:key:1','cache:key:2']
36
+ objects.each {|o| puts o[:greeting] }
30
37
  ````
31
38
 
32
39
  ## Project Status
@@ -1,3 +1,3 @@
1
1
  class Castache
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/castache.rb CHANGED
@@ -13,14 +13,19 @@ class Castache
13
13
  end
14
14
 
15
15
  def set(key, object)
16
- object if @redis.set(key, Marshal.dump(object))
16
+ object if redis.set(key, Marshal.dump(object))
17
17
  end
18
18
 
19
19
  def get(key)
20
- if value = @redis.get(key)
20
+ if value = redis.get(key)
21
21
  Marshal.load(value)
22
22
  end
23
23
  end
24
+
25
+ def mget(keys)
26
+ raise TypeError, "keys should be an array" unless keys.is_a? Array
27
+ redis.mget(keys).map {|item| Marshal.load(item) unless item.nil? }
28
+ end
24
29
 
25
30
  # Pass it a connected Redis object, a redis:// uri string, or a hash of
26
31
  # options for Redis.new
@@ -43,13 +43,13 @@ describe Castache do
43
43
  end
44
44
  end
45
45
 
46
- describe "#write" do
46
+ describe "#set" do
47
47
  it "can write an object to the cache" do
48
48
  Castache.set('write-test',obj).must_equal obj
49
49
  end
50
50
  end
51
51
 
52
- describe "#read" do
52
+ describe "#get" do
53
53
  it "can read an object from the cache" do
54
54
  Castache.set('read-test',obj)
55
55
  Castache.get('read-test').must_equal obj
@@ -60,6 +60,20 @@ describe Castache do
60
60
  end
61
61
  end
62
62
 
63
+ describe "#mget" do
64
+ before do
65
+ Castache.set('get_all-test0', obj)
66
+ Castache.set('get_all-test1', [:a])
67
+ Castache.set('get_all-test2', [:b])
68
+ Castache.set('get_all-test3', [:c])
69
+ end
70
+
71
+ it "can get multiple objects from the cache" do
72
+ keys = ['get_all-test0','get_all-test1','get_all-test2','get_all-test3']
73
+ Castache.mget(keys).must_equal [obj, [:a], [:b], [:c]]
74
+ end
75
+ end
76
+
63
77
  describe "#fetch" do
64
78
  before do
65
79
  @hash = {:test => 'data'}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: castache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-30 00:00:00.000000000 -06:00
12
+ date: 2012-12-01 00:00:00.000000000 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: redis
17
- requirement: &70340648244680 !ruby/object:Gem::Requirement
17
+ requirement: &70100796883360 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '3.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70340648244680
25
+ version_requirements: *70100796883360
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rake
28
- requirement: &70340652778580 !ruby/object:Gem::Requirement
28
+ requirement: &70100796882020 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '10'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *70340652778580
36
+ version_requirements: *70100796882020
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: minitest
39
- requirement: &70340651333460 !ruby/object:Gem::Requirement
39
+ requirement: &70100796881500 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '4.2'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70340651333460
47
+ version_requirements: *70100796881500
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: ansi
50
- requirement: &70340651316260 !ruby/object:Gem::Requirement
50
+ requirement: &70100796880880 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '1.4'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70340651316260
58
+ version_requirements: *70100796880880
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: turn
61
- requirement: &70340651552720 !ruby/object:Gem::Requirement
61
+ requirement: &70100796878820 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0.9'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70340651552720
69
+ version_requirements: *70100796878820
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: pry
72
- requirement: &70340646922760 !ruby/object:Gem::Requirement
72
+ requirement: &70100796887500 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '0.9'
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *70340646922760
80
+ version_requirements: *70100796887500
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: mocha
83
- requirement: &70340635446320 !ruby/object:Gem::Requirement
83
+ requirement: &70100796885120 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ~>
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0.13'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *70340635446320
91
+ version_requirements: *70100796885120
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: gem-release
94
- requirement: &70340640688120 !ruby/object:Gem::Requirement
94
+ requirement: &70100796900340 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ~>
@@ -99,7 +99,7 @@ dependencies:
99
99
  version: '0.4'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *70340640688120
102
+ version_requirements: *70100796900340
103
103
  description: ! 'Simple structured object cache for ruby apps. '
104
104
  email:
105
105
  - engineering@styleseek.com
@@ -134,7 +134,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
134
134
  version: '0'
135
135
  segments:
136
136
  - 0
137
- hash: -3694376980599044599
137
+ hash: 3982555062178898854
138
138
  required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
@@ -143,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
143
  version: '0'
144
144
  segments:
145
145
  - 0
146
- hash: -3694376980599044599
146
+ hash: 3982555062178898854
147
147
  requirements: []
148
148
  rubyforge_project:
149
149
  rubygems_version: 1.3.9.5