jashmenn-method_cache 0.8.1.1 → 0.8.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/VERSION.yml +2 -2
  2. data/lib/method_cache/proxy.rb +27 -12
  3. metadata +24 -44
  4. data/.gitignore +0 -3
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 8
4
- :patch: 1
5
- :build: 1
4
+ :patch: 2
5
+ :build: 0
@@ -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
- unless opts[:counter]
175
- value = value.nil? ? NULL : value
176
- end
177
- if cache.kind_of?(Hash)
178
- raise 'expiry not permitted when cache is a Hash' if opts[:expiry]
179
- raise 'counter cache not permitted when cache is a Hash' if opts[:counter]
180
- cache[key] = value
181
- elsif opts[:counter]
182
- cache.write(key, value.to_s, expiry(value))
183
- else
184
- cache.set(key, value, expiry(value))
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
- prerelease: false
5
- segments:
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
- - --charset=UTF-8
49
- require_paths:
34
+ rdoc_options: []
35
+ require_paths:
50
36
  - lib
51
- required_ruby_version: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- segments:
56
- - 0
57
- version: "0"
58
- required_rubygems_version: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- segments:
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.3.6
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
@@ -1,3 +0,0 @@
1
- pkg
2
- *~
3
- *.swp