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 +4 -4
- data/README.md +22 -11
- data/lib/cache_rocket.rb +6 -10
- data/lib/cache_rocket/fragment.rb +10 -2
- data/lib/cache_rocket/version.rb +1 -1
- data/test/cache_rocket_test.rb +13 -1
- data/test/fragment_test.rb +7 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 02591106ca977ec2f38b633c6003fbbe730d7714
|
4
|
+
data.tar.gz: 61d116127812127f1eceb606b2af0fca5f83acfb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd1fca1866a158eae06686d10f73ab57de4eee8fb5d2ca593c215ef80b37258cfdb608998bd1476164a12bf433d634313015fb5486e329409b56f494c51be7dc
|
7
|
+
data.tar.gz: 1a227ce2c6238563950171be071e3d1027e4dc148ad2e4c50b806c8c2a781a3ab8d23e2ab06b6ee0bc971a8c134757a9913d2c0e6d295b6b088e9a1411a541fe
|
data/README.md
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
[][gem]
|
2
2
|
[][build]
|
3
|
-
[][coverage]
|
4
3
|
[][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
|
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
|
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
|
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
|
-
####
|
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
|
-
####
|
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
|
|
data/lib/cache_rocket.rb
CHANGED
@@ -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
|
-
|
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
|
42
|
+
case replace_hash
|
43
43
|
when Hash
|
44
|
-
|
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.
|
47
|
+
fragment.replace yield, collection
|
52
48
|
else
|
53
|
-
|
54
|
-
|
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
|
|
data/lib/cache_rocket/version.rb
CHANGED
data/test/cache_rocket_test.rb
CHANGED
@@ -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
|
data/test/fragment_test.rb
CHANGED
@@ -9,32 +9,30 @@ module CacheRocket
|
|
9
9
|
end
|
10
10
|
|
11
11
|
context "#gsub!" do
|
12
|
-
should "
|
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 "#
|
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.
|
22
|
+
fragment.replace({xx: "yo"}, nil)
|
23
23
|
assert_equal "hey yo hey.", fragment.value
|
24
24
|
end
|
25
|
-
end
|
26
25
|
|
27
|
-
|
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: ->(
|
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.
|
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.
|
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-
|
11
|
+
date: 2013-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|