tobias-cache_value 0.2.0 → 0.3.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 CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
data/cache_value.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{cache_value}
5
- s.version = "0.2.0"
5
+ s.version = "0.3.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Tobias Crawley"]
9
- s.date = %q{2009-07-13}
9
+ s.date = %q{2009-07-14}
10
10
  s.email = %q{tcrawley@gmail.com}
11
11
  s.extra_rdoc_files = [
12
12
  "LICENSE",
@@ -26,7 +26,8 @@ Gem::Specification.new do |s|
26
26
  "lib/cache_value/util.rb",
27
27
  "test/cache_machine_test.rb",
28
28
  "test/cache_value_test.rb",
29
- "test/test_helper.rb"
29
+ "test/test_helper.rb",
30
+ "test/util_test.rb"
30
31
  ]
31
32
  s.has_rdoc = true
32
33
  s.homepage = %q{http://github.com/tobias/cache_value}
@@ -37,7 +38,8 @@ Gem::Specification.new do |s|
37
38
  s.test_files = [
38
39
  "test/cache_machine_test.rb",
39
40
  "test/cache_value_test.rb",
40
- "test/test_helper.rb"
41
+ "test/test_helper.rb",
42
+ "test/util_test.rb"
41
43
  ]
42
44
 
43
45
  if s.respond_to? :specification_version then
@@ -3,7 +3,6 @@ require 'active_support/core_ext/class'
3
3
  require 'active_support/inflector'
4
4
  require 'active_support/cache'
5
5
  require 'cache_value/util'
6
- require 'sha1'
7
6
 
8
7
  module CacheValue
9
8
  class CacheMachine
@@ -36,7 +35,7 @@ module CacheValue
36
35
  def cache_key(object, method, arguments = nil)
37
36
  raise ConfigurationException.new("object of class #{object.class.name} does not respond to :cache_key") unless object.respond_to?(:cache_key)
38
37
  key = object.cache_key.gsub('/', '_') + "_#{method}"
39
- key << '_' + Digest::SHA1.hexdigest(arguments.to_yaml) if arguments
38
+ key << '_' + hex_digest(arguments) if arguments
40
39
  key
41
40
  end
42
41
 
@@ -51,7 +50,7 @@ module CacheValue
51
50
 
52
51
  def call_and_store_value(object, method, arguments = nil)
53
52
  without_method = caching_method_names(method).first
54
- value = arguments ? object.send(without_method, arguments) : object.send(without_method)
53
+ value = arguments ? object.send(without_method, *arguments) : object.send(without_method)
55
54
  cache_store.write(cache_key(object, method, arguments), [value, Time.now].to_yaml)
56
55
 
57
56
  value
@@ -65,6 +64,7 @@ module CacheValue
65
64
  cached_age > Time.now - options
66
65
  end
67
66
  end
67
+
68
68
  end
69
69
  end
70
70
 
@@ -8,8 +8,8 @@ module CacheValue
8
8
  def cache_value(method, option)
9
9
  without_method, with_method = caching_method_names(method)
10
10
  class_eval do
11
- define_method with_method do
12
- CacheValue::CacheMachine.lookup(self, method, option)
11
+ define_method with_method do |*args|
12
+ CacheValue::CacheMachine.lookup(self, method, option, args)
13
13
  end
14
14
 
15
15
  alias_method without_method, method
@@ -1,3 +1,5 @@
1
+ require 'sha1'
2
+
1
3
  module CacheValue
2
4
  module Util
3
5
  def caching_method_names(method)
@@ -6,5 +8,23 @@ module CacheValue
6
8
  ["#{washed_method}_without_value_caching#{punctuation}",
7
9
  "#{washed_method}_with_value_caching#{punctuation}"]
8
10
  end
11
+
12
+ def hex_digest(values)
13
+ Digest::SHA1.hexdigest(stringify_value(values))
14
+ end
15
+
16
+ protected
17
+ def stringify_value(value)
18
+ if value.respond_to?(:to_str)
19
+ value.to_str
20
+ elsif value.respond_to?(:cache_key)
21
+ value.cache_key.to_s
22
+ elsif value.respond_to?(:collect)
23
+ value.collect { |x| stringify_value(x) }.join
24
+ else
25
+ value.to_s
26
+ end
27
+ end
28
+
9
29
  end
10
30
  end
@@ -4,7 +4,7 @@ require 'cache_value/cache_machine'
4
4
 
5
5
 
6
6
  class CacheMachineTest < Test::Unit::TestCase
7
-
7
+
8
8
  def setup
9
9
  @cm = CacheValue::CacheMachine
10
10
  @obj = mock
@@ -68,7 +68,7 @@ class CacheMachineTest < Test::Unit::TestCase
68
68
 
69
69
  should 'should include the hash in the key' do
70
70
  now = Time.now
71
- assert_match /_method_#{Digest::SHA1.hexdigest([1, 2, now].to_yaml)}$/, @cm.cache_key(@obj, :method, [1, 2, now])
71
+ assert_match /_method_#{@cm.send(:hex_digest, [1, 2, now])}$/, @cm.cache_key(@obj, :method, [1, 2, now])
72
72
  end
73
73
 
74
74
  end
@@ -20,7 +20,7 @@ class CacheValueTest < Test::Unit::TestCase
20
20
  end
21
21
 
22
22
  should 'delegate the cache lookup to CacheMachine' do
23
- CacheValue::CacheMachine.expects(:lookup).with(@cacher, :do_something, 'yo')
23
+ CacheValue::CacheMachine.expects(:lookup).with(@cacher, :do_something, 'yo', [])
24
24
  @cacher.do_something
25
25
  end
26
26
 
data/test/util_test.rb ADDED
@@ -0,0 +1,15 @@
1
+ require 'test_helper'
2
+
3
+ require 'cache_value/util'
4
+
5
+
6
+ class UtilTest < Test::Unit::TestCase
7
+ include CacheValue::Util
8
+
9
+ should 'be true' do
10
+ assert true
11
+ end
12
+
13
+ should 'have some tests here'
14
+
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tobias-cache_value
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Crawley
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-13 00:00:00 -07:00
12
+ date: 2009-07-14 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -37,6 +37,7 @@ files:
37
37
  - test/cache_machine_test.rb
38
38
  - test/cache_value_test.rb
39
39
  - test/test_helper.rb
40
+ - test/util_test.rb
40
41
  has_rdoc: true
41
42
  homepage: http://github.com/tobias/cache_value
42
43
  post_install_message:
@@ -67,3 +68,4 @@ test_files:
67
68
  - test/cache_machine_test.rb
68
69
  - test/cache_value_test.rb
69
70
  - test/test_helper.rb
71
+ - test/util_test.rb