castache 0.0.1 → 0.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/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