perma_cache 0.0.5 → 0.0.6
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.
- checksums.yaml +15 -0
- data/lib/perma_cache.rb +5 -11
- data/lib/perma_cache/version.rb +1 -1
- data/perma_cache.gemspec +1 -1
- data/test/perma_cache_test.rb +26 -6
- data/test/test_helper.rb +1 -1
- metadata +9 -23
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZmZmZTYxYWI3YWZjZDgzMjdmMDRhMGViMmM1MWJlYzQ1NTYzNTg0Nw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZWRiYTQzNTc3YjY1N2M3Y2YxMzA2YmMwZjMxZWFmMGQ4YmJkOTNlNA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YzJlMWQ1NWFjY2RlNjkyZTIyODBkNDFjYTBkYzAyNGMzMmYxMTE3YTM4Y2I2
|
10
|
+
NTkyMjBhYjRhODdhMTFmNDQ3MmNkZjExNGFjY2UxMjEwZGNhMmI5YzYzZDMw
|
11
|
+
N2RiZTM2ZTkxZmVhYTZhNWMyMjk4MTdhNzhhZTE3ZGY4ODRlMDQ=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YjA3ZGJkYzM5N2I2ZThiNDhjNDZkZjlmODY1OGViNzcyNDMyN2VmMjgzNjYx
|
14
|
+
OWEzZTVjM2NjMDhkNGI3MGVjMjEzMTE3MGQzMmNjOWMyZjUyM2FjZmIwOGMw
|
15
|
+
YmVkNWY0ZmIxNjhkZjYwNjUwOTg3NGEwNDU3OGUyMTA5ZDkxYmY=
|
data/lib/perma_cache.rb
CHANGED
@@ -24,11 +24,11 @@ module PermaCache
|
|
24
24
|
def self.build_key_from_object(obj)
|
25
25
|
# Don't want to add this to Object
|
26
26
|
Array.new.tap do |arr|
|
27
|
+
|
27
28
|
if obj.respond_to?(:cache_key)
|
28
29
|
arr << obj.cache_key
|
29
30
|
else
|
30
|
-
arr << obj.class.name
|
31
|
-
|
31
|
+
arr << (obj.is_a?(Module) ? obj.name : obj.class.name)
|
32
32
|
if obj.respond_to?(:id)
|
33
33
|
arr << obj.id
|
34
34
|
end
|
@@ -57,25 +57,19 @@ module PermaCache
|
|
57
57
|
key << PermaCache.build_key_from_object(send(options[:obj]))
|
58
58
|
end
|
59
59
|
|
60
|
-
key << method_name
|
61
|
-
|
62
60
|
if options[:version]
|
63
61
|
key << "v#{options[:version]}"
|
64
62
|
end
|
65
63
|
|
66
|
-
key = key.flatten.reject do |k|
|
67
|
-
(k.empty? rescue nil) ||
|
68
|
-
(k.nil? rescue nil)
|
69
|
-
end.join('/')
|
70
|
-
|
71
64
|
key
|
72
65
|
end
|
73
66
|
|
74
67
|
define_method "#{method_name}_perma_cache_key" do
|
75
68
|
[
|
76
69
|
send("#{method_name}_base_key"),
|
77
|
-
(send("#{method_name}_key") rescue nil)
|
78
|
-
|
70
|
+
(send("#{method_name}_key") rescue nil),
|
71
|
+
method_name
|
72
|
+
].flatten.compact.map(&:to_s).reject{|k| k.empty?}.join('/').gsub(' ','_')
|
79
73
|
end
|
80
74
|
|
81
75
|
define_method "#{method_name}!" do
|
data/lib/perma_cache/version.rb
CHANGED
data/perma_cache.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.3"
|
24
24
|
spec.add_development_dependency "rake"
|
25
25
|
spec.add_development_dependency "shoulda"
|
26
|
-
spec.add_development_dependency "mocha"
|
26
|
+
spec.add_development_dependency "mocha"
|
27
27
|
spec.add_development_dependency "debugger"
|
28
28
|
end
|
29
29
|
|
data/test/perma_cache_test.rb
CHANGED
@@ -30,17 +30,31 @@ class KlassOne
|
|
30
30
|
end
|
31
31
|
|
32
32
|
class KlassTwo
|
33
|
+
include PermaCache
|
34
|
+
|
33
35
|
def cache_key
|
34
36
|
"some_other_class/123"
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
38
40
|
class KlassThree
|
41
|
+
include PermaCache
|
42
|
+
|
39
43
|
def id
|
40
44
|
234
|
41
45
|
end
|
42
46
|
end
|
43
47
|
|
48
|
+
module ModuleOne
|
49
|
+
class << self
|
50
|
+
include PermaCache
|
51
|
+
def module_one_method
|
52
|
+
345
|
53
|
+
end
|
54
|
+
perma_cache :module_one_method
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
44
58
|
class PermaCacheTest < Test::Unit::TestCase
|
45
59
|
|
46
60
|
context "build_key_from_object" do
|
@@ -101,7 +115,7 @@ class PermaCacheTest < Test::Unit::TestCase
|
|
101
115
|
|
102
116
|
should "calling #method1 should write and return the result if the cache is empty" do
|
103
117
|
obj = KlassOne.new
|
104
|
-
cache_obj =
|
118
|
+
cache_obj = Object.new
|
105
119
|
cache_obj.expects(:read).with(obj.method1_perma_cache_key).once.returns(nil)
|
106
120
|
cache_obj.expects(:write).with(obj.method1_perma_cache_key, 1, :expires_in => nil).once
|
107
121
|
PermaCache.cache = cache_obj
|
@@ -112,7 +126,7 @@ class PermaCacheTest < Test::Unit::TestCase
|
|
112
126
|
|
113
127
|
should "calling #method1 should read the cache, but not write it, if the cache is present" do
|
114
128
|
obj = KlassOne.new
|
115
|
-
cache_obj =
|
129
|
+
cache_obj = Object.new
|
116
130
|
cache_obj.expects(:read).with(obj.method1_perma_cache_key).once.returns(123)
|
117
131
|
cache_obj.expects(:write).never
|
118
132
|
PermaCache.cache = cache_obj
|
@@ -123,7 +137,7 @@ class PermaCacheTest < Test::Unit::TestCase
|
|
123
137
|
|
124
138
|
should "calling #method1! should write the cache, but not read from it" do
|
125
139
|
obj = KlassOne.new
|
126
|
-
cache_obj =
|
140
|
+
cache_obj = Object.new
|
127
141
|
cache_obj.expects(:read).never
|
128
142
|
cache_obj.expects(:write).with(obj.method1_perma_cache_key, 1, :expires_in => nil).once
|
129
143
|
PermaCache.cache = cache_obj
|
@@ -134,18 +148,18 @@ class PermaCacheTest < Test::Unit::TestCase
|
|
134
148
|
end
|
135
149
|
context "version option" do
|
136
150
|
should "add that key/value to the cache key" do
|
137
|
-
assert_equal "perma_cache/v1/KlassOne/method3
|
151
|
+
assert_equal "perma_cache/v1/KlassOne/v2/method3", KlassOne.new.method3_perma_cache_key
|
138
152
|
end
|
139
153
|
end
|
140
154
|
context "user defined keys" do
|
141
155
|
should "should append themselves to the cache key" do
|
142
|
-
assert_equal "perma_cache/v1/KlassOne/some_other_class/123/method2
|
156
|
+
assert_equal "perma_cache/v1/KlassOne/some_other_class/123/more_things/method2", KlassOne.new.method2_perma_cache_key
|
143
157
|
end
|
144
158
|
end
|
145
159
|
context "setting expires_in" do
|
146
160
|
should "pass the value through to #write" do
|
147
161
|
obj = KlassOne.new
|
148
|
-
cache_obj =
|
162
|
+
cache_obj = Object.new
|
149
163
|
cache_obj.expects(:read).with(obj.method3_perma_cache_key).returns(nil).once
|
150
164
|
cache_obj.expects(:write).with(obj.method3_perma_cache_key, 3, :expires_in => 5).once
|
151
165
|
obj.expects(:sleep).with(1).once
|
@@ -153,5 +167,11 @@ class PermaCacheTest < Test::Unit::TestCase
|
|
153
167
|
obj.method3
|
154
168
|
end
|
155
169
|
end
|
170
|
+
|
171
|
+
context "a module" do
|
172
|
+
should "set the perma cache key" do
|
173
|
+
assert_equal "perma_cache/v1/ModuleOne/module_one_method", ModuleOne.module_one_method_perma_cache_key
|
174
|
+
end
|
175
|
+
end
|
156
176
|
end
|
157
177
|
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perma_cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Josh Sharpe
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-05-29 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rails
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ! '>='
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ! '>='
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: bundler
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ! '>='
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ! '>='
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,7 +55,6 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: shoulda
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ! '>='
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ! '>='
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,23 +69,20 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: mocha
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ! '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
75
|
+
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ! '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
|
-
version: '
|
82
|
+
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: debugger
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - ! '>='
|
100
88
|
- !ruby/object:Gem::Version
|
@@ -102,7 +90,6 @@ dependencies:
|
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - ! '>='
|
108
95
|
- !ruby/object:Gem::Version
|
@@ -129,27 +116,26 @@ files:
|
|
129
116
|
homepage: ''
|
130
117
|
licenses:
|
131
118
|
- MIT
|
119
|
+
metadata: {}
|
132
120
|
post_install_message:
|
133
121
|
rdoc_options: []
|
134
122
|
require_paths:
|
135
123
|
- lib
|
136
124
|
required_ruby_version: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
125
|
requirements:
|
139
126
|
- - ! '>='
|
140
127
|
- !ruby/object:Gem::Version
|
141
128
|
version: '0'
|
142
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
-
none: false
|
144
130
|
requirements:
|
145
131
|
- - ! '>='
|
146
132
|
- !ruby/object:Gem::Version
|
147
133
|
version: '0'
|
148
134
|
requirements: []
|
149
135
|
rubyforge_project:
|
150
|
-
rubygems_version:
|
136
|
+
rubygems_version: 2.2.2
|
151
137
|
signing_key:
|
152
|
-
specification_version:
|
138
|
+
specification_version: 4
|
153
139
|
summary: It's a perma cache, duh
|
154
140
|
test_files:
|
155
141
|
- test/perma_cache_test.rb
|