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.
@@ -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