content_caching 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8f76b31f135b71b97dae7f0b560366afd49d65fe
4
+ data.tar.gz: 47b2f2a7756927158656355120605006ad701f1b
5
+ SHA512:
6
+ metadata.gz: f49f744dad7212723fd9f42451824ef08e19edbf5ee17b8df29784d998709562322cb923f93cc201fea5e16d32a3b8adc2fcd3bb52fae87fcd8aff090eece266
7
+ data.tar.gz: d9a7187010d2d3d420b18f58ff0001f6c35f8fe68befeead4507ae4b8fbd8c2f7bb4e3c865e202e4510f58b9a00ebebf11c05e083d3a375cd2585c76ff161e4a
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service_name: travis-ci
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format=doc
2
+ --color
3
+ --backtrace
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ content_caching
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.1
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.1
data/CHANGELOG.md ADDED
@@ -0,0 +1,19 @@
1
+ ### VERSION 0.0.1
2
+
3
+ * bug fix
4
+ *
5
+
6
+ * refactoring
7
+ *
8
+
9
+ * enhancements
10
+ *
11
+
12
+ * backwards incompatible changes
13
+ *
14
+
15
+ * deprecations
16
+ *
17
+
18
+ * todos
19
+ *
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in content_caching.gemspec
4
+ gemspec
5
+
6
+ group :test do
7
+ gem 'pry'
8
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Joel AZEMAR
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # ContentCaching
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/content_caching.svg)](http://badge.fury.io/rb/content_caching)
4
+ [![Code Climate](https://codeclimate.com/github/joel/content_caching.png)](https://codeclimate.com/github/joel/content_caching)
5
+ [![Dependency Status](https://gemnasium.com/joel/content_caching.png)](https://gemnasium.com/joel/content_caching)
6
+ [![Build Status](https://travis-ci.org/joel/content_caching.svg?branch=master)](https://travis-ci.org/joel/content_caching)
7
+ [![Coverage Status](https://coveralls.io/repos/joel/content_caching/badge.png)](https://coveralls.io/r/joel/content_caching)
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ gem 'content_caching'
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install content_caching
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Contributing
28
+
29
+ 1. Fork it ( https://github.com/[my-github-username]/content_caching/fork )
30
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
31
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
32
+ 4. Push to the branch (`git push origin my-new-feature`)
33
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'bundler/gem_tasks'
5
+
6
+ require 'rake'
7
+ require 'rspec'
8
+
9
+ require_relative 'lib/content_caching'
10
+
11
+ require 'rspec/core/rake_task'
12
+ RSpec::Core::RakeTask.new('spec')
13
+ task default: :spec
@@ -0,0 +1,28 @@
1
+ require_relative 'lib/content_caching/version'
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = 'content_caching'
5
+ spec.version = ContentCaching::VERSION
6
+ spec.authors = ['Joel AZEMAR']
7
+ spec.email = ['joel.azemar@gmail.com']
8
+ spec.summary = %q{Library for help and speed up views render manipulation}
9
+ spec.description = %q{Library for help and speed up views render manipulation based on aws and local storage}
10
+ spec.homepage = 'https://github.com/joel/content_caching'
11
+ spec.license = 'MIT'
12
+
13
+ spec.files = `git ls-files -z`.split("\x0")
14
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
15
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
+ spec.require_paths = ['lib']
17
+
18
+ spec.add_development_dependency 'bundler', '~> 1.6'
19
+ spec.add_development_dependency 'rake', '~> 10.3'
20
+ spec.add_development_dependency 'rspec', '~> 2.14'
21
+ spec.add_development_dependency 'webmock', '~> 1.18'
22
+ spec.add_development_dependency 'vcr', '~> 2.9'
23
+ spec.add_development_dependency 'right_http_connection', '~> 1.4'
24
+
25
+ spec.add_dependency 'aws', '~> 2.10'
26
+
27
+ spec.required_ruby_version = '~> 2.1'
28
+ end
@@ -0,0 +1,24 @@
1
+ module ContentCaching
2
+ module Adapter
3
+ class Abstract
4
+
5
+ def initialize wrapper, options
6
+ @wrapper = wrapper
7
+ @options = options
8
+ end
9
+
10
+ def store content
11
+ raise NotImplementedError
12
+ end
13
+
14
+ def url
15
+ raise NotImplementedError
16
+ end
17
+
18
+ def delete
19
+ raise NotImplementedError
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,50 @@
1
+ require 'aws'
2
+
3
+ module ContentCaching
4
+ module Adapter
5
+ class Aws
6
+
7
+ T_1_DAY = 86400.freeze
8
+
9
+ attr_reader :options
10
+
11
+ def initialize options
12
+ @options = options
13
+ end
14
+
15
+ def store document_path, content
16
+ retry_3_times do
17
+ content.rewind if content.respond_to?(:rewind)
18
+ s3_interface.put self.options[:directory], document_path, content.read
19
+ end
20
+ end
21
+
22
+ def url document_path
23
+ s3_interface.get_link self.options[:directory], document_path, T_1_DAY
24
+ end
25
+
26
+ def delete document_path
27
+ retry_3_times do
28
+ s3_interface.delete self.options[:directory], document_path
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def s3_interface
35
+ @s3_interface ||= ::Aws::S3Interface.new self.options[:aws_access_key_id],
36
+ self.options[:aws_secret_access_key]
37
+ end
38
+
39
+ def retry_3_times
40
+ tries = 0
41
+ begin
42
+ yield
43
+ rescue
44
+ (tries += 1) <3 ? retry : raise
45
+ end
46
+ end
47
+
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,38 @@
1
+ require_relative 'abstract'
2
+ require_relative 'implementation'
3
+ require_relative 'aws'
4
+
5
+ module ContentCaching
6
+ module Adapter
7
+ class AwsAdapter < Abstract
8
+ include Implementation
9
+
10
+ def initialize(wrapper, options)
11
+ super
12
+ end
13
+
14
+ def url
15
+ adapter.url document_path
16
+ end
17
+
18
+ def store content
19
+ adapter.store document_path, content
20
+ end
21
+
22
+ def delete
23
+ adapter.delete document_path
24
+ end
25
+
26
+ private
27
+
28
+ def document_path
29
+ @wrapper.document_path
30
+ end
31
+
32
+ def adapter
33
+ @adapter ||= Aws::new(@options)
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,27 @@
1
+ module ContentCaching
2
+ module Adapter
3
+ class Base
4
+
5
+ class UnsupportedAdapter < StandardError ; end
6
+
7
+ def self.create(adapter_infos, wrapper)
8
+ adapter_type = adapter_infos[:adapter]
9
+ options = adapter_infos[:options]
10
+
11
+ load "content_caching/adapters/#{adapter_type}_adapter.rb"
12
+ ContentCaching::Adapter.const_get(klass_adapter(adapter_type)).new(wrapper, options)
13
+ end
14
+
15
+ private
16
+
17
+ def self.klass_adapter adapter_symbol
18
+ case adapter_symbol
19
+ when :fs then :FsAdapter
20
+ when :aws then :AwsAdapter
21
+ else raise UnsupportedAdapter.new
22
+ end
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,19 @@
1
+ module ContentCaching
2
+ module Adapter
3
+ class Fs
4
+
5
+ def store document_path, document_name, content
6
+ Pathname(url(document_path, document_name)).write content.read
7
+ end
8
+
9
+ def url document_path, document_name
10
+ "#{document_path}/#{document_name}"
11
+ end
12
+
13
+ def delete document_path, document_name
14
+ Pathname(url(document_path, document_name)).delete
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,39 @@
1
+ require_relative 'abstract'
2
+ require_relative 'implementation'
3
+ require_relative 'fs'
4
+
5
+ module ContentCaching
6
+ module Adapter
7
+ class FsAdapter < Abstract
8
+ include Implementation
9
+
10
+ def initialize(wrapper, options)
11
+ super
12
+ end
13
+
14
+ def url
15
+ adapter.url document_path, document_name
16
+ end
17
+
18
+ def store content
19
+ adapter.store document_path, document_name, content
20
+ end
21
+
22
+ def delete
23
+ adapter.delete document_path, document_name
24
+ end
25
+
26
+ private
27
+
28
+ def document_path
29
+ return @wrapper.document_path unless @options[:directory]
30
+ Pathname([@options[:directory], @wrapper.document_path].join('/')).cleanpath.to_path
31
+ end
32
+
33
+ def adapter
34
+ @adapter ||= Fs::new
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,30 @@
1
+ module ContentCaching
2
+ module Adapter
3
+ module Implementation
4
+
5
+ def store content
6
+ adapter.store content
7
+ end
8
+
9
+ def url
10
+ adapter.url
11
+ end
12
+
13
+ def delete
14
+ adapter.delete
15
+ end
16
+
17
+ private
18
+
19
+ def document_name
20
+ @wrapper.document_name
21
+ end
22
+
23
+ def document_path
24
+ return @wrapper.document_path unless @options[:directory]
25
+ Pathname([@options[:directory], @wrapper.document_path].join('/')).cleanpath.to_path
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,9 @@
1
+ module ContentCaching
2
+ class Configuration
3
+ attr_accessor :adapter
4
+
5
+ def initialize
6
+ @adapter = { adapter: :fs, options: { directory: 'tmp' }}
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module ContentCaching
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,39 @@
1
+ require_relative 'content_caching/version'
2
+ require_relative 'content_caching/configuration'
3
+ require_relative 'content_caching/adapters/base'
4
+
5
+ begin
6
+ require 'pry'
7
+ rescue LoadError
8
+ end
9
+
10
+ require 'forwardable'
11
+
12
+ module ContentCaching
13
+ class << self
14
+ attr_writer :configuration
15
+ end
16
+
17
+ def self.configuration
18
+ @configuration ||= Configuration.new
19
+ end
20
+
21
+ def self.reset
22
+ @configuration = Configuration.new
23
+ end
24
+
25
+ def self.configure
26
+ yield(configuration)
27
+ end
28
+
29
+ class Document
30
+ extend Forwardable
31
+
32
+ def_delegators :adapter, :store, :url, :delete
33
+ attr_accessor :adapter
34
+
35
+ def initialize wrapper
36
+ self.adapter = ContentCaching::Adapter::Base.create(ContentCaching.configuration.adapter, wrapper)
37
+ end
38
+ end
39
+ end
File without changes
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ module ContentCaching
4
+ describe Configuration do
5
+ let(:configuration) { Configuration.new }
6
+
7
+ describe '#adapter' do
8
+ let(:adapter) {{ adapter: :fs, options: { directory: 'tmp' }}}
9
+ it 'the default is fs' do
10
+ expect(configuration.adapter).to eq(adapter)
11
+ end
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,108 @@
1
+ require 'spec_helper'
2
+
3
+ require 'pathname'
4
+
5
+ module ContentCaching
6
+ describe Document do
7
+
8
+ context 'fs' do
9
+ let(:wrapper) { OpenStruct.new(options) }
10
+ let(:content_caching) { Document.new(wrapper) }
11
+
12
+ context 'options' do
13
+
14
+ context 'without document path' do
15
+ let(:options) {{ document_name: 'page.html', document_path: nil }}
16
+ specify do
17
+ expect(content_caching.url).to eq('tmp/page.html')
18
+ end
19
+ end
20
+
21
+ context 'with document path' do
22
+ let(:options) {{ document_name: 'page.html', document_path: 'pages' }}
23
+ specify do
24
+ expect(content_caching.url).to eq('tmp/pages/page.html')
25
+ end
26
+ end
27
+ end
28
+
29
+ describe '#store' do
30
+ let(:options) {{ document_name: 'page.html', document_path: 'public/pages' }}
31
+
32
+ before do
33
+ content_caching.store Pathname('spec/fixtures/page.html')
34
+ end
35
+
36
+ specify do
37
+ expect(Pathname('tmp/public/pages/page.html')).to be_exist
38
+ end
39
+
40
+ describe '#delete' do
41
+ before do content_caching.delete end
42
+ specify do
43
+ expect(Pathname('tmp/public/pages/page.html')).to_not be_exist
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ context 'aws', pending: true do
50
+ let(:wrapper) { OpenStruct.new(options) }
51
+ let(:options) {{ document_name: nil, document_path: 'test/page.html' }}
52
+ let(:content_caching) { Document.new(wrapper) }
53
+ let(:adapter) do
54
+ { adapter: :aws,
55
+ options: { directory: 'bucket-name', aws_access_key_id: 'aws_access_key_id',
56
+ aws_secret_access_key: 'aws_secret_access_key' }
57
+ }
58
+ end
59
+
60
+ before do
61
+ ContentCaching.configure do |config|
62
+ config.adapter = adapter
63
+ end
64
+ end
65
+
66
+ describe '#url' do
67
+
68
+ let(:url) { 'https://bucket-name.s3.amazonaws.com:443/test/page.html' }
69
+
70
+ specify do
71
+ expect(content_caching.url).to match(url)
72
+ end
73
+ end
74
+
75
+ describe '#store' do
76
+ let(:s3) do
77
+ Aws::S3.new(
78
+ adapter[:options][:aws_access_key_id],
79
+ adapter[:options][:aws_secret_access_key])
80
+ end
81
+
82
+ let(:bucket) { Aws::S3::Bucket.new(s3, adapter[:options][:directory]) }
83
+
84
+ before do
85
+ # VCR.use_cassette('store') do
86
+ content_caching.store Pathname('spec/fixtures/page.html')
87
+ # end
88
+ end
89
+
90
+ specify do
91
+ expect(
92
+ Aws::S3::Key.new(bucket, options[:document_path])
93
+ ).to be_exists
94
+ end
95
+
96
+ describe '#delete' do
97
+ before do content_caching.delete end
98
+ specify do
99
+ expect(
100
+ Aws::S3::Key.new(bucket, options[:document_path])
101
+ ).to_not be_exists
102
+ end
103
+ end
104
+ end
105
+ end
106
+
107
+ end
108
+ end
@@ -0,0 +1,9 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <title>Title</title>
5
+ </head>
6
+ <body>
7
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin luctus tortor eu hendrerit scelerisque. Cras sed tellus quis ipsum fringilla vulputate pulvinar vitae risus. Aenean dapibus mi enim, nec volutpat ante lacinia nec. Morbi facilisis mi vel nibh pulvinar, eu auctor lacus rutrum. Praesent in tristique tortor. Quisque sed pharetra leo, vitae accumsan metus. Ut convallis elementum nibh ut egestas.
8
+ </body>
9
+ </html>
@@ -0,0 +1,26 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ begin
5
+ require 'pry'
6
+ rescue LoadError
7
+ end
8
+
9
+ # require 'right_http_connection'
10
+ # require 'webmock'
11
+ # require 'webmock/rspec'
12
+ # require 'vcr'
13
+ #
14
+ # VCR.configure do |c|
15
+ # c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
16
+ # c.hook_into :webmock
17
+ # end
18
+
19
+ require_relative '../lib/content_caching'
20
+
21
+ RSpec.configure do |config|
22
+ config.filter_run focused: true
23
+ config.run_all_when_everything_filtered = true
24
+ # config.before { }
25
+ # config.after { }
26
+ end
metadata ADDED
@@ -0,0 +1,175 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: content_caching
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Joel AZEMAR
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.14'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.14'
55
+ - !ruby/object:Gem::Dependency
56
+ name: webmock
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.18'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.18'
69
+ - !ruby/object:Gem::Dependency
70
+ name: vcr
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.9'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.9'
83
+ - !ruby/object:Gem::Dependency
84
+ name: right_http_connection
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.4'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.4'
97
+ - !ruby/object:Gem::Dependency
98
+ name: aws
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.10'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.10'
111
+ description: Library for help and speed up views render manipulation based on aws
112
+ and local storage
113
+ email:
114
+ - joel.azemar@gmail.com
115
+ executables: []
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - ".coveralls.yml"
120
+ - ".gitignore"
121
+ - ".rspec"
122
+ - ".ruby-gemset"
123
+ - ".ruby-version"
124
+ - ".travis.yml"
125
+ - CHANGELOG.md
126
+ - Gemfile
127
+ - LICENSE.txt
128
+ - README.md
129
+ - Rakefile
130
+ - content_caching.gemspec
131
+ - lib/content_caching.rb
132
+ - lib/content_caching/adapters/abstract.rb
133
+ - lib/content_caching/adapters/aws.rb
134
+ - lib/content_caching/adapters/aws_adapter.rb
135
+ - lib/content_caching/adapters/base.rb
136
+ - lib/content_caching/adapters/fs.rb
137
+ - lib/content_caching/adapters/fs_adapter.rb
138
+ - lib/content_caching/adapters/implementation.rb
139
+ - lib/content_caching/configuration.rb
140
+ - lib/content_caching/version.rb
141
+ - spec/content_caching/adapters/fs_adapter_spec.rb
142
+ - spec/content_caching/configuration_spec.rb
143
+ - spec/content_caching_spec.rb
144
+ - spec/fixtures/page.html
145
+ - spec/spec_helper.rb
146
+ homepage: https://github.com/joel/content_caching
147
+ licenses:
148
+ - MIT
149
+ metadata: {}
150
+ post_install_message:
151
+ rdoc_options: []
152
+ require_paths:
153
+ - lib
154
+ required_ruby_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '2.1'
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ requirements: []
165
+ rubyforge_project:
166
+ rubygems_version: 2.1.11
167
+ signing_key:
168
+ specification_version: 4
169
+ summary: Library for help and speed up views render manipulation
170
+ test_files:
171
+ - spec/content_caching/adapters/fs_adapter_spec.rb
172
+ - spec/content_caching/configuration_spec.rb
173
+ - spec/content_caching_spec.rb
174
+ - spec/fixtures/page.html
175
+ - spec/spec_helper.rb