will_cache 0.0.8 → 0.0.9

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,5 +1,3 @@
1
- require File.expand_path("../simple_memoize", __FILE__)
2
-
3
1
  module WillCache
4
2
  module Cacheable
5
3
 
@@ -7,7 +5,6 @@ module WillCache
7
5
  with = args[:with]
8
6
  delete_cache(method_cache_key(method_name, with))
9
7
  end
10
- memoize :expire_cache
11
8
  alias :clear_cache :expire_cache
12
9
 
13
10
  def cached(method_name, args = {})
@@ -22,36 +19,35 @@ module WillCache
22
19
  write_cache(key, do_send(method_name, with))
23
20
  end
24
21
  end
25
- memoize :cached
26
22
  alias :caches :cached
27
23
 
24
+ def refresh_cache(method_name = nil, args = {})
25
+ expire_cache(method_name, args)
26
+ cached(method_name, args)
27
+ end
28
+
28
29
  def fetch_cache(method_name, args = {})
29
30
  with = args[:with]
30
31
  read_cache(method_cache_key(method_name, with))
31
32
  end
32
- memoize :fetch_cache
33
33
 
34
34
  def write_cache(key, value)
35
35
  Rails.cache.write(key, value)
36
36
  value
37
37
  end
38
- memoize :write_cache
39
38
 
40
39
  def read_cache(key)
41
40
  Rails.cache.read(key)
42
41
  end
43
- memoize :read_cache
44
42
 
45
43
  def delete_cache(key)
46
44
  Rails.cache.delete(key)
47
45
  true
48
46
  end
49
- memoize :delete_cache
50
47
 
51
48
  def cache_exist?(key)
52
49
  Rails.cache.exist?(key)
53
50
  end
54
- memoize :cache_exist?
55
51
 
56
52
  def method_cache_key(method_name, with)
57
53
  if self.is_a?(ActiveRecord::Base)
@@ -65,7 +61,6 @@ module WillCache
65
61
  "#{base}:#{with.inspect}"
66
62
  end
67
63
  end
68
- memoize :method_cache_key
69
64
 
70
65
  def do_send(method_name, with)
71
66
  if with.blank?
@@ -1,6 +1,6 @@
1
1
  require File.expand_path('../../test_helper', __FILE__)
2
2
  require 'active_support/cache'
3
-
3
+ require 'FileUtils'
4
4
  class Rails
5
5
  def self.cache
6
6
  @@cache
@@ -37,7 +37,8 @@ class WillCacheTest < Test::Unit::TestCase
37
37
 
38
38
  @user = User.create!
39
39
  @user.articles << Article.new(:body => 'hey')
40
- Rails.cache = ActiveSupport::Cache::FileStore.new('tmp')
40
+ FileUtils.rm_rf('tmp/cache')
41
+ Rails.cache = ActiveSupport::Cache::FileStore.new('tmp/cache')
41
42
  end
42
43
 
43
44
  def test_cached_on_class_method
@@ -80,6 +81,15 @@ class WillCacheTest < Test::Unit::TestCase
80
81
  @user.fetch_cache(:articles)
81
82
  end
82
83
 
84
+ def test_refresh_cache
85
+ assert_equal 1, User.cached(:count)
86
+ assert_equal 1, User.fetch_cache(:count)
87
+ User.create!
88
+ assert_equal 1, User.fetch_cache(:count)
89
+ assert_equal 2, User.refresh_cache(:count)
90
+ assert_equal 2, User.fetch_cache(:count)
91
+ end
92
+
83
93
  def test_expire_cache_after_update
84
94
  mock(Rails.cache).delete("User:#{@user.id}")
85
95
  @user.name = 'dejan'
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: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 8
10
- version: 0.0.8
9
+ - 9
10
+ version: 0.0.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dejan Simic
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-28 00:00:00 +01:00
18
+ date: 2011-12-06 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -30,11 +30,9 @@ extra_rdoc_files: []
30
30
  files:
31
31
  - Rakefile
32
32
  - lib/will_cache/cacheable.rb
33
- - lib/will_cache/simple_memoize.rb
34
33
  - lib/will_cache.rb
35
34
  - test/fixtures/database.yml
36
35
  - test/fixtures/schema.rb
37
- - test/functional/tmp/68B/030/User%3Asum%3A%5B2%2C+3%5D
38
36
  - test/functional/will_cache_test.rb
39
37
  - test/test_helper.rb
40
38
  - README.md
@@ -1,44 +0,0 @@
1
- # https://github.com/bradediger/simple_memoize/blob/6cca4b99579566957ef5c045a3b0c21b6455cf59/lib/simple_memoize.rb
2
- module SimpleMemoize
3
- VERSION = '1.1.0'
4
-
5
- module Module
6
- def memoize(*method_names)
7
- method_names.each do |method_name|
8
- method_name = method_name.to_s
9
- stripped_method_name = method_name.sub(/([!?])$/, '')
10
-
11
- punctuation = $1
12
- wordy_punctuation = (punctuation == '!' ? '_bang' : '_huh') if punctuation
13
- ivar_name = "@#{stripped_method_name}#{wordy_punctuation}"
14
-
15
- memoized_method_name = "#{stripped_method_name}_with_memo#{punctuation}"
16
- regular_method_name = "#{stripped_method_name}_without_memo#{punctuation}"
17
-
18
- unless (instance_methods + private_instance_methods).include?(method_name)
19
- raise NoMethodError, "The Method '#{method_name}' cannot be memoized because it doesn't exist in #{self}"
20
- end
21
- return if self.method_defined?(memoized_method_name)
22
-
23
- self.class_eval "
24
- def #{memoized_method_name}(*args)
25
- if defined?(#{ivar_name}) && #{ivar_name}.include?(args)
26
- #{ivar_name}[args]
27
- else
28
- #{ivar_name} ||= Hash.new
29
- #{ivar_name}[args] = #{regular_method_name}(*args)
30
- end
31
- end
32
-
33
- alias_method :#{regular_method_name}, :#{method_name}
34
- alias_method :#{method_name}, :#{memoized_method_name}
35
-
36
- protected :#{method_name} if protected_instance_methods.include?('#{regular_method_name}')
37
- private :#{method_name} if private_instance_methods.include?('#{regular_method_name}')
38
- "
39
- end
40
- end
41
- end
42
- end
43
-
44
- Module.send :include, SimpleMemoize::Module