eac-rack 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
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