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