jashmenn-method_cache 0.8.1.1 → 0.8.2.0
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/VERSION.yml +2 -2
- data/lib/method_cache/proxy.rb +27 -12
- metadata +24 -44
- data/.gitignore +0 -3
data/VERSION.yml
CHANGED
data/lib/method_cache/proxy.rb
CHANGED
@@ -10,6 +10,12 @@ module MethodCache
|
|
10
10
|
attr_reader :method_name, :opts, :args, :target
|
11
11
|
NULL = 'NULL'
|
12
12
|
|
13
|
+
def self.asciify(s)
|
14
|
+
s.gsub(/([^\x20-\x7F]+)/) do
|
15
|
+
'%' + $1.unpack('H2' * $1.bytesize).join('%').upcase
|
16
|
+
end.tr(' ', '_')
|
17
|
+
end
|
18
|
+
|
13
19
|
def initialize(method_name, opts)
|
14
20
|
opts[:cache] ||= :counters if opts[:counter]
|
15
21
|
@method_name = method_name
|
@@ -128,7 +134,7 @@ module MethodCache
|
|
128
134
|
def key
|
129
135
|
if @key.nil?
|
130
136
|
arg_string = ([method_name, target] + args).collect do |arg|
|
131
|
-
object_key(arg)
|
137
|
+
self.class.asciify(object_key(arg))
|
132
138
|
end.join('|')
|
133
139
|
@key = ['m', version, arg_string].compact.join('|')
|
134
140
|
@key = "m|#{Digest::SHA1.hexdigest(@key)}" if @key.length > 250
|
@@ -171,17 +177,26 @@ module MethodCache
|
|
171
177
|
end
|
172
178
|
|
173
179
|
def write_to_cache(key, value)
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
180
|
+
begin
|
181
|
+
unless opts[:counter]
|
182
|
+
value = value.nil? ? NULL : value
|
183
|
+
end
|
184
|
+
if cache.kind_of?(Hash)
|
185
|
+
raise 'expiry not permitted when cache is a Hash' if opts[:expiry]
|
186
|
+
raise 'counter cache not permitted when cache is a Hash' if opts[:counter]
|
187
|
+
cache[key] = value
|
188
|
+
elsif opts[:counter]
|
189
|
+
cache.write(key, value.to_s, expiry(value))
|
190
|
+
else
|
191
|
+
cache.set(key, value, expiry(value))
|
192
|
+
end
|
193
|
+
rescue Dalli::DalliError => e
|
194
|
+
if e.message =~ /Value too large/
|
195
|
+
puts "WARNING #{self.class}: #{key} not written when trying to #write_to_cache. #{e.message}"
|
196
|
+
nil
|
197
|
+
else
|
198
|
+
raise e
|
199
|
+
end
|
185
200
|
end
|
186
201
|
end
|
187
202
|
|
metadata
CHANGED
@@ -1,35 +1,24 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: jashmenn-method_cache
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 8
|
8
|
-
- 1
|
9
|
-
- 1
|
10
|
-
version: 0.8.1.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.8.2.0
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Justin Balthrop
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2012-02-23 00:00:00 -08:00
|
19
|
-
default_executable:
|
12
|
+
date: 2012-02-24 00:00:00.000000000Z
|
20
13
|
dependencies: []
|
21
|
-
|
22
14
|
description: Simple memcache-based memoization library for Ruby
|
23
15
|
email: code@justinbalthrop.com
|
24
16
|
executables: []
|
25
|
-
|
26
17
|
extensions: []
|
27
|
-
|
28
|
-
extra_rdoc_files:
|
18
|
+
extra_rdoc_files:
|
29
19
|
- LICENSE
|
30
20
|
- README.rdoc
|
31
|
-
files:
|
32
|
-
- .gitignore
|
21
|
+
files:
|
33
22
|
- LICENSE
|
34
23
|
- README.rdoc
|
35
24
|
- Rakefile
|
@@ -39,37 +28,28 @@ files:
|
|
39
28
|
- test/method_cache_remote_test.rb
|
40
29
|
- test/method_cache_test.rb
|
41
30
|
- test/test_helper.rb
|
42
|
-
has_rdoc: true
|
43
31
|
homepage: http://github.com/ninjudd/method_cache
|
44
32
|
licenses: []
|
45
|
-
|
46
33
|
post_install_message:
|
47
|
-
rdoc_options:
|
48
|
-
|
49
|
-
require_paths:
|
34
|
+
rdoc_options: []
|
35
|
+
require_paths:
|
50
36
|
- lib
|
51
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
requirements:
|
60
|
-
- -
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
|
63
|
-
- 0
|
64
|
-
version: "0"
|
37
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ! '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
none: false
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
65
49
|
requirements: []
|
66
|
-
|
67
50
|
rubyforge_project:
|
68
|
-
rubygems_version: 1.
|
51
|
+
rubygems_version: 1.8.6
|
69
52
|
signing_key:
|
70
53
|
specification_version: 3
|
71
54
|
summary: Simple memcache-based memoization library for Ruby
|
72
|
-
test_files:
|
73
|
-
- test/method_cache_remote_test.rb
|
74
|
-
- test/method_cache_test.rb
|
75
|
-
- test/test_helper.rb
|
55
|
+
test_files: []
|
data/.gitignore
DELETED