perma_cache 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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=
@@ -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
- ].compact.join('/').gsub(' ','_')
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
@@ -1,3 +1,3 @@
1
1
  module PermaCache
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -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", "< 1.0"
26
+ spec.add_development_dependency "mocha"
27
27
  spec.add_development_dependency "debugger"
28
28
  end
29
29
 
@@ -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 = mock
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 = mock
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 = mock
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/v2", KlassOne.new.method3_perma_cache_key
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/more_things", KlassOne.new.method2_perma_cache_key
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 = mock
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
 
@@ -1,7 +1,7 @@
1
1
  require "rubygems"
2
2
  require 'test/unit'
3
3
  require 'shoulda'
4
- require 'mocha'
4
+ require 'mocha/test_unit'
5
5
  require 'debugger'
6
6
 
7
7
  require 'bundler/setup'
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
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-02-06 00:00:00.000000000 Z
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: '1.0'
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: '1.0'
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: 1.8.25
136
+ rubygems_version: 2.2.2
151
137
  signing_key:
152
- specification_version: 3
138
+ specification_version: 4
153
139
  summary: It's a perma cache, duh
154
140
  test_files:
155
141
  - test/perma_cache_test.rb