Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 447 lines (362 sloc) 15.984 kB
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
1 = Rack, a modular Ruby webserver interface
2
ed4bba8 @chneukirchen Fix things that should have been fixed before the release *sigh*
chneukirchen authored
3 Rack provides a minimal, modular and adaptable interface for developing
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
4 web applications in Ruby. By wrapping HTTP requests and responses in
5 the simplest way possible, it unifies and distills the API for web
9bcca54 @chneukirchen Small README fixes
chneukirchen authored
6 servers, web frameworks, and software in between (the so-called
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
7 middleware) into a single method call.
8
9 The exact details of this are described in the Rack specification,
10 which all Rack applications should conform to.
11
12 == Supported web servers
13
14 The included *handlers* connect all kinds of web servers to Rack:
15 * Mongrel
e6c77df @chneukirchen Merge 'josh/rack-mirror'
chneukirchen authored
16 * EventedMongrel
0ae1246 @chneukirchen Update emongrel and add swiftiplied mongrel
chneukirchen authored
17 * SwiftipliedMongrel
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
18 * WEBrick
19 * FCGI
20 * CGI
dcb6081 @chneukirchen Update README and docs
chneukirchen authored
21 * SCGI
22 * LiteSpeed
1266337 @chneukirchen Update README
chneukirchen authored
23 * Thin
dcb6081 @chneukirchen Update README and docs
chneukirchen authored
24
25 These web servers include Rack handlers in their distributions:
26 * Ebb
27 * Fuzed
7901d91 @chneukirchen Update web server list in README
chneukirchen authored
28 * Glassfish v3
7637dab @chneukirchen Update README
chneukirchen authored
29 * Phusion Passenger (which is mod_rack for Apache and for nginx)
c145b9a @tenderlove Revert "Add handlers for Unicorn, Rainbows! and Zbatery"
tenderlove authored
30 * Rainbows!
31 * Unicorn
32 * Zbatery
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
33
34 Any valid Rack app will run the same on all these handlers, without
35 changing anything.
36
37 == Supported web frameworks
38
39 These frameworks include Rack adapters in their distributions:
7637dab @chneukirchen Update README
chneukirchen authored
40 * Camping
dcb6081 @chneukirchen Update README and docs
chneukirchen authored
41 * Coset
42 * Halcyon
eed24a7 @chneukirchen Update README
chneukirchen authored
43 * Mack
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
44 * Maveric
dcb6081 @chneukirchen Update README and docs
chneukirchen authored
45 * Merb
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
46 * Racktools::SimpleApplication
dcb6081 @chneukirchen Update README and docs
chneukirchen authored
47 * Ramaze
1266337 @chneukirchen Update README
chneukirchen authored
48 * Ruby on Rails
7637dab @chneukirchen Update README
chneukirchen authored
49 * Rum
dcb6081 @chneukirchen Update README and docs
chneukirchen authored
50 * Sinatra
1266337 @chneukirchen Update README
chneukirchen authored
51 * Sin
dcb6081 @chneukirchen Update README and docs
chneukirchen authored
52 * Vintage
e9f9f27 @chneukirchen Improve test documentation
chneukirchen authored
53 * Waves
7637dab @chneukirchen Update README
chneukirchen authored
54 * Wee
4e95fe1 @chneukirchen Update README
chneukirchen authored
55 * ... and many others.
dcb6081 @chneukirchen Update README and docs
chneukirchen authored
56
57 Current links to these projects can be found at
7637dab @chneukirchen Update README
chneukirchen authored
58 http://wiki.ramaze.net/Home#other-frameworks
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
59
60 == Available middleware
61
62 Between the server and the framework, Rack can be customized to your
63 applications needs using middleware, for example:
64 * Rack::URLMap, to route to multiple applications inside the same process.
253cb49 @chneukirchen Last-minute details
chneukirchen authored
65 * Rack::CommonLogger, for creating Apache-style logfiles.
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
66 * Rack::ShowException, for catching unhandled exceptions and
253cb49 @chneukirchen Last-minute details
chneukirchen authored
67 presenting them in a nice and helpful way with clickable backtrace.
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
68 * Rack::File, for serving static files.
dcb6081 @chneukirchen Update README and docs
chneukirchen authored
69 * ...many others!
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
70
71 All these components use the same interface, which is described in
eed24a7 @chneukirchen Update README
chneukirchen authored
72 detail in the Rack specification. These optional components can be
73 used in any way you wish.
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
74
75 == Convenience
76
77 If you want to develop outside of existing frameworks, implement your
78 own ones, or develop middleware, Rack provides many helpers to create
79 Rack applications quickly and without doing the same web stuff all
80 over:
81 * Rack::Request, which also provides query string parsing and
82 multipart handling.
83 * Rack::Response, for convenient generation of HTTP replies and
84 cookie handling.
85 * Rack::MockRequest and Rack::MockResponse for efficient and quick
9bcca54 @chneukirchen Small README fixes
chneukirchen authored
86 testing of Rack application without real HTTP round-trips.
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
87
0b601c5 @chneukirchen Update README
chneukirchen authored
88 == rack-contrib
89
90 The plethora of useful middleware created the need for a project that
91 collects fresh Rack middleware. rack-contrib includes a variety of
3568c0d @chneukirchen Last minute README fixes
chneukirchen authored
92 add-on components for Rack and it is easy to contribute new modules.
0b601c5 @chneukirchen Update README
chneukirchen authored
93
94 * http://github.com/rack/rack-contrib
95
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
96 == rackup
97
98 rackup is a useful tool for running Rack applications, which uses the
99 Rack::Builder DSL to configure middleware and build up applications
100 easily.
101
102 rackup automatically figures out the environment it is run in, and
103 runs your application as FastCGI, CGI, or standalone with Mongrel or
104 WEBrick---all from the same configuration.
105
106 == Quick start
107
108 Try the lobster!
109
110 Either with the embedded WEBrick starter:
111
e256ec6 @chneukirchen Update README
chneukirchen authored
112 ruby -Ilib lib/rack/lobster.rb
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
113
114 Or with rackup:
115
d4906ef @josh Tell people to report bugs to lighthouse
josh authored
116 bin/rackup -Ilib example/lobster.ru
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
117
118 By default, the lobster is found at http://localhost:9292.
119
120 == Installing with RubyGems
121
b6e61e3 @raggi Update links and correct a spelling error
raggi authored
122 A Gem of Rack is available at rubygems.org. You can install it with:
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
123
124 gem install rack
125
126 I also provide a local mirror of the gems (and development snapshots)
127 at my site:
128
d894ded @chneukirchen Add trailing slash to the alternative gem server
chneukirchen authored
129 gem install rack --source http://chneukirchen.org/releases/gems/
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
130
540dc3f @chneukirchen Changes to get lighttpd setup and running when rake fulltest is run; …
chneukirchen authored
131 == Running the tests
132
7e5d611 @chneukirchen Last README updates
chneukirchen authored
133 Testing Rack requires the bacon testing framework:
540dc3f @chneukirchen Changes to get lighttpd setup and running when rake fulltest is run; …
chneukirchen authored
134
7e5d611 @chneukirchen Last README updates
chneukirchen authored
135 gem install bacon
540dc3f @chneukirchen Changes to get lighttpd setup and running when rake fulltest is run; …
chneukirchen authored
136
e9f9f27 @chneukirchen Improve test documentation
chneukirchen authored
137 There are two rake-based test tasks:
138
139 rake test tests all the fast tests (no Handlers or Adapters)
140 rake fulltest runs all the tests
141
142 The fast testsuite has no dependencies outside of the core Ruby
7e5d611 @chneukirchen Last README updates
chneukirchen authored
143 installation and bacon.
e9f9f27 @chneukirchen Improve test documentation
chneukirchen authored
144
eed24a7 @chneukirchen Update README
chneukirchen authored
145 To run the test suite completely, you need:
e9f9f27 @chneukirchen Improve test documentation
chneukirchen authored
146
147 * fcgi
148 * memcache-client
7637dab @chneukirchen Update README
chneukirchen authored
149 * mongrel
150 * thin
e9f9f27 @chneukirchen Improve test documentation
chneukirchen authored
151
152 The full set of tests test FCGI access with lighttpd (on port
153 9203) so you will need lighttpd installed as well as the FCGI
154 libraries and the fcgi gem:
540dc3f @chneukirchen Changes to get lighttpd setup and running when rake fulltest is run; …
chneukirchen authored
155
156 Download and install lighttpd:
157
158 http://www.lighttpd.net/download
159
160 Installing the FCGI libraries:
161
162 curl -O http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
163 tar xzvf fcgi-2.4.0.tar.gz
164 cd fcgi-2.4.0
165 ./configure --prefix=/usr/local
166 make
167 sudo make install
168 cd ..
169
170 Installing the Ruby fcgi gem:
171
172 gem install fcgi
173
e9f9f27 @chneukirchen Improve test documentation
chneukirchen authored
174 Furthermore, to test Memcache sessions, you need memcached (will be
175 run on port 11211) and memcache-client installed.
540dc3f @chneukirchen Changes to get lighttpd setup and running when rake fulltest is run; …
chneukirchen authored
176
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
177 == History
178
179 * March 3rd, 2007: First public release 0.1.
180
e256ec6 @chneukirchen Update README
chneukirchen authored
181 * May 16th, 2007: Second public release 0.2.
e5fa2f9 @chneukirchen Integrate patches
chneukirchen authored
182 * HTTP Basic authentication.
cb306d7 @chneukirchen Fix Rack::Session::Cookie
chneukirchen authored
183 * Cookie Sessions.
e276c2d @chneukirchen Integrate Rack::Static
chneukirchen authored
184 * Static file handler.
e256ec6 @chneukirchen Update README
chneukirchen authored
185 * Improved Rack::Request.
186 * Improved Rack::Response.
187 * Added Rack::ShowStatus, for better default error messages.
188 * Bug fixes in the Camping adapter.
189 * Removed Rails adapter, was too alpha.
e5fa2f9 @chneukirchen Integrate patches
chneukirchen authored
190
dcb6081 @chneukirchen Update README and docs
chneukirchen authored
191 * February 26th, 2008: Third public release 0.3.
cdab8c7 @chneukirchen Add LiteSpeed handler
chneukirchen authored
192 * LiteSpeed handler, by Adrian Madrid.
4610a60 @chneukirchen Add SCGI handler, by Jeremy Evans
chneukirchen authored
193 * SCGI handler, by Jeremy Evans.
6908a8f @chneukirchen Update AUTHORS and thanks
chneukirchen authored
194 * Pool sessions, by blink.
d2cdb24 @chneukirchen Minor tweaks in blink's code
chneukirchen authored
195 * OpenID authentication, by blink.
196 * :Port and :File options for opening FastCGI sockets, by blink.
197 * Last-Modified HTTP header for Rack::File, by blink.
dcb6081 @chneukirchen Update README and docs
chneukirchen authored
198 * Rack::Builder#use now accepts blocks, by Corey Jewett.
199 (See example/protectedlobster.ru)
200 * HTTP status 201 can contain a Content-Type and a body now.
201 * Many bugfixes, especially related to Cookie handling.
cdab8c7 @chneukirchen Add LiteSpeed handler
chneukirchen authored
202
ec20b05 @chneukirchen Cosmetics
chneukirchen authored
203 * August 21st, 2008: Fourth public release 0.4.
eed24a7 @chneukirchen Update README
chneukirchen authored
204 * New middleware, Rack::Deflater, by Christoffer Sawicki.
205 * OpenID authentication now needs ruby-openid 2.
a9665a0 @chneukirchen Run Rack::Session::Memcache tests in fulltest only
chneukirchen authored
206 * New Memcache sessions, by blink.
eed24a7 @chneukirchen Update README
chneukirchen authored
207 * Explicit EventedMongrel handler, by Joshua Peek <josh@joshpeek.com>
17d555b @chneukirchen Rack::Reloader is not loaded in rackup development mode anymore
chneukirchen authored
208 * Rack::Reloader is not loaded in rackup development mode.
eed24a7 @chneukirchen Update README
chneukirchen authored
209 * rackup can daemonize with -D.
210 * Many bugfixes, especially for pool sessions, URLMap, thread safety
211 and tempfile handling.
212 * Improved tests.
213 * Rack moved to Git.
e327c85 @chneukirchen Update History
chneukirchen authored
214
d7f256b @chneukirchen Set release date
chneukirchen authored
215 * January 6th, 2009: Fifth public release 0.9.
0b601c5 @chneukirchen Update README
chneukirchen authored
216 * Rack is now managed by the Rack Core Team.
3568c0d @chneukirchen Last minute README fixes
chneukirchen authored
217 * Rack::Lint is stricter and follows the HTTP RFCs more closely.
0b601c5 @chneukirchen Update README
chneukirchen authored
218 * Added ConditionalGet middleware.
219 * Added ContentLength middleware.
220 * Added Deflater middleware.
221 * Added Head middleware.
222 * Added MethodOverride middleware.
223 * Rack::Mime now provides popular MIME-types and their extension.
224 * Mongrel Header now streams.
225 * Added Thin handler.
226 * Official support for swiftiplied Mongrel.
227 * Secure cookies.
228 * Made HeaderHash case-preserving.
229 * Many bugfixes and small improvements.
230
84245c6 @chneukirchen Fix directory traversal exploits in Rack::File and Rack::Directory
chneukirchen authored
231 * January 9th, 2009: Sixth public release 0.9.1.
232 * Fix directory traversal exploits in Rack::File and Rack::Directory.
233
7951881 @chneukirchen Last minute updates
chneukirchen authored
234 * April 25th, 2009: Seventh public release 1.0.0.
235 * SPEC change: Rack::VERSION has been pushed to [1,0].
7637dab @chneukirchen Update README
chneukirchen authored
236 * SPEC change: header values must be Strings now, split on "\n".
7951881 @chneukirchen Last minute updates
chneukirchen authored
237 * SPEC change: Content-Length can be missing, in this case chunked transfer
238 encoding is used.
239 * SPEC change: rack.input must be rewindable and support reading into
240 a buffer, wrap with Rack::RewindableInput if it isn't.
241 * SPEC change: rack.session is now specified.
242 * SPEC change: Bodies can now additionally respond to #to_path with
243 a filename to be served.
7637dab @chneukirchen Update README
chneukirchen authored
244 * NOTE: String bodies break in 1.9, use an Array consisting of a
245 single String instead.
246 * New middleware Rack::Lock.
247 * New middleware Rack::ContentType.
248 * Rack::Reloader has been rewritten.
249 * Major update to Rack::Auth::OpenID.
250 * Support for nested parameter parsing in Rack::Response.
251 * Support for redirects in Rack::Response.
252 * HttpOnly cookie support in Rack::Response.
253 * The Rakefile has been rewritten.
254 * Many bugfixes and small improvements.
255
c765e7b @chneukirchen Update README for 1.0.1
chneukirchen authored
256 * October 18th, 2009: Eighth public release 1.0.1.
257 * Bump remainder of rack.versions.
258 * Support the pure Ruby FCGI implementation.
259 * Fix for form names containing "=": split first then unescape components
260 * Fixes the handling of the filename parameter with semicolons in names.
261 * Add anchor to nested params parsing regexp to prevent stack overflows
262 * Use more compatible gzip write api instead of "<<".
263 * Make sure that Reloader doesn't break when executed via ruby -e
264 * Make sure WEBrick respects the :Host option
265 * Many Ruby 1.9 fixes.
266
e3bc547 @chneukirchen It's 2010 now.
chneukirchen authored
267 * January 3rd, 2010: Ninth public release 1.1.0.
4e95fe1 @chneukirchen Update README
chneukirchen authored
268 * Moved Auth::OpenID to rack-contrib.
269 * SPEC change that relaxes Lint slightly to allow subclasses of the
270 required types
ae7a6eb @josh Prepare release notes for 1.1
josh authored
271 * SPEC change to document rack.input binary mode in greator detail
4e95fe1 @chneukirchen Update README
chneukirchen authored
272 * SPEC define optional rack.logger specification
99acee3 @josh Add previous change to changelog
josh authored
273 * File servers support X-Cascade header
ae7a6eb @josh Prepare release notes for 1.1
josh authored
274 * Imported Config middleware
275 * Imported ETag middleware
276 * Imported Runtime middleware
277 * Imported Sendfile middleware
278 * New Logger and NullLogger middlewares
4e95fe1 @chneukirchen Update README
chneukirchen authored
279 * Added mime type for .ogv and .manifest.
9ce4c79 @josh Note nosqueeze change
josh authored
280 * Don't squeeze PATH_INFO slashes
4e95fe1 @chneukirchen Update README
chneukirchen authored
281 * Use Content-Type to determine POST params parsing
282 * Update Rack::Utils::HTTP_STATUS_CODES hash
283 * Add status code lookup utility
284 * Response should call #to_i on the status
ae7a6eb @josh Prepare release notes for 1.1
josh authored
285 * Add Request#user_agent
286 * Request#host knows about forwared host
4e95fe1 @chneukirchen Update README
chneukirchen authored
287 * Return an empty string for Request#host if HTTP_HOST and
288 SERVER_NAME are both missing
289 * Allow MockRequest to accept hash params
290 * Optimizations to HeaderHash
291 * Refactored rackup into Rack::Server
292 * Added Utils.build_nested_query to complement Utils.parse_nested_query
293 * Added Utils::Multipart.build_multipart to complement
294 Utils::Multipart.parse_multipart
295 * Extracted set and delete cookie helpers into Utils so they can be
296 used outside Response
297 * Extract parse_query and parse_multipart in Request so subclasses
298 can change their behavior
299 * Enforce binary encoding in RewindableInput
300 * Set correct external_encoding for handlers that don't use RewindableInput
ae7a6eb @josh Prepare release notes for 1.1
josh authored
301
7e5d611 @chneukirchen Last README updates
chneukirchen authored
302 * June 13th, 2010: Tenth public release 1.2.0.
4bfb6fc @chneukirchen Update README and gemspec
chneukirchen authored
303 * Removed Camping adapter: Camping 2.0 supports Rack as-is
304 * Removed parsing of quoted values
305 * Add Request.trace? and Request.options?
306 * Add mime-type for .webm and .htc
307 * Fix HTTP_X_FORWARDED_FOR
308 * Various multipart fixes
7e5d611 @chneukirchen Last README updates
chneukirchen authored
309 * Switch test suite to bacon
4bfb6fc @chneukirchen Update README and gemspec
chneukirchen authored
310
526b8e5 @chneukirchen Prepare 1.2.1
chneukirchen authored
311 * June 15th, 2010: Eleventh public release 1.2.1.
312 * Make CGI handler rewindable
313 * Rename spec/ to test/ to not conflict with SPEC on lesser
314 operating systems
315
a1eb9c2 @chneukirchen Update README
chneukirchen authored
316 * March 13th, 2011: Twelfth public release 1.2.2/1.1.2.
317 * Security fix in Rack::Auth::Digest::MD5: when authenticator
318 returned nil, permission was granted on empty password.
319
a50dda5 @raggi Thirteenth public release, 1.3.0
raggi authored
320 * May 22nd, 2011: Thirteenth public release 1.3.0
3e0e7e6 @raggi Update readme with some changelogs
raggi authored
321 * Various performance optimizations
322 * Various multipart fixes
323 * Various multipart refactors
324 * Infinite loop fix for multipart
325 * Test coverage for Rack::Server returns
326 * Allow files with '..', but not path components that are '..'
327 * rackup accepts handler-specific options on the command line
328 * Request#params no longer merges POST into GET (but returns the same)
329 * Use URI.encode_www_form_component instead. Use core methods for escaping.
330 * Allow multi-line comments in the config file
331 * Bug L#94 reported by Nikolai Lugovoi, query parameter unescaping.
332 * Rack::Response now deletes Content-Length when appropriate
333 * Rack::Deflater now supports streaming
334 * Improved Rack::Handler loading and searching
335 * Support for the PATCH verb
686ee0d @raggi Update README changelog
raggi authored
336 * env['rack.session.options'] now contains session options
337 * Cookies respect renew
338 * Session middleware uses SecureRandom.hex
3e0e7e6 @raggi Update readme with some changelogs
raggi authored
339
ecaec50 @raggi Update for 1.2.3 release
raggi authored
340 * May 22nd, 2011: Fourteenth public release 1.2.3
341 * Pulled in relevant bug fixes from 1.3
342 * Fixed 1.8.6 support
343
a315465 @raggi Update readme pending patch release
raggi authored
344 * July 13, 2011: Fifteenth public release 1.3.1
6d1bf83 @rkh update changes
rkh authored
345 * Fix 1.9.1 support
346 * Fix JRuby support
7e9dc51 @rkh prepare readme for 1.3.1
rkh authored
347 * Properly handle $KCODE in Rack::Utils.escape
348 * Make method_missing/respond_to behavior consistent for Rack::Lock,
349 Rack::Auth::Digest::Request and Rack::Multipart::UploadedFile
350 * Reenable passing rack.session to session middleware
351 * Rack::CommonLogger handles streaming responses correctly
352 * Rack::MockResponse calls close on the body object
a315465 @raggi Update readme pending patch release
raggi authored
353 * Fix a DOS vector from MRI stdlib backport
7e9dc51 @rkh prepare readme for 1.3.1
rkh authored
354
5aaf1bb @rkh note changes that have not been backported
rkh authored
355 * Not yet release: public release 1.4.0
356 * Raise sane error messages for broken config.ru
357 * Allow combining run and map in a config.ru
358
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
359 == Contact
360
d4906ef @josh Tell people to report bugs to lighthouse
josh authored
361 Please post bugs, suggestions and patches to
4bfb6fc @chneukirchen Update README and gemspec
chneukirchen authored
362 the bug tracker at <http://github.com/rack/rack/issues>.
eed24a7 @chneukirchen Update README
chneukirchen authored
363
364 Mailing list archives are available at
ec20b05 @chneukirchen Cosmetics
chneukirchen authored
365 <http://groups.google.com/group/rack-devel>.
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
366
7637dab @chneukirchen Update README
chneukirchen authored
367 Git repository (send Git patches to the mailing list):
1266337 @chneukirchen Update README
chneukirchen authored
368 * http://github.com/rack/rack
4bfb6fc @chneukirchen Update README and gemspec
chneukirchen authored
369 * http://git.vuxu.org/cgi-bin/gitweb.cgi?p=rack-github.git
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
370
253cb49 @chneukirchen Last-minute details
chneukirchen authored
371 You are also welcome to join the #rack channel on irc.freenode.net.
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
372
7fed4c7 @chneukirchen Update thanks
chneukirchen authored
373 == Thanks
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
374
0b601c5 @chneukirchen Update README
chneukirchen authored
375 The Rack Core Team, consisting of
376
377 * Christian Neukirchen (chneukirchen)
378 * James Tucker (raggi)
379 * Josh Peek (josh)
380 * Michael Fellinger (manveru)
381 * Ryan Tomayko (rtomayko)
382 * Scytrin dai Kinthra (scytrin)
b82e4f0 @rkh update core team list
rkh authored
383 * Aaron Patterson (tenderlove)
384 * Konstantin Haase (rkh)
0b601c5 @chneukirchen Update README
chneukirchen authored
385
386 would like to thank:
387
cdab8c7 @chneukirchen Add LiteSpeed handler
chneukirchen authored
388 * Adrian Madrid, for the LiteSpeed handler.
eed24a7 @chneukirchen Update README
chneukirchen authored
389 * Christoffer Sawicki, for the first Rails adapter and Rack::Deflater.
e5fa2f9 @chneukirchen Integrate patches
chneukirchen authored
390 * Tim Fletcher, for the HTTP authentication code.
6908a8f @chneukirchen Update AUTHORS and thanks
chneukirchen authored
391 * Luc Heinrich for the Cookie sessions, the static file handler and bugfixes.
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
392 * Armin Ronacher, for the logo and racktools.
4bfb6fc @chneukirchen Update README and gemspec
chneukirchen authored
393 * Alex Beregszaszi, Alexander Kahn, Anil Wadghule, Aredridel, Ben
394 Alpert, Dan Kubb, Daniel Roethlisberger, Matt Todd, Tom Robinson,
395 Phil Hagelberg, S. Brent Faulkner, Bosko Milekic, Daniel Rodríguez
396 Troitiño, Genki Takiuchi, Geoffrey Grosenbach, Julien Sanchez, Kamal
397 Fariz Mahyuddin, Masayoshi Takahashi, Patrick Aljordm, Mig, Kazuhiro
398 Nishiyama, Jon Bardin, Konstantin Haase, Larry Siden, Matias
399 Korhonen, Sam Ruby, Simon Chiang, Tim Connor, Timur Batyrshin, and
400 Zach Brock for bug fixing and other improvements.
4e95fe1 @chneukirchen Update README
chneukirchen authored
401 * Eric Wong, Hongli Lai, Jeremy Kemper for their continuous support
402 and API improvements.
403 * Yehuda Katz and Carl Lerche for refactoring rackup.
7637dab @chneukirchen Update README
chneukirchen authored
404 * Brian Candler, for Rack::ContentType.
405 * Graham Batty, for improved handler loading.
e327c85 @chneukirchen Update History
chneukirchen authored
406 * Stephen Bannasch, for bug reports and documentation.
e256ec6 @chneukirchen Update README
chneukirchen authored
407 * Gary Wright, for proposing a better Rack::Response interface.
e06975b @chneukirchen Make Rack::Response possibly close the body
chneukirchen authored
408 * Jonathan Buch, for improvements regarding Rack::Response.
6908a8f @chneukirchen Update AUTHORS and thanks
chneukirchen authored
409 * Armin Röhrl, for tracking down bugs in the Cookie generator.
3568c0d @chneukirchen Last minute README fixes
chneukirchen authored
410 * Alexander Kellett for testing the Gem and reviewing the announcement.
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
411 * Marcus Rückert, for help with configuring and debugging lighttpd.
412 * The WSGI team for the well-done and documented work they've done and
413 Rack builds up on.
b6e61e3 @raggi Update links and correct a spelling error
raggi authored
414 * All bug reporters and patch contributors not mentioned above.
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
415
416 == Copyright
417
73a6b50 @chneukirchen Update copyright messages
chneukirchen authored
418 Copyright (C) 2007, 2008, 2009, 2010 Christian Neukirchen <http://purl.org/net/chneukirchen>
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
419
420 Permission is hereby granted, free of charge, to any person obtaining a copy
421 of this software and associated documentation files (the "Software"), to
422 deal in the Software without restriction, including without limitation the
423 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
424 sell copies of the Software, and to permit persons to whom the Software is
425 furnished to do so, subject to the following conditions:
426
427 The above copyright notice and this permission notice shall be included in
428 all copies or substantial portions of the Software.
429
430 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
431 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
432 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
d4906ef @josh Tell people to report bugs to lighthouse
josh authored
433 THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
434 IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
435 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
436
437 == Links
438
439 Rack:: <http://rack.rubyforge.org/>
0b601c5 @chneukirchen Update README
chneukirchen authored
440 Official Rack repositories:: <http://github.com/rack>
b6e61e3 @raggi Update links and correct a spelling error
raggi authored
441 Rack Bug Tracking:: <http://github.com/rack/rack/issues>
eed24a7 @chneukirchen Update README
chneukirchen authored
442 rack-devel mailing list:: <http://groups.google.com/group/rack-devel>
b6e61e3 @raggi Update links and correct a spelling error
raggi authored
443 Rack's Rubyforge project:: <http://rubyforge.org/projects/rack>
d773b8b @chneukirchen Add README and other documentation
chneukirchen authored
444
445 Christian Neukirchen:: <http://chneukirchen.org/>
446
Something went wrong with that request. Please try again.