cache_rocket 0.2.1 → 0.2.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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +1 -1
- data/LICENSE.txt +1 -1
- data/README.md +112 -37
- data/cache_rocket.gemspec +7 -6
- data/lib/cache_rocket/fragment.rb +2 -2
- data/lib/cache_rocket/version.rb +1 -1
- data/test/cache_rocket_test.rb +36 -20
- data/test/fragment_test.rb +9 -9
- data/test/key_test.rb +3 -3
- data/test/test_helper.rb +6 -5
- metadata +26 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f75dd60c6e5762540a56e4a7085162a9c74f102b
|
4
|
+
data.tar.gz: 14af9f5f4e9d64c1181b4f07eb6605b2d004a7bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b960decd0407c187ea85ba06acfdfbd8f6f66292191f7c7837b893363cd3f91e84b2f272388cb910101a4f6e7e0198de12233c42c693c1a746c7a13143d7d84b
|
7
|
+
data.tar.gz: c37b830692708e77e91e350f0c8986d95eb90b40900814f29132256fbe48c85b526d865684673267432b3c501f41ec484008d2813a78a0c9e170cd42b110c607
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.1.0
|
data/.travis.yml
CHANGED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,19 +1,21 @@
|
|
1
1
|
[][gem]
|
2
|
-
[][build]
|
3
|
+
[][coverage]
|
4
|
+
[][climate]
|
4
5
|
|
5
6
|
[gem]: http://badge.fury.io/rb/cache_rocket
|
6
|
-
[build]: https://travis-ci.org/
|
7
|
-
[
|
7
|
+
[build]: https://travis-ci.org/neighborland/cache_rocket
|
8
|
+
[coverage]: https://coveralls.io/r/neighborland/cache_rocket
|
9
|
+
[climate]: https://codeclimate.com/github/neighborland/cache_rocket
|
8
10
|
|
9
|
-
|
11
|
+
## Rails rendering extension for server-side html caching
|
10
12
|
|
11
|
-
|
13
|
+
CacheRocket improves fragment caching efficiency in Rails.
|
14
|
+
CacheRocket allows caching more generic html fragments and allowing the contents of the cached fragments
|
15
|
+
to be replaced with dynamic content.
|
16
|
+
CacheRocket is a technique that may be used with other Rails caching strategies such as Russian Doll caching.
|
12
17
|
|
13
|
-
|
14
|
-
CacheRocket may be used in with other Rails caching strategies such as Russian Doll caching.
|
15
|
-
|
16
|
-
## Install
|
18
|
+
### Install
|
17
19
|
|
18
20
|
Add this line to your Gemfile:
|
19
21
|
|
@@ -27,12 +29,12 @@ Add this line to a helper file, likely your ApplicationHelper:
|
|
27
29
|
include CacheRocket
|
28
30
|
```
|
29
31
|
|
30
|
-
|
32
|
+
### Use
|
31
33
|
|
32
|
-
This gem allows you to cache a
|
33
|
-
scenario:
|
34
|
+
This gem allows you to cache a fragment of html and replace inner html. You cache the donut and replace the donut hole.
|
34
35
|
|
35
|
-
|
36
|
+
Assume you have some html that you would like to cache, but cannot because of some uncacheable code nested in the DOM.
|
37
|
+
For example:
|
36
38
|
|
37
39
|
##### file.html.haml:
|
38
40
|
```haml
|
@@ -44,86 +46,159 @@ You have some html that you would like to cache, but cannot because of some unca
|
|
44
46
|
.lots
|
45
47
|
.of
|
46
48
|
.htmls
|
47
|
-
= render '
|
49
|
+
= render 'inner'
|
48
50
|
```
|
49
51
|
|
50
|
-
#####
|
52
|
+
##### _inner.html.haml:
|
51
53
|
```haml
|
52
54
|
= complicated_uncacheable_stuff
|
53
55
|
```
|
54
56
|
|
55
|
-
In the scenario above, you can't cache anything. With `cache_rocket`, you can
|
57
|
+
In the scenario above, you can't cache anything. With `cache_rocket`, you can. Replace `render`
|
58
|
+
with `render_cached` in `file`, specify the partial to replace in `container`, and cache `container`:
|
56
59
|
|
57
60
|
##### file.html.haml:
|
58
61
|
```haml
|
59
|
-
= render_cached 'container', replace: '
|
62
|
+
= render_cached 'container', replace: 'inner'
|
60
63
|
```
|
61
64
|
|
62
65
|
##### _container.html.haml:
|
63
66
|
```haml
|
64
|
-
- cache
|
67
|
+
- cache 'container' do
|
65
68
|
.lots
|
66
69
|
.of
|
67
70
|
.htmls
|
68
|
-
= cache_replace_key '
|
71
|
+
= cache_replace_key 'inner'
|
69
72
|
```
|
70
73
|
|
71
|
-
#####
|
74
|
+
##### _inner.html.haml:
|
72
75
|
``` haml
|
73
76
|
= complicated_uncacheable_stuff
|
74
77
|
```
|
75
78
|
|
76
|
-
In
|
79
|
+
In this example, you could remove the `_inner.html.haml` file altogether, like so:
|
77
80
|
|
78
81
|
##### file.html.haml:
|
79
82
|
```haml
|
80
|
-
= render_cached 'container', replace: {
|
83
|
+
= render_cached 'container', replace: { inner: complicated_uncacheable_stuff }
|
81
84
|
```
|
82
85
|
|
83
|
-
|
86
|
+
##### _container.html.haml:
|
87
|
+
```haml
|
88
|
+
- cache 'container' do
|
89
|
+
.lots
|
90
|
+
.of
|
91
|
+
.htmls
|
92
|
+
= cache_replace_key 'inner'
|
93
|
+
```
|
94
|
+
|
95
|
+
### Options
|
84
96
|
|
85
|
-
`render_cached`
|
97
|
+
`render_cached` supports several styles of arguments:
|
86
98
|
|
87
99
|
#### Single partial to replace
|
88
100
|
|
89
101
|
```ruby
|
90
|
-
render_cached
|
102
|
+
render_cached 'container', replace: 'inner'
|
91
103
|
```
|
92
104
|
|
93
105
|
#### Array of partials to replace
|
94
106
|
```ruby
|
95
|
-
render_cached
|
107
|
+
render_cached 'container', replace: ['inner', 'footer']
|
96
108
|
```
|
97
109
|
|
98
110
|
#### Hash of keys to replace with values
|
99
111
|
```ruby
|
100
|
-
render_cached
|
112
|
+
render_cached 'container', replace: { key_name: a_helper_method(object) }
|
101
113
|
```
|
102
114
|
|
103
115
|
#### Block containing a hash of keys to replace with values
|
104
116
|
```ruby
|
105
|
-
render_cached
|
117
|
+
render_cached 'container' do
|
106
118
|
{ key_name: a_helper_method(object) }
|
107
119
|
end
|
108
120
|
```
|
109
121
|
|
110
122
|
#### Render a collection with hash of keys, using a Proc for each collection item
|
111
123
|
```ruby
|
112
|
-
render_cached
|
124
|
+
render_cached 'container', collection: objects,
|
113
125
|
replace: { key_name: ->(object){ a_helper_method(object) } }
|
114
126
|
```
|
115
127
|
|
116
128
|
#### Render a collection with block syntax
|
117
129
|
```ruby
|
118
|
-
render_cached
|
130
|
+
render_cached 'container', collection: objects do
|
119
131
|
{ key_name: ->(object){ a_helper_method(object) } }
|
120
132
|
end
|
121
133
|
```
|
122
134
|
|
123
|
-
|
135
|
+
### YMMV
|
136
|
+
|
137
|
+
`cache_rocket` is not magic. It should not be used in all situations.
|
138
|
+
Benchmark your page load times before and after to see if it helps.
|
139
|
+
|
140
|
+
### Benefits
|
141
|
+
|
142
|
+
#### More server-side caching
|
143
|
+
|
144
|
+
See the example above.
|
145
|
+
|
146
|
+
#### Use far less memory
|
147
|
+
|
148
|
+
Typically, one would key the `users/bio` partial on the `user` object like so:
|
149
|
+
|
150
|
+
##### users/bio.haml:
|
151
|
+
```haml
|
152
|
+
- cache [user, 'bio'] do
|
153
|
+
.lots-of-htmls
|
154
|
+
= user.bio
|
155
|
+
```
|
156
|
+
|
157
|
+
```haml
|
158
|
+
= render 'users/bio'
|
159
|
+
```
|
160
|
+
|
161
|
+
With 1000 users, there are 1000 cached items. This can use a lot of memory.
|
162
|
+
Instead we can cache the `users/bio` partial once and replace the content we need using
|
163
|
+
`cache_replace`. With 1000 users, we use 1/1000th the memory.
|
164
|
+
|
165
|
+
##### users/bio.haml:
|
166
|
+
```haml
|
167
|
+
- cache('users/bio') do
|
168
|
+
.lots-of-htmls
|
169
|
+
= cache_replace_key :bio
|
170
|
+
```
|
171
|
+
|
172
|
+
```haml
|
173
|
+
= render_cached 'users/bio', replace: { bio: user.bio }
|
174
|
+
```
|
175
|
+
|
176
|
+
#### Simpler cache keys
|
177
|
+
|
178
|
+
If you have a cache key containing multiple models, it will generally be very inefficient:
|
179
|
+
```haml
|
180
|
+
- cache(user, other_user) do
|
181
|
+
= render 'common_interests'
|
182
|
+
```
|
183
|
+
|
184
|
+
If the cached content is rarely retrieved, `cache_replace` can help:
|
185
|
+
|
186
|
+
```haml
|
187
|
+
- cache('common_interests') do
|
188
|
+
.htmls
|
189
|
+
= cache_replace_key :something
|
190
|
+
```
|
191
|
+
|
192
|
+
```haml
|
193
|
+
= render 'common_interests', replace: { something: 'common_interests/inner' }
|
194
|
+
```
|
195
|
+
|
196
|
+
#### Faster first page loads
|
197
|
+
|
198
|
+
By caching common html, you ensure that you will render cached content the first time a model-dependent
|
199
|
+
fragment is rendered. See the `Use far less memory` section above for an example.
|
200
|
+
|
201
|
+
### References
|
124
202
|
|
125
|
-
|
126
|
-
|
127
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
128
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
129
|
-
5. Create new Pull Request
|
203
|
+
* Slides from Boulder Ruby presentation: http://www.slideshare.net/teeparham/rails-html-fragment-caching-with-cache-rocket
|
204
|
+
* Rails cache benchmark test app: https://github.com/teeparham/cache_benchmark
|
data/cache_rocket.gemspec
CHANGED
@@ -10,18 +10,19 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["tee@neighborland.com"]
|
11
11
|
spec.description = %q{Rails rendering extension for server-side html caching}
|
12
12
|
spec.summary = %q{Rails rendering extension for server-side html caching}
|
13
|
-
spec.homepage = "https://github.com/
|
13
|
+
spec.homepage = "https://github.com/neighborland/cache_rocket"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
17
17
|
spec.test_files = `git ls-files -- {test}/*`.split("\n")
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
+
spec.required_ruby_version = ">= 1.9.3"
|
21
|
+
|
20
22
|
spec.add_dependency "actionpack", ">= 3.2"
|
21
23
|
|
22
|
-
spec.add_development_dependency "rake", "
|
23
|
-
spec.add_development_dependency "
|
24
|
-
spec.add_development_dependency "mocha", "
|
25
|
-
spec.add_development_dependency "
|
26
|
-
spec.add_development_dependency "pry", ">= 0.9"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
spec.add_development_dependency "minitest"
|
26
|
+
spec.add_development_dependency "mocha", "~> 1.0"
|
27
|
+
spec.add_development_dependency "pry", "~> 0.9"
|
27
28
|
end
|
@@ -45,8 +45,8 @@ module CacheRocket
|
|
45
45
|
def replace_item_hash(item, hash)
|
46
46
|
item_fragment = self.value.dup
|
47
47
|
|
48
|
-
hash.each do |key,
|
49
|
-
item_fragment.gsub! cache_replace_key(key),
|
48
|
+
hash.each do |key, proc|
|
49
|
+
item_fragment.gsub! cache_replace_key(key), proc.call(item)
|
50
50
|
end
|
51
51
|
|
52
52
|
item_fragment
|
data/lib/cache_rocket/version.rb
CHANGED
data/test/cache_rocket_test.rb
CHANGED
@@ -1,37 +1,37 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class CacheRocketTest <
|
3
|
+
class CacheRocketTest < MiniTest::Spec
|
4
4
|
class FakeRenderer
|
5
5
|
include CacheRocket
|
6
6
|
end
|
7
7
|
|
8
|
-
|
8
|
+
before do
|
9
9
|
@renderer = FakeRenderer.new
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
describe "#cache_replace_key" do
|
13
|
+
it "return key with prefix" do
|
14
14
|
assert_equal CacheRocket::CACHE_REPLACE_KEY_OPEN + "some/thing>", @renderer.cache_replace_key("some/thing")
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
describe "#render_cached" do
|
19
|
+
before do
|
20
20
|
@renderer.stubs(:render).with("container", {}).returns "Fanny pack #{@renderer.cache_replace_key('inner')} viral mustache."
|
21
21
|
@renderer.stubs(:render).with("inner", {}).returns "quinoa hoodie"
|
22
22
|
end
|
23
23
|
|
24
|
-
|
24
|
+
it "render with single partial" do
|
25
25
|
assert_equal "Fanny pack quinoa hoodie viral mustache.", @renderer.render_cached("container", replace: "inner")
|
26
26
|
end
|
27
27
|
|
28
|
-
|
28
|
+
it "pass options to inner render" do
|
29
29
|
@renderer.expects(:render).with("container", variable: "x").returns ""
|
30
30
|
@renderer.expects(:render).with("inner", variable: "x").returns ""
|
31
31
|
@renderer.render_cached("container", variable: "x", replace: "inner")
|
32
32
|
end
|
33
33
|
|
34
|
-
|
34
|
+
it "render with array of partials" do
|
35
35
|
@renderer.stubs(:render).with("container", {}).
|
36
36
|
returns "#{@renderer.cache_replace_key('inner')} #{@renderer.cache_replace_key('other')} viral mustache."
|
37
37
|
@renderer.stubs(:render).with("other", {}).returns "high life"
|
@@ -40,22 +40,22 @@ class CacheRocketTest < Test::Unit::TestCase
|
|
40
40
|
@renderer.render_cached("container", replace: ["inner", "other"])
|
41
41
|
end
|
42
42
|
|
43
|
-
|
43
|
+
it "render with map of keys" do
|
44
44
|
assert_equal "Fanny pack keytar viral mustache.", @renderer.render_cached("container", replace: {inner: "keytar"})
|
45
45
|
end
|
46
46
|
|
47
|
-
|
47
|
+
it "render with map of keys with a nil value" do
|
48
48
|
assert_equal "Fanny pack viral mustache.", @renderer.render_cached("container", replace: {inner: nil})
|
49
49
|
end
|
50
50
|
|
51
|
-
|
51
|
+
it "render with hash block" do
|
52
52
|
output = @renderer.render_cached("container") do
|
53
53
|
{inner: "keytar"}
|
54
54
|
end
|
55
55
|
assert_equal "Fanny pack keytar viral mustache.", output
|
56
56
|
end
|
57
57
|
|
58
|
-
|
58
|
+
it "replace every instance of key in inner partial" do
|
59
59
|
@renderer.stubs(:render).with("container", {}).
|
60
60
|
returns "#{@renderer.cache_replace_key('inner')} #{@renderer.cache_replace_key('inner')} viral mustache."
|
61
61
|
|
@@ -63,7 +63,7 @@ class CacheRocketTest < Test::Unit::TestCase
|
|
63
63
|
@renderer.render_cached("container", replace: "inner")
|
64
64
|
end
|
65
65
|
|
66
|
-
|
66
|
+
it "replace every instance of the keys with hash values" do
|
67
67
|
@renderer.stubs(:render).with("container", {}).
|
68
68
|
returns "I like #{@renderer.cache_replace_key('beer')}, #{@renderer.cache_replace_key('beer')} and #{@renderer.cache_replace_key('food')}."
|
69
69
|
|
@@ -71,30 +71,46 @@ class CacheRocketTest < Test::Unit::TestCase
|
|
71
71
|
@renderer.render_cached("container", replace: {food: "chips", beer: 'stout'})
|
72
72
|
end
|
73
73
|
|
74
|
-
|
74
|
+
it "replace collection with Proc in replace key" do
|
75
75
|
def dog_name(dog) dog end
|
76
|
+
|
76
77
|
@renderer.stubs(:render).with("partial", {}).returns "Hi #{@renderer.cache_replace_key(:dog)}."
|
77
78
|
dogs = %w[Snoop Boo]
|
78
79
|
|
79
80
|
assert_equal "Hi Snoop.Hi Boo.",
|
80
|
-
@renderer.render_cached("partial", collection: dogs, replace: {dog: ->(dog){dog_name(dog)} })
|
81
|
+
@renderer.render_cached("partial", collection: dogs, replace: {dog: ->(dog) { dog_name(dog) } })
|
81
82
|
end
|
82
83
|
|
83
|
-
|
84
|
+
it "replace collection using hash block with Proc" do
|
84
85
|
def dog_name(dog) dog end
|
86
|
+
|
85
87
|
@renderer.stubs(:render).with("partial", {}).returns "Hi #{@renderer.cache_replace_key(:dog)}."
|
86
88
|
dogs = %w[Snoop Boo]
|
87
89
|
|
88
90
|
rendered = @renderer.render_cached("partial", collection: dogs) do
|
89
|
-
{ dog: ->(dog){dog_name(dog)} }
|
91
|
+
{ dog: ->(dog) { dog_name(dog) } }
|
90
92
|
end
|
91
93
|
|
92
94
|
assert_equal "Hi Snoop.Hi Boo.", rendered
|
93
95
|
end
|
94
96
|
|
95
|
-
|
97
|
+
it "replace collection with multiple procs" do
|
98
|
+
def dog_name(dog) dog end
|
99
|
+
def reverse(dog) dog.reverse end
|
100
|
+
|
101
|
+
@renderer.stubs(:render).with("partial", {}).returns "#{@renderer.cache_replace_key(:reverse)} #{@renderer.cache_replace_key(:dog)}."
|
102
|
+
dogs = %w[Snoop Boo]
|
103
|
+
|
104
|
+
rendered = @renderer.render_cached("partial", collection: dogs) do
|
105
|
+
{ dog: ->(dog) { dog_name(dog) }, reverse: ->(dog) { reverse(dog) } }
|
106
|
+
end
|
107
|
+
|
108
|
+
assert_equal "poonS Snoop.ooB Boo.", rendered
|
109
|
+
end
|
110
|
+
|
111
|
+
it "raise ArgumentError with invalid syntax" do
|
96
112
|
@renderer.stubs(:render).with("container").returns("")
|
97
|
-
|
113
|
+
assert_raises(ArgumentError) do
|
98
114
|
@renderer.render_cached("container")
|
99
115
|
end
|
100
116
|
end
|
data/test/fragment_test.rb
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
module CacheRocket
|
4
|
-
class FragmentTest <
|
5
|
-
|
6
|
-
|
4
|
+
class FragmentTest < MiniTest::Spec
|
5
|
+
describe "#to_s" do
|
6
|
+
it "equal value" do
|
7
7
|
assert_equal "yo", Fragment.new("yo").to_s
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
describe "#gsub!" do
|
12
|
+
it "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
|
-
|
19
|
-
|
18
|
+
describe "#replace" do
|
19
|
+
it "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
22
|
fragment.replace({xx: "yo"}, nil)
|
23
23
|
assert_equal "hey yo hey.", fragment.value
|
24
24
|
end
|
25
25
|
|
26
|
-
|
26
|
+
it "replace collection with Proc" do
|
27
27
|
def last5(object)
|
28
28
|
object.last(5)
|
29
29
|
end
|
@@ -37,4 +37,4 @@ module CacheRocket
|
|
37
37
|
end
|
38
38
|
|
39
39
|
end
|
40
|
-
end
|
40
|
+
end
|
data/test/key_test.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
module CacheRocket
|
4
|
-
class KeyTest <
|
4
|
+
class KeyTest < MiniTest::Spec
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
describe "#cache_replace_key" do
|
7
|
+
it "return key with prefix" do
|
8
8
|
class KeyFake
|
9
9
|
include Key
|
10
10
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
if ENV['TRAVIS']
|
2
|
+
require 'coveralls'
|
3
|
+
Coveralls.wear!
|
4
|
+
end
|
3
5
|
|
4
|
-
require '
|
5
|
-
require '
|
6
|
-
require 'mocha/setup'
|
6
|
+
require 'minitest/autorun'
|
7
|
+
require 'mocha/mini_test'
|
7
8
|
require 'cache_rocket'
|
8
9
|
require 'pry'
|
metadata
CHANGED
@@ -1,97 +1,83 @@
|
|
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.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tee Parham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: mocha
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.13'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - '>='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0.13'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: shoulda-context
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - '>='
|
59
|
+
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
61
|
+
version: '1.0'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- -
|
66
|
+
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
68
|
+
version: '1.0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: pry
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- -
|
73
|
+
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
75
|
version: '0.9'
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- -
|
80
|
+
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '0.9'
|
97
83
|
description: Rails rendering extension for server-side html caching
|
@@ -101,9 +87,9 @@ executables: []
|
|
101
87
|
extensions: []
|
102
88
|
extra_rdoc_files: []
|
103
89
|
files:
|
104
|
-
- .gitignore
|
105
|
-
- .ruby-version
|
106
|
-
- .travis.yml
|
90
|
+
- ".gitignore"
|
91
|
+
- ".ruby-version"
|
92
|
+
- ".travis.yml"
|
107
93
|
- Gemfile
|
108
94
|
- LICENSE.txt
|
109
95
|
- README.md
|
@@ -117,7 +103,7 @@ files:
|
|
117
103
|
- test/fragment_test.rb
|
118
104
|
- test/key_test.rb
|
119
105
|
- test/test_helper.rb
|
120
|
-
homepage: https://github.com/
|
106
|
+
homepage: https://github.com/neighborland/cache_rocket
|
121
107
|
licenses:
|
122
108
|
- MIT
|
123
109
|
metadata: {}
|
@@ -127,18 +113,19 @@ require_paths:
|
|
127
113
|
- lib
|
128
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
129
115
|
requirements:
|
130
|
-
- -
|
116
|
+
- - ">="
|
131
117
|
- !ruby/object:Gem::Version
|
132
|
-
version:
|
118
|
+
version: 1.9.3
|
133
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
120
|
requirements:
|
135
|
-
- -
|
121
|
+
- - ">="
|
136
122
|
- !ruby/object:Gem::Version
|
137
123
|
version: '0'
|
138
124
|
requirements: []
|
139
125
|
rubyforge_project:
|
140
|
-
rubygems_version: 2.
|
126
|
+
rubygems_version: 2.2.2
|
141
127
|
signing_key:
|
142
128
|
specification_version: 4
|
143
129
|
summary: Rails rendering extension for server-side html caching
|
144
130
|
test_files: []
|
131
|
+
has_rdoc:
|