eac-rack 1.1.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.
Files changed (111) hide show
  1. data/COPYING +18 -0
  2. data/KNOWN-ISSUES +21 -0
  3. data/README +399 -0
  4. data/bin/rackup +4 -0
  5. data/contrib/rack_logo.svg +111 -0
  6. data/example/lobster.ru +4 -0
  7. data/example/protectedlobster.rb +14 -0
  8. data/example/protectedlobster.ru +8 -0
  9. data/lib/rack.rb +92 -0
  10. data/lib/rack/adapter/camping.rb +22 -0
  11. data/lib/rack/auth/abstract/handler.rb +37 -0
  12. data/lib/rack/auth/abstract/request.rb +37 -0
  13. data/lib/rack/auth/basic.rb +58 -0
  14. data/lib/rack/auth/digest/md5.rb +124 -0
  15. data/lib/rack/auth/digest/nonce.rb +51 -0
  16. data/lib/rack/auth/digest/params.rb +55 -0
  17. data/lib/rack/auth/digest/request.rb +40 -0
  18. data/lib/rack/builder.rb +80 -0
  19. data/lib/rack/cascade.rb +41 -0
  20. data/lib/rack/chunked.rb +49 -0
  21. data/lib/rack/commonlogger.rb +49 -0
  22. data/lib/rack/conditionalget.rb +47 -0
  23. data/lib/rack/config.rb +15 -0
  24. data/lib/rack/content_length.rb +29 -0
  25. data/lib/rack/content_type.rb +23 -0
  26. data/lib/rack/deflater.rb +96 -0
  27. data/lib/rack/directory.rb +157 -0
  28. data/lib/rack/etag.rb +23 -0
  29. data/lib/rack/file.rb +90 -0
  30. data/lib/rack/handler.rb +88 -0
  31. data/lib/rack/handler/cgi.rb +61 -0
  32. data/lib/rack/handler/evented_mongrel.rb +8 -0
  33. data/lib/rack/handler/fastcgi.rb +89 -0
  34. data/lib/rack/handler/lsws.rb +63 -0
  35. data/lib/rack/handler/mongrel.rb +90 -0
  36. data/lib/rack/handler/scgi.rb +62 -0
  37. data/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
  38. data/lib/rack/handler/thin.rb +18 -0
  39. data/lib/rack/handler/webrick.rb +69 -0
  40. data/lib/rack/head.rb +19 -0
  41. data/lib/rack/lint.rb +575 -0
  42. data/lib/rack/lobster.rb +65 -0
  43. data/lib/rack/lock.rb +16 -0
  44. data/lib/rack/logger.rb +20 -0
  45. data/lib/rack/methodoverride.rb +27 -0
  46. data/lib/rack/mime.rb +206 -0
  47. data/lib/rack/mock.rb +189 -0
  48. data/lib/rack/nulllogger.rb +18 -0
  49. data/lib/rack/recursive.rb +57 -0
  50. data/lib/rack/reloader.rb +109 -0
  51. data/lib/rack/request.rb +271 -0
  52. data/lib/rack/response.rb +149 -0
  53. data/lib/rack/rewindable_input.rb +100 -0
  54. data/lib/rack/runtime.rb +27 -0
  55. data/lib/rack/sendfile.rb +142 -0
  56. data/lib/rack/server.rb +212 -0
  57. data/lib/rack/session/abstract/id.rb +140 -0
  58. data/lib/rack/session/cookie.rb +90 -0
  59. data/lib/rack/session/memcache.rb +119 -0
  60. data/lib/rack/session/pool.rb +100 -0
  61. data/lib/rack/showexceptions.rb +349 -0
  62. data/lib/rack/showstatus.rb +106 -0
  63. data/lib/rack/static.rb +38 -0
  64. data/lib/rack/urlmap.rb +56 -0
  65. data/lib/rack/utils.rb +614 -0
  66. data/rack.gemspec +38 -0
  67. data/test/spec_rack_auth_basic.rb +73 -0
  68. data/test/spec_rack_auth_digest.rb +226 -0
  69. data/test/spec_rack_builder.rb +84 -0
  70. data/test/spec_rack_camping.rb +51 -0
  71. data/test/spec_rack_cascade.rb +48 -0
  72. data/test/spec_rack_cgi.rb +89 -0
  73. data/test/spec_rack_chunked.rb +62 -0
  74. data/test/spec_rack_commonlogger.rb +61 -0
  75. data/test/spec_rack_conditionalget.rb +41 -0
  76. data/test/spec_rack_config.rb +24 -0
  77. data/test/spec_rack_content_length.rb +43 -0
  78. data/test/spec_rack_content_type.rb +30 -0
  79. data/test/spec_rack_deflater.rb +127 -0
  80. data/test/spec_rack_directory.rb +61 -0
  81. data/test/spec_rack_etag.rb +17 -0
  82. data/test/spec_rack_fastcgi.rb +89 -0
  83. data/test/spec_rack_file.rb +75 -0
  84. data/test/spec_rack_handler.rb +43 -0
  85. data/test/spec_rack_head.rb +30 -0
  86. data/test/spec_rack_lint.rb +528 -0
  87. data/test/spec_rack_lobster.rb +45 -0
  88. data/test/spec_rack_lock.rb +38 -0
  89. data/test/spec_rack_logger.rb +21 -0
  90. data/test/spec_rack_methodoverride.rb +60 -0
  91. data/test/spec_rack_mock.rb +243 -0
  92. data/test/spec_rack_mongrel.rb +189 -0
  93. data/test/spec_rack_nulllogger.rb +13 -0
  94. data/test/spec_rack_recursive.rb +77 -0
  95. data/test/spec_rack_request.rb +545 -0
  96. data/test/spec_rack_response.rb +221 -0
  97. data/test/spec_rack_rewindable_input.rb +118 -0
  98. data/test/spec_rack_runtime.rb +35 -0
  99. data/test/spec_rack_sendfile.rb +86 -0
  100. data/test/spec_rack_session_cookie.rb +73 -0
  101. data/test/spec_rack_session_memcache.rb +273 -0
  102. data/test/spec_rack_session_pool.rb +172 -0
  103. data/test/spec_rack_showexceptions.rb +21 -0
  104. data/test/spec_rack_showstatus.rb +72 -0
  105. data/test/spec_rack_static.rb +37 -0
  106. data/test/spec_rack_thin.rb +91 -0
  107. data/test/spec_rack_urlmap.rb +215 -0
  108. data/test/spec_rack_utils.rb +554 -0
  109. data/test/spec_rack_webrick.rb +130 -0
  110. data/test/spec_rackup.rb +154 -0
  111. metadata +311 -0
@@ -0,0 +1,130 @@
1
+ require 'test/spec'
2
+
3
+ require 'rack/handler/webrick'
4
+ require 'rack/lint'
5
+ require 'rack/response'
6
+ require 'testrequest'
7
+
8
+ Thread.abort_on_exception = true
9
+
10
+ context "Rack::Handler::WEBrick" do
11
+ include TestRequest::Helpers
12
+
13
+ setup do
14
+ @server = WEBrick::HTTPServer.new(:Host => @host='0.0.0.0',
15
+ :Port => @port=9202,
16
+ :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN),
17
+ :AccessLog => [])
18
+ @server.mount "/test", Rack::Handler::WEBrick,
19
+ Rack::Lint.new(TestRequest.new)
20
+ Thread.new { @server.start }
21
+ trap(:INT) { @server.shutdown }
22
+ end
23
+
24
+ specify "should respond" do
25
+ lambda {
26
+ GET("/test")
27
+ }.should.not.raise
28
+ end
29
+
30
+ specify "should be a WEBrick" do
31
+ GET("/test")
32
+ status.should.be 200
33
+ response["SERVER_SOFTWARE"].should =~ /WEBrick/
34
+ response["HTTP_VERSION"].should.equal "HTTP/1.1"
35
+ response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
36
+ response["SERVER_PORT"].should.equal "9202"
37
+ response["SERVER_NAME"].should.equal "0.0.0.0"
38
+ end
39
+
40
+ specify "should have rack headers" do
41
+ GET("/test")
42
+ response["rack.version"].should.equal [1,1]
43
+ response["rack.multithread"].should.be true
44
+ response["rack.multiprocess"].should.be false
45
+ response["rack.run_once"].should.be false
46
+ end
47
+
48
+ specify "should have CGI headers on GET" do
49
+ GET("/test")
50
+ response["REQUEST_METHOD"].should.equal "GET"
51
+ response["SCRIPT_NAME"].should.equal "/test"
52
+ response["REQUEST_PATH"].should.equal "/"
53
+ response["PATH_INFO"].should.be.equal ""
54
+ response["QUERY_STRING"].should.equal ""
55
+ response["test.postdata"].should.equal ""
56
+
57
+ GET("/test/foo?quux=1")
58
+ response["REQUEST_METHOD"].should.equal "GET"
59
+ response["SCRIPT_NAME"].should.equal "/test"
60
+ response["REQUEST_PATH"].should.equal "/"
61
+ response["PATH_INFO"].should.equal "/foo"
62
+ response["QUERY_STRING"].should.equal "quux=1"
63
+
64
+ GET("/test/foo%25encoding?quux=1")
65
+ response["REQUEST_METHOD"].should.equal "GET"
66
+ response["SCRIPT_NAME"].should.equal "/test"
67
+ response["REQUEST_PATH"].should.equal "/"
68
+ response["PATH_INFO"].should.equal "/foo%25encoding"
69
+ response["QUERY_STRING"].should.equal "quux=1"
70
+ end
71
+
72
+ specify "should have CGI headers on POST" do
73
+ POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
74
+ status.should.equal 200
75
+ response["REQUEST_METHOD"].should.equal "POST"
76
+ response["SCRIPT_NAME"].should.equal "/test"
77
+ response["REQUEST_PATH"].should.equal "/"
78
+ response["QUERY_STRING"].should.equal ""
79
+ response["HTTP_X_TEST_HEADER"].should.equal "42"
80
+ response["test.postdata"].should.equal "rack-form-data=23"
81
+ end
82
+
83
+ specify "should support HTTP auth" do
84
+ GET("/test", {:user => "ruth", :passwd => "secret"})
85
+ response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
86
+ end
87
+
88
+ specify "should set status" do
89
+ GET("/test?secret")
90
+ status.should.equal 403
91
+ response["rack.url_scheme"].should.equal "http"
92
+ end
93
+
94
+ specify "should correctly set cookies" do
95
+ @server.mount "/cookie-test", Rack::Handler::WEBrick,
96
+ Rack::Lint.new(lambda { |req|
97
+ res = Rack::Response.new
98
+ res.set_cookie "one", "1"
99
+ res.set_cookie "two", "2"
100
+ res.finish
101
+ })
102
+
103
+ Net::HTTP.start(@host, @port) { |http|
104
+ res = http.get("/cookie-test")
105
+ res.code.to_i.should.equal 200
106
+ res.get_fields("set-cookie").should.equal ["one=1", "two=2"]
107
+ }
108
+ end
109
+
110
+ specify "should provide a .run" do
111
+ block_ran = false
112
+ catch(:done) {
113
+ Rack::Handler::WEBrick.run(lambda {},
114
+ {:Port => 9210,
115
+ :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN),
116
+ :AccessLog => []}) { |server|
117
+ block_ran = true
118
+ server.should.be.kind_of WEBrick::HTTPServer
119
+ @s = server
120
+ throw :done
121
+ }
122
+ }
123
+ block_ran.should.be true
124
+ @s.shutdown
125
+ end
126
+
127
+ teardown do
128
+ @server.shutdown
129
+ end
130
+ end
@@ -0,0 +1,154 @@
1
+ require 'test/spec'
2
+ require 'testrequest'
3
+ require 'rack/server'
4
+ require 'open3'
5
+
6
+ begin
7
+ require "mongrel"
8
+
9
+ context "rackup" do
10
+ include TestRequest::Helpers
11
+
12
+ def run_rackup(*args)
13
+ options = args.last.is_a?(Hash) ? args.pop : {}
14
+ flags = args.first
15
+ @host = options[:host] || "0.0.0.0"
16
+ @port = options[:port] || 9292
17
+
18
+ Dir.chdir("#{root}/test/rackup") do
19
+ @in, @rackup, @err = Open3.popen3("#{Gem.ruby} -S #{rackup} #{flags}")
20
+ end
21
+
22
+ return if options[:port] == false
23
+
24
+ # Wait until the server is available
25
+ begin
26
+ GET("/")
27
+ rescue
28
+ sleep 0.05
29
+ retry
30
+ end
31
+ end
32
+
33
+ def output
34
+ @rackup.read
35
+ end
36
+
37
+ after do
38
+ # This doesn't actually return a response, so we rescue
39
+ GET "/die" rescue nil
40
+
41
+ Dir["#{root}/**/*.pid"].each do |file|
42
+ File.delete(file)
43
+ end
44
+
45
+ File.delete("#{root}/log_output") if File.exist?("#{root}/log_output")
46
+ end
47
+
48
+ specify "rackup" do
49
+ run_rackup
50
+ response["PATH_INFO"].should.equal '/'
51
+ response["test.$DEBUG"].should.be false
52
+ response["test.$EVAL"].should.be nil
53
+ response["test.$VERBOSE"].should.be false
54
+ response["test.Ping"].should.be nil
55
+ response["SERVER_SOFTWARE"].should.not =~ /webrick/
56
+ end
57
+
58
+ specify "rackup --help" do
59
+ run_rackup "--help", :port => false
60
+ output.should.match /--port/
61
+ end
62
+
63
+ specify "rackup --port" do
64
+ run_rackup "--port 9000", :port => 9000
65
+ response["SERVER_PORT"].should.equal "9000"
66
+ end
67
+
68
+ specify "rackup --debug" do
69
+ run_rackup "--debug"
70
+ response["test.$DEBUG"].should.be true
71
+ end
72
+
73
+ specify "rackup --eval" do
74
+ run_rackup %{--eval "BUKKIT = 'BUKKIT'"}
75
+ response["test.$EVAL"].should.equal "BUKKIT"
76
+ end
77
+
78
+ specify "rackup --warn" do
79
+ run_rackup %{--warn}
80
+ response["test.$VERBOSE"].should.be true
81
+ end
82
+
83
+ specify "rackup --include" do
84
+ run_rackup %{--include /foo/bar}
85
+ response["test.$LOAD_PATH"].should.include "/foo/bar"
86
+ end
87
+
88
+ specify "rackup --require" do
89
+ run_rackup %{--require ping}
90
+ response["test.Ping"].should.equal "constant"
91
+ end
92
+
93
+ specify "rackup --server" do
94
+ run_rackup %{--server webrick}
95
+ response["SERVER_SOFTWARE"].should =~ /webrick/i
96
+ end
97
+
98
+ specify "rackup --host" do
99
+ run_rackup %{--host 127.0.0.1}, :host => "127.0.0.1"
100
+ response["REMOTE_ADDR"].should.equal "127.0.0.1"
101
+ end
102
+
103
+ specify "rackup --daemonize --pid" do
104
+ run_rackup %{--daemonize --pid testing.pid}
105
+ status.should.be 200
106
+ @rackup.should.be.eof?
107
+ Dir["#{root}/**/testing.pid"].should.not.be.empty?
108
+ end
109
+
110
+ specify "rackup --pid" do
111
+ run_rackup %{--pid testing.pid}
112
+ status.should.be 200
113
+ Dir["#{root}/**/testing.pid"].should.not.be.empty?
114
+ end
115
+
116
+ specify "rackup --version" do
117
+ run_rackup %{--version}, :port => false
118
+ output.should =~ /1.0/
119
+ end
120
+
121
+ specify "rackup --env development includes lint" do
122
+ run_rackup
123
+ GET("/broken_lint")
124
+ status.should.be 500
125
+ end
126
+
127
+ specify "rackup --env deployment does not include lint" do
128
+ run_rackup %{--env deployment}
129
+ GET("/broken_lint")
130
+ status.should.be 200
131
+ end
132
+
133
+ specify "rackup --env none does not include lint" do
134
+ run_rackup %{--env none}
135
+ GET("/broken_lint")
136
+ status.should.be 200
137
+ end
138
+
139
+ specify "rackup --env deployment does log" do
140
+ run_rackup %{--env deployment}
141
+ log = File.read(response["test.stderr"])
142
+ log.should.be.empty?
143
+ end
144
+
145
+ specify "rackup --env none does not log" do
146
+ run_rackup %{--env none}
147
+ GET("/")
148
+ log = File.read(response["test.stderr"])
149
+ log.should.be.empty?
150
+ end
151
+ end
152
+ rescue LoadError
153
+ $stderr.puts "Skipping rackup --server tests (mongrel is required). `gem install thin` and try again."
154
+ end
metadata ADDED
@@ -0,0 +1,311 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eac-rack
3
+ version: !ruby/object:Gem::Version
4
+ hash: 17
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 1
9
+ - 1
10
+ version: 1.1.1
11
+ platform: ruby
12
+ authors:
13
+ - Christian Neukirchen
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-08-31 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: test-spec
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: camping
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: fcgi
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: memcache-client
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :development
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: mongrel
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ hash: 3
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ type: :development
90
+ version_requirements: *id005
91
+ - !ruby/object:Gem::Dependency
92
+ name: thin
93
+ prerelease: false
94
+ requirement: &id006 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
102
+ version: "0"
103
+ type: :development
104
+ version_requirements: *id006
105
+ description: |
106
+ Rack provides minimal, modular and adaptable interface for developing
107
+ web applications in Ruby. By wrapping HTTP requests and responses in
108
+ the simplest way possible, it unifies and distills the API for web
109
+ servers, web frameworks, and software in between (the so-called
110
+ middleware) into a single method call.
111
+
112
+ Also see http://rack.rubyforge.org.
113
+
114
+ email: chneukirchen@gmail.com
115
+ executables:
116
+ - rackup
117
+ extensions: []
118
+
119
+ extra_rdoc_files:
120
+ - README
121
+ - KNOWN-ISSUES
122
+ files:
123
+ - bin/rackup
124
+ - contrib/rack_logo.svg
125
+ - example/lobster.ru
126
+ - example/protectedlobster.rb
127
+ - example/protectedlobster.ru
128
+ - lib/rack/adapter/camping.rb
129
+ - lib/rack/auth/abstract/handler.rb
130
+ - lib/rack/auth/abstract/request.rb
131
+ - lib/rack/auth/basic.rb
132
+ - lib/rack/auth/digest/md5.rb
133
+ - lib/rack/auth/digest/nonce.rb
134
+ - lib/rack/auth/digest/params.rb
135
+ - lib/rack/auth/digest/request.rb
136
+ - lib/rack/builder.rb
137
+ - lib/rack/cascade.rb
138
+ - lib/rack/chunked.rb
139
+ - lib/rack/commonlogger.rb
140
+ - lib/rack/conditionalget.rb
141
+ - lib/rack/config.rb
142
+ - lib/rack/content_length.rb
143
+ - lib/rack/content_type.rb
144
+ - lib/rack/deflater.rb
145
+ - lib/rack/directory.rb
146
+ - lib/rack/etag.rb
147
+ - lib/rack/file.rb
148
+ - lib/rack/handler/cgi.rb
149
+ - lib/rack/handler/evented_mongrel.rb
150
+ - lib/rack/handler/fastcgi.rb
151
+ - lib/rack/handler/lsws.rb
152
+ - lib/rack/handler/mongrel.rb
153
+ - lib/rack/handler/scgi.rb
154
+ - lib/rack/handler/swiftiplied_mongrel.rb
155
+ - lib/rack/handler/thin.rb
156
+ - lib/rack/handler/webrick.rb
157
+ - lib/rack/handler.rb
158
+ - lib/rack/head.rb
159
+ - lib/rack/lint.rb
160
+ - lib/rack/lobster.rb
161
+ - lib/rack/lock.rb
162
+ - lib/rack/logger.rb
163
+ - lib/rack/methodoverride.rb
164
+ - lib/rack/mime.rb
165
+ - lib/rack/mock.rb
166
+ - lib/rack/nulllogger.rb
167
+ - lib/rack/recursive.rb
168
+ - lib/rack/reloader.rb
169
+ - lib/rack/request.rb
170
+ - lib/rack/response.rb
171
+ - lib/rack/rewindable_input.rb
172
+ - lib/rack/runtime.rb
173
+ - lib/rack/sendfile.rb
174
+ - lib/rack/server.rb
175
+ - lib/rack/session/abstract/id.rb
176
+ - lib/rack/session/cookie.rb
177
+ - lib/rack/session/memcache.rb
178
+ - lib/rack/session/pool.rb
179
+ - lib/rack/showexceptions.rb
180
+ - lib/rack/showstatus.rb
181
+ - lib/rack/static.rb
182
+ - lib/rack/urlmap.rb
183
+ - lib/rack/utils.rb
184
+ - lib/rack.rb
185
+ - COPYING
186
+ - KNOWN-ISSUES
187
+ - rack.gemspec
188
+ - README
189
+ - test/spec_rack_auth_basic.rb
190
+ - test/spec_rack_auth_digest.rb
191
+ - test/spec_rack_builder.rb
192
+ - test/spec_rack_camping.rb
193
+ - test/spec_rack_cascade.rb
194
+ - test/spec_rack_cgi.rb
195
+ - test/spec_rack_chunked.rb
196
+ - test/spec_rack_commonlogger.rb
197
+ - test/spec_rack_conditionalget.rb
198
+ - test/spec_rack_config.rb
199
+ - test/spec_rack_content_length.rb
200
+ - test/spec_rack_content_type.rb
201
+ - test/spec_rack_deflater.rb
202
+ - test/spec_rack_directory.rb
203
+ - test/spec_rack_etag.rb
204
+ - test/spec_rack_fastcgi.rb
205
+ - test/spec_rack_file.rb
206
+ - test/spec_rack_handler.rb
207
+ - test/spec_rack_head.rb
208
+ - test/spec_rack_lint.rb
209
+ - test/spec_rack_lobster.rb
210
+ - test/spec_rack_lock.rb
211
+ - test/spec_rack_logger.rb
212
+ - test/spec_rack_methodoverride.rb
213
+ - test/spec_rack_mock.rb
214
+ - test/spec_rack_mongrel.rb
215
+ - test/spec_rack_nulllogger.rb
216
+ - test/spec_rack_recursive.rb
217
+ - test/spec_rack_request.rb
218
+ - test/spec_rack_response.rb
219
+ - test/spec_rack_rewindable_input.rb
220
+ - test/spec_rack_runtime.rb
221
+ - test/spec_rack_sendfile.rb
222
+ - test/spec_rack_session_cookie.rb
223
+ - test/spec_rack_session_memcache.rb
224
+ - test/spec_rack_session_pool.rb
225
+ - test/spec_rack_showexceptions.rb
226
+ - test/spec_rack_showstatus.rb
227
+ - test/spec_rack_static.rb
228
+ - test/spec_rack_thin.rb
229
+ - test/spec_rack_urlmap.rb
230
+ - test/spec_rack_utils.rb
231
+ - test/spec_rack_webrick.rb
232
+ - test/spec_rackup.rb
233
+ has_rdoc: true
234
+ homepage: http://rack.rubyforge.org
235
+ licenses: []
236
+
237
+ post_install_message:
238
+ rdoc_options: []
239
+
240
+ require_paths:
241
+ - lib
242
+ required_ruby_version: !ruby/object:Gem::Requirement
243
+ none: false
244
+ requirements:
245
+ - - ">="
246
+ - !ruby/object:Gem::Version
247
+ hash: 3
248
+ segments:
249
+ - 0
250
+ version: "0"
251
+ required_rubygems_version: !ruby/object:Gem::Requirement
252
+ none: false
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ hash: 3
257
+ segments:
258
+ - 0
259
+ version: "0"
260
+ requirements: []
261
+
262
+ rubyforge_project:
263
+ rubygems_version: 1.3.7
264
+ signing_key:
265
+ specification_version: 3
266
+ summary: a modular Ruby webserver interface
267
+ test_files:
268
+ - test/spec_rack_auth_basic.rb
269
+ - test/spec_rack_auth_digest.rb
270
+ - test/spec_rack_builder.rb
271
+ - test/spec_rack_camping.rb
272
+ - test/spec_rack_cascade.rb
273
+ - test/spec_rack_cgi.rb
274
+ - test/spec_rack_chunked.rb
275
+ - test/spec_rack_commonlogger.rb
276
+ - test/spec_rack_conditionalget.rb
277
+ - test/spec_rack_config.rb
278
+ - test/spec_rack_content_length.rb
279
+ - test/spec_rack_content_type.rb
280
+ - test/spec_rack_deflater.rb
281
+ - test/spec_rack_directory.rb
282
+ - test/spec_rack_etag.rb
283
+ - test/spec_rack_fastcgi.rb
284
+ - test/spec_rack_file.rb
285
+ - test/spec_rack_handler.rb
286
+ - test/spec_rack_head.rb
287
+ - test/spec_rack_lint.rb
288
+ - test/spec_rack_lobster.rb
289
+ - test/spec_rack_lock.rb
290
+ - test/spec_rack_logger.rb
291
+ - test/spec_rack_methodoverride.rb
292
+ - test/spec_rack_mock.rb
293
+ - test/spec_rack_mongrel.rb
294
+ - test/spec_rack_nulllogger.rb
295
+ - test/spec_rack_recursive.rb
296
+ - test/spec_rack_request.rb
297
+ - test/spec_rack_response.rb
298
+ - test/spec_rack_rewindable_input.rb
299
+ - test/spec_rack_runtime.rb
300
+ - test/spec_rack_sendfile.rb
301
+ - test/spec_rack_session_cookie.rb
302
+ - test/spec_rack_session_memcache.rb
303
+ - test/spec_rack_session_pool.rb
304
+ - test/spec_rack_showexceptions.rb
305
+ - test/spec_rack_showstatus.rb
306
+ - test/spec_rack_static.rb
307
+ - test/spec_rack_thin.rb
308
+ - test/spec_rack_urlmap.rb
309
+ - test/spec_rack_utils.rb
310
+ - test/spec_rack_webrick.rb
311
+ - test/spec_rackup.rb