josh-rack-cache 0.5.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.
- data/CHANGES +167 -0
- data/COPYING +18 -0
- data/README +110 -0
- data/Rakefile +137 -0
- data/TODO +27 -0
- data/doc/configuration.markdown +112 -0
- data/doc/faq.markdown +141 -0
- data/doc/index.markdown +121 -0
- data/doc/layout.html.erb +34 -0
- data/doc/license.markdown +24 -0
- data/doc/rack-cache.css +362 -0
- data/doc/server.ru +34 -0
- data/doc/storage.markdown +164 -0
- data/example/sinatra/app.rb +25 -0
- data/example/sinatra/views/index.erb +44 -0
- data/lib/rack/cache.rb +45 -0
- data/lib/rack/cache/appengine.rb +52 -0
- data/lib/rack/cache/cachecontrol.rb +193 -0
- data/lib/rack/cache/context.rb +253 -0
- data/lib/rack/cache/entitystore.rb +339 -0
- data/lib/rack/cache/key.rb +52 -0
- data/lib/rack/cache/metastore.rb +407 -0
- data/lib/rack/cache/options.rb +150 -0
- data/lib/rack/cache/request.rb +33 -0
- data/lib/rack/cache/response.rb +267 -0
- data/lib/rack/cache/storage.rb +62 -0
- data/rack-cache.gemspec +70 -0
- data/test/cache_test.rb +38 -0
- data/test/cachecontrol_test.rb +139 -0
- data/test/context_test.rb +774 -0
- data/test/entitystore_test.rb +230 -0
- data/test/key_test.rb +50 -0
- data/test/metastore_test.rb +302 -0
- data/test/options_test.rb +77 -0
- data/test/pony.jpg +0 -0
- data/test/request_test.rb +19 -0
- data/test/response_test.rb +178 -0
- data/test/spec_setup.rb +237 -0
- data/test/storage_test.rb +94 -0
- metadata +118 -0
@@ -0,0 +1,94 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/spec_setup"
|
2
|
+
require 'rack/cache/storage'
|
3
|
+
|
4
|
+
describe 'Rack::Cache::Storage' do
|
5
|
+
before do
|
6
|
+
@storage = Rack::Cache::Storage.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "fails when an unknown URI scheme is provided" do
|
10
|
+
lambda { @storage.resolve_metastore_uri('foo:/') }.should.raise
|
11
|
+
end
|
12
|
+
it "creates a new MetaStore for URI if none exists" do
|
13
|
+
@storage.resolve_metastore_uri('heap:/').
|
14
|
+
should.be.kind_of Rack::Cache::MetaStore
|
15
|
+
end
|
16
|
+
it "returns an existing MetaStore instance for URI that exists" do
|
17
|
+
store = @storage.resolve_metastore_uri('heap:/')
|
18
|
+
@storage.resolve_metastore_uri('heap:/').should.be store
|
19
|
+
end
|
20
|
+
it "creates a new EntityStore for URI if none exists" do
|
21
|
+
@storage.resolve_entitystore_uri('heap:/').
|
22
|
+
should.be.kind_of Rack::Cache::EntityStore
|
23
|
+
end
|
24
|
+
it "returns an existing EntityStore instance for URI that exists" do
|
25
|
+
store = @storage.resolve_entitystore_uri('heap:/')
|
26
|
+
@storage.resolve_entitystore_uri('heap:/').should.be store
|
27
|
+
end
|
28
|
+
it "clears all URI -> store mappings with #clear" do
|
29
|
+
meta = @storage.resolve_metastore_uri('heap:/')
|
30
|
+
entity = @storage.resolve_entitystore_uri('heap:/')
|
31
|
+
@storage.clear
|
32
|
+
@storage.resolve_metastore_uri('heap:/').should.not.be meta
|
33
|
+
@storage.resolve_entitystore_uri('heap:/').should.not.be entity
|
34
|
+
end
|
35
|
+
|
36
|
+
describe 'Heap Store URIs' do
|
37
|
+
%w[heap:/ mem:/].each do |uri|
|
38
|
+
it "resolves #{uri} meta store URIs" do
|
39
|
+
@storage.resolve_metastore_uri(uri).
|
40
|
+
should.be.kind_of Rack::Cache::MetaStore
|
41
|
+
end
|
42
|
+
it "resolves #{uri} entity store URIs" do
|
43
|
+
@storage.resolve_entitystore_uri(uri).
|
44
|
+
should.be.kind_of Rack::Cache::EntityStore
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe 'Disk Store URIs' do
|
50
|
+
before do
|
51
|
+
@temp_dir = create_temp_directory
|
52
|
+
end
|
53
|
+
after do
|
54
|
+
remove_entry_secure @temp_dir
|
55
|
+
@temp_dir = nil
|
56
|
+
end
|
57
|
+
|
58
|
+
%w[file: disk:].each do |uri|
|
59
|
+
it "resolves #{uri} meta store URIs" do
|
60
|
+
@storage.resolve_metastore_uri(uri + @temp_dir).
|
61
|
+
should.be.kind_of Rack::Cache::MetaStore
|
62
|
+
end
|
63
|
+
it "resolves #{uri} entity store URIs" do
|
64
|
+
@storage.resolve_entitystore_uri(uri + @temp_dir).
|
65
|
+
should.be.kind_of Rack::Cache::EntityStore
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
if have_memcached?
|
71
|
+
|
72
|
+
describe 'MemCache Store URIs' do
|
73
|
+
%w[memcache: memcached:].each do |scheme|
|
74
|
+
it "resolves #{scheme} meta store URIs" do
|
75
|
+
uri = scheme + '//' + ENV['MEMCACHED']
|
76
|
+
@storage.resolve_metastore_uri(uri).
|
77
|
+
should.be.kind_of Rack::Cache::MetaStore
|
78
|
+
end
|
79
|
+
it "resolves #{scheme} entity store URIs" do
|
80
|
+
uri = scheme + '//' + ENV['MEMCACHED']
|
81
|
+
@storage.resolve_entitystore_uri(uri).
|
82
|
+
should.be.kind_of Rack::Cache::EntityStore
|
83
|
+
end
|
84
|
+
end
|
85
|
+
it 'supports namespaces in memcached: URIs' do
|
86
|
+
uri = "memcached://" + ENV['MEMCACHED'] + "/namespace"
|
87
|
+
@storage.resolve_metastore_uri(uri).
|
88
|
+
should.be.kind_of Rack::Cache::MetaStore
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
metadata
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: josh-rack-cache
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ryan Tomayko
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-06-06 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rack
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0.4"
|
24
|
+
version:
|
25
|
+
description: HTTP Caching for Rack
|
26
|
+
email: r@tomayko.com
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README
|
33
|
+
- COPYING
|
34
|
+
- TODO
|
35
|
+
- CHANGES
|
36
|
+
files:
|
37
|
+
- CHANGES
|
38
|
+
- COPYING
|
39
|
+
- README
|
40
|
+
- Rakefile
|
41
|
+
- TODO
|
42
|
+
- doc/configuration.markdown
|
43
|
+
- doc/faq.markdown
|
44
|
+
- doc/index.markdown
|
45
|
+
- doc/layout.html.erb
|
46
|
+
- doc/license.markdown
|
47
|
+
- doc/rack-cache.css
|
48
|
+
- doc/server.ru
|
49
|
+
- doc/storage.markdown
|
50
|
+
- example/sinatra/app.rb
|
51
|
+
- example/sinatra/views/index.erb
|
52
|
+
- lib/rack/cache.rb
|
53
|
+
- lib/rack/cache/appengine.rb
|
54
|
+
- lib/rack/cache/cachecontrol.rb
|
55
|
+
- lib/rack/cache/context.rb
|
56
|
+
- lib/rack/cache/entitystore.rb
|
57
|
+
- lib/rack/cache/key.rb
|
58
|
+
- lib/rack/cache/metastore.rb
|
59
|
+
- lib/rack/cache/options.rb
|
60
|
+
- lib/rack/cache/request.rb
|
61
|
+
- lib/rack/cache/response.rb
|
62
|
+
- lib/rack/cache/storage.rb
|
63
|
+
- rack-cache.gemspec
|
64
|
+
- test/cache_test.rb
|
65
|
+
- test/cachecontrol_test.rb
|
66
|
+
- test/context_test.rb
|
67
|
+
- test/entitystore_test.rb
|
68
|
+
- test/key_test.rb
|
69
|
+
- test/metastore_test.rb
|
70
|
+
- test/options_test.rb
|
71
|
+
- test/pony.jpg
|
72
|
+
- test/request_test.rb
|
73
|
+
- test/response_test.rb
|
74
|
+
- test/spec_setup.rb
|
75
|
+
- test/storage_test.rb
|
76
|
+
has_rdoc: true
|
77
|
+
homepage: http://tomayko.com/src/rack-cache/
|
78
|
+
licenses:
|
79
|
+
post_install_message:
|
80
|
+
rdoc_options:
|
81
|
+
- --line-numbers
|
82
|
+
- --inline-source
|
83
|
+
- --title
|
84
|
+
- Rack::Cache
|
85
|
+
- --main
|
86
|
+
- Rack::Cache
|
87
|
+
require_paths:
|
88
|
+
- lib
|
89
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: "0"
|
94
|
+
version:
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: "0"
|
100
|
+
version:
|
101
|
+
requirements: []
|
102
|
+
|
103
|
+
rubyforge_project: wink
|
104
|
+
rubygems_version: 1.3.5
|
105
|
+
signing_key:
|
106
|
+
specification_version: 2
|
107
|
+
summary: HTTP Caching for Rack
|
108
|
+
test_files:
|
109
|
+
- test/cache_test.rb
|
110
|
+
- test/cachecontrol_test.rb
|
111
|
+
- test/context_test.rb
|
112
|
+
- test/entitystore_test.rb
|
113
|
+
- test/key_test.rb
|
114
|
+
- test/metastore_test.rb
|
115
|
+
- test/options_test.rb
|
116
|
+
- test/request_test.rb
|
117
|
+
- test/response_test.rb
|
118
|
+
- test/storage_test.rb
|