multi_fetch_fragments 0.0.13 → 0.0.14

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 (2) hide show
  1. data/lib/multi_fetch_fragments.rb +12 -13
  2. metadata +2 -2
@@ -16,17 +16,14 @@ module MultiFetchFragments
16
16
 
17
17
  results = []
18
18
 
19
- if ActionController::Base.perform_caching && @options[:cache].present?
19
+ if cache_collection?
20
20
 
21
21
  additional_cache_options = @options.fetch(:cache_options, {})
22
22
  keys_to_collection_map = {}
23
23
 
24
- # clone the original collection so we can manipulate it without affecting the original
25
- @collection = @collection.clone
26
-
27
24
  @collection.each do |item|
28
- key = @options[:cache].is_a?(Proc) ? @options[:cache].call(item) : item
29
-
25
+ key = @options[:cache].respond_to?(:call) ? @options[:cache].call(item) : item
26
+
30
27
  key_with_optional_digest = nil
31
28
  if defined?(@view.fragment_name_with_digest)
32
29
  key_with_optional_digest = @view.fragment_name_with_digest(key)
@@ -34,7 +31,7 @@ module MultiFetchFragments
34
31
  key_with_optional_digest = key
35
32
  end
36
33
 
37
- expanded_key = @view.controller.fragment_cache_key(key_with_optional_digest)
34
+ expanded_key = @view.controller.fragment_cache_key(key_with_optional_digest)
38
35
 
39
36
  keys_to_collection_map[expanded_key] = item
40
37
  end
@@ -44,13 +41,10 @@ module MultiFetchFragments
44
41
 
45
42
  result_hash = Rails.cache.read_multi(mutable_keys)
46
43
 
47
- # if we had a cached value, we don't need to render that object from the collection.
44
+ # if we had a cached value, we don't need to render that object from the collection.
48
45
  # if it wasn't cached, we need to render those objects as before
49
- result_hash.each do |key, value|
50
- if value
51
- collection_item = keys_to_collection_map[key]
52
- @collection.delete(collection_item)
53
- end
46
+ @collection = (keys_to_collection_map.keys - result_hash.keys).map do |key|
47
+ keys_to_collection_map[key]
54
48
  end
55
49
 
56
50
  non_cached_results = []
@@ -81,6 +75,11 @@ module MultiFetchFragments
81
75
  results.join(spacer).html_safe
82
76
  end
83
77
 
78
+ def cache_collection?
79
+ cache_option = @options[:cache].presence || @locals[:cache].presence
80
+ ActionController::Base.perform_caching && cache_option
81
+ end
82
+
84
83
  class Railtie < Rails::Railtie
85
84
  initializer "multi_fetch_fragments.initialize" do |app|
86
85
  ActionView::PartialRenderer.class_eval do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi_fetch_fragments
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-29 00:00:00.000000000 Z
12
+ date: 2013-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec-rails