will_cache 0.0.1 → 0.0.2

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,6 +1,6 @@
1
1
  module WillCache
2
2
  module Cacheable
3
- def expire_cache(method_name, args = {})
3
+ def expire_cache(method_name = nil, args = {})
4
4
  with = args[:with]
5
5
  Rails.cache.delete(method_cache_key(method_name, with))
6
6
  end
@@ -12,6 +12,11 @@ module WillCache
12
12
  }
13
13
  end
14
14
 
15
+ def fetch_cache(method_name, args = {})
16
+ with = args[:with]
17
+ Rails.cache.read(method_cache_key(method_name, with))
18
+ end
19
+
15
20
  def do_send(method_name, with)
16
21
  if with.blank?
17
22
  send(method_name)
@@ -22,7 +27,7 @@ module WillCache
22
27
 
23
28
  def method_cache_key(method_name, with)
24
29
  if self.is_a?(ActiveRecord::Base)
25
- base = "#{self.class}:#{id}:#{method_name}"
30
+ base = [self.class, id, method_name].compact.join(':').gsub(' ', '_')
26
31
  else
27
32
  base = "#{self}:#{method_name}"
28
33
  end
@@ -8,6 +8,8 @@ end
8
8
  class User < ActiveRecord::Base
9
9
  has_many :articles
10
10
  acts_as_cached
11
+
12
+ after_update :expire_cache
11
13
  end
12
14
 
13
15
  class Article < ActiveRecord::Base
@@ -41,4 +43,21 @@ class WillCacheTest < Test::Unit::TestCase
41
43
  mock(Rails.cache).delete("User:1:articles")
42
44
  @user.expire_cache(:articles)
43
45
  end
46
+
47
+ def test_expire_cache2
48
+ mock(Rails.cache).delete("User:1:random:2")
49
+ @user.expire_cache('random:2')
50
+ end
51
+
52
+ def test_fetch_cache
53
+ mock(Rails.cache).read("User:1:articles")
54
+ @user.fetch_cache(:articles)
55
+ end
56
+
57
+ def test_expire_cache_after_update
58
+ mock(Rails.cache).delete("User:#{@user.id}")
59
+ @user.name = 'dejan'
60
+ @user.save!
61
+ end
62
+
44
63
  end
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: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dejan Simic