will_cache 0.0.4 → 0.0.5

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.
@@ -1,36 +1,38 @@
1
1
  module WillCache
2
2
  module Cacheable
3
3
 
4
- def cache
5
- Rails.cache
6
- end
7
-
8
4
  def expire_cache(method_name = nil, args = {})
9
5
  with = args[:with]
10
- cache.delete(method_cache_key(method_name, with))
6
+ Rails.cache.delete(method_cache_key(method_name, with))
11
7
  true
12
8
  end
13
9
  alias :clear_cache :expire_cache
14
10
 
15
11
  def cached(method_name, args = {})
16
12
  with = args[:with]
17
- Rails.cache.fetch(method_cache_key(method_name, with)) {
18
- do_send(method_name, with)
19
- }
13
+
14
+ # Rails.fetch is broken
15
+ # http://developingsimplicity.com/posts/rails-cache-fetch
16
+ key = method_cache_key(method_name, with)
17
+ if Rails.cache.exist?(key)
18
+ Rails.cache.read(key)
19
+ else
20
+ Rails.cache.write(key, do_send(method_name, with))
21
+ end
20
22
  end
21
23
  alias :caches :cached
22
24
 
23
25
  def fetch_cache(method_name, args = {})
24
26
  with = args[:with]
25
- cache.read(method_cache_key(method_name, with))
27
+ Rails.cache.read(method_cache_key(method_name, with))
26
28
  end
27
29
 
28
30
  def write_cache(key, value, ttl = nil)
29
- cache.write(key, value, :expires_in => ttl)
31
+ Rails.cache.write(key, value, :expires_in => ttl)
30
32
  end
31
33
 
32
34
  def read_cache(key)
33
- cache.read(key)
35
+ Rails.cache.read(key)
34
36
  end
35
37
 
36
38
  def do_send(method_name, with)
@@ -30,12 +30,23 @@ class WillCacheTest < Test::Unit::TestCase
30
30
  end
31
31
 
32
32
  def test_cached_on_class_method
33
- mock(Rails.cache).fetch("User:count") { 1 }
33
+ key = "User:count"
34
+ mock(Rails.cache).exist?(key) { false }
35
+ mock(Rails.cache).write(key, 1) { 1 }
34
36
  assert_equal 1, User.cached(:count)
35
37
  end
36
38
 
37
39
  def test_cached_on_instance_method
38
- mock(Rails.cache).fetch("User:1:articles") { @user.articles }
40
+ key = "User:1:articles"
41
+ mock(Rails.cache).exist?(key) { false }
42
+ mock(Rails.cache).write(key, @user.articles) { @user.articles }
43
+ assert_equal @user.articles, @user.cached(:articles)
44
+ end
45
+
46
+ def test_cached_on_instance_method_on_hit
47
+ key = "User:1:articles"
48
+ mock(Rails.cache).exist?(key) { true }
49
+ mock(Rails.cache).read(key) { @user.articles }
39
50
  assert_equal @user.articles, @user.cached(:articles)
40
51
  end
41
52
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: will_cache
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dejan Simic