cache_rocket 0.2.0 → 0.2.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 864c56c4f67471c61a8bb9dbea603410616d3fb6
4
- data.tar.gz: f39b92cc8432727cf11e305e87c9820885472491
3
+ metadata.gz: 02591106ca977ec2f38b633c6003fbbe730d7714
4
+ data.tar.gz: 61d116127812127f1eceb606b2af0fca5f83acfb
5
5
  SHA512:
6
- metadata.gz: 8ef3d5ebf32c1010b0c928c7b1daf55ded395ca1c6a0bd6a378bc790c4760ac7380ec6d52baf07348f251ee380420e91a028fb4e70071f1fb1996d1a77081065
7
- data.tar.gz: 105657511b52018069395a9fe968e1f7202280b6fbe95301350ebebe03e297f29a3bb270d7565dbc6a89f881c7b5e09ffd599c94be8624d24ea544d17a45ee99
6
+ metadata.gz: fd1fca1866a158eae06686d10f73ab57de4eee8fb5d2ca593c215ef80b37258cfdb608998bd1476164a12bf433d634313015fb5486e329409b56f494c51be7dc
7
+ data.tar.gz: 1a227ce2c6238563950171be071e3d1027e4dc148ad2e4c50b806c8c2a781a3ab8d23e2ab06b6ee0bc971a8c134757a9913d2c0e6d295b6b088e9a1411a541fe
data/README.md CHANGED
@@ -1,11 +1,9 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/cache_rocket.png)][gem]
2
2
  [![Build Status](https://api.travis-ci.org/teeparham/cache_rocket.png)][build]
3
- [![Coverage Status](https://coveralls.io/repos/teeparham/cache_rocket.badge.png)][coverage]
4
3
  [![Code Climate](https://codeclimate.com/github/teeparham/cache_rocket.png)][climate]
5
4
 
6
5
  [gem]: http://badge.fury.io/rb/cache_rocket
7
6
  [build]: https://travis-ci.org/teeparham/cache_rocket
8
- [coverage]: https://coveralls.io/r/teeparham/cache_rocket
9
7
  [climate]: https://codeclimate.com/github/teeparham/cache_rocket
10
8
 
11
9
  # Rails rendering extension for server-side html caching
@@ -31,10 +29,10 @@ include CacheRocket
31
29
 
32
30
  ## Use
33
31
 
34
- This gem allows you to easily cache a partial of static html and replace inner dynamic html. Here is an example
32
+ This gem allows you to cache a partial of static html and replace inner dynamic html. Here is an example
35
33
  scenario:
36
34
 
37
- You have some html that would be cached, except for some uncacheable code nested in the DOM. For example:
35
+ You have some html that you would like to cache, but cannot because of some uncacheable code nested in the DOM. For example:
38
36
 
39
37
  ##### file.html.haml:
40
38
  ```haml
@@ -79,12 +77,12 @@ In the above example, you could also remove the `_dynamic.html.haml` file like s
79
77
 
80
78
  ##### file.html.haml:
81
79
  ```haml
82
- = render_cached 'container', replace: {dynamic: complicated_uncacheable_stuff}
80
+ = render_cached 'container', replace: { dynamic: complicated_uncacheable_stuff }
83
81
  ```
84
82
 
85
83
  ## Options
86
84
 
87
- `render_cached` provides 4 calling styles:
85
+ `render_cached` provides several calling styles:
88
86
 
89
87
  #### Single partial to replace
90
88
 
@@ -94,18 +92,31 @@ render_cached "container", replace: "inner"
94
92
 
95
93
  #### Array of partials to replace
96
94
  ```ruby
97
- render_cached "container", replace: ["inner"]
95
+ render_cached "container", replace: ["inner", "footer"]
98
96
  ```
99
97
 
100
- #### Map of keys to replace with values
98
+ #### Hash of keys to replace with values
101
99
  ```ruby
102
- render_cached "container", replace: {key_name: a_helper_method(object)}
100
+ render_cached "container", replace: { key_name: a_helper_method(object) }
103
101
  ```
104
102
 
105
- #### Yield to a hash of keys to replace with values
103
+ #### Block containing a hash of keys to replace with values
106
104
  ```ruby
107
105
  render_cached "container" do
108
- {key_name: a_helper_method(object)}
106
+ { key_name: a_helper_method(object) }
107
+ end
108
+ ```
109
+
110
+ #### Render a collection with hash of keys, using a Proc for each collection item
111
+ ```ruby
112
+ render_cached "container", collection: objects,
113
+ replace: { key_name: ->(object){ a_helper_method(object) } }
114
+ ```
115
+
116
+ #### Render a collection with block syntax
117
+ ```ruby
118
+ render_cached "container", collection: objects do
119
+ { key_name: ->(object){ a_helper_method(object) } }
109
120
  end
110
121
  ```
111
122
 
@@ -34,24 +34,20 @@ module CacheRocket
34
34
  # render_cached "partial", collection: objects, replace: { key_name: ->(object){a_method(object)} }
35
35
  #
36
36
  def render_cached(partial, options={})
37
- replace = options.delete(:replace)
37
+ replace_hash = options.delete(:replace)
38
38
  collection = options.delete(:collection)
39
39
 
40
40
  fragment = Fragment.new(render(partial, options))
41
41
 
42
- case replace
42
+ case replace_hash
43
43
  when Hash
44
- if collection
45
- fragment.replace_collection collection, replace
46
- else
47
- fragment.replace_from_hash replace
48
- end
44
+ fragment.replace replace_hash, collection
49
45
  when NilClass
50
46
  raise ArgumentError.new(ERROR_MISSING_KEY_OR_BLOCK) unless block_given?
51
- fragment.replace_from_hash yield
47
+ fragment.replace yield, collection
52
48
  else
53
- replace = *replace
54
- replace.each do |key|
49
+ key_array = *replace_hash
50
+ key_array.each do |key|
55
51
  fragment.gsub! cache_replace_key(key), render(key, options)
56
52
  end
57
53
  end
@@ -16,6 +16,16 @@ module CacheRocket
16
16
  self.value.gsub! key, value
17
17
  end
18
18
 
19
+ def replace(hash, collection)
20
+ if collection
21
+ replace_collection collection, hash
22
+ else
23
+ replace_from_hash hash
24
+ end
25
+ end
26
+
27
+ private
28
+
19
29
  def replace_from_hash(hash)
20
30
  hash.each do |key, value|
21
31
  gsub! cache_replace_key(key), value.to_s
@@ -32,8 +42,6 @@ module CacheRocket
32
42
  self.value = html
33
43
  end
34
44
 
35
- private
36
-
37
45
  def replace_item_hash(item, hash)
38
46
  item_fragment = self.value.dup
39
47
 
@@ -1,3 +1,3 @@
1
1
  module CacheRocket
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -79,7 +79,19 @@ class CacheRocketTest < Test::Unit::TestCase
79
79
  assert_equal "Hi Snoop.Hi Boo.",
80
80
  @renderer.render_cached("partial", collection: dogs, replace: {dog: ->(dog){dog_name(dog)} })
81
81
  end
82
-
82
+
83
+ should "replace collection using hash block with Proc" do
84
+ def dog_name(dog) dog end
85
+ @renderer.stubs(:render).with("partial", {}).returns "Hi #{@renderer.cache_replace_key(:dog)}."
86
+ dogs = %w[Snoop Boo]
87
+
88
+ rendered = @renderer.render_cached("partial", collection: dogs) do
89
+ { dog: ->(dog){dog_name(dog)} }
90
+ end
91
+
92
+ assert_equal "Hi Snoop.Hi Boo.", rendered
93
+ end
94
+
83
95
  should "raise ArgumentError with invalid syntax" do
84
96
  @renderer.stubs(:render).with("container").returns("")
85
97
  assert_raise(ArgumentError) do
@@ -9,32 +9,30 @@ module CacheRocket
9
9
  end
10
10
 
11
11
  context "#gsub!" do
12
- should "gsub value" do
12
+ should "substitute value" do
13
13
  fragment = Fragment.new("hello there, hello.")
14
14
  assert_equal "yo there, yo.", fragment.gsub!("hello", "yo")
15
15
  end
16
16
  end
17
17
 
18
- context "#replace_from_hash" do
19
- should "replace cache keys" do
18
+ context "#replace" do
19
+ should "replace cache keys from hash" do
20
20
  cr_key = Fragment.new(nil).cache_replace_key(:xx)
21
21
  fragment = Fragment.new("hey #{cr_key} hey.")
22
- fragment.replace_from_hash(xx: "yo")
22
+ fragment.replace({xx: "yo"}, nil)
23
23
  assert_equal "hey yo hey.", fragment.value
24
24
  end
25
- end
26
25
 
27
- context "#replace_collection" do
28
- should "replace with Proc" do
26
+ should "replace collection with Proc" do
29
27
  def last5(object)
30
28
  object.last(5)
31
29
  end
32
- replace_hash = { something: ->(obj){ last5(obj)} }
30
+ replace_hash = { something: ->(object){ last5(object)} }
33
31
  collection = %w[xxTiger xxSkunk]
34
32
  cr_key = Fragment.new(nil).cache_replace_key(:something)
35
33
  fragment = Fragment.new("hey #{cr_key} hey.")
36
34
  assert_equal "hey Tiger hey.hey Skunk hey.",
37
- fragment.replace_collection(collection, replace_hash)
35
+ fragment.replace(replace_hash, collection)
38
36
  end
39
37
  end
40
38
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cache_rocket
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tee Parham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-30 00:00:00.000000000 Z
11
+ date: 2013-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack