README in rack-0.3.0 vs README in rack-0.4.0
- old
+ new
@@ -7,24 +7,41 @@
middleware) into a single method call.
The exact details of this are described in the Rack specification,
which all Rack applications should conform to.
+== Future specification changes
+
+PLEASE NOTE: In versions of Rack LATER than 0.4, the following
+changes will be commited to the Rack specification:
+
+* 1xx, 204 and 304 status codes MUST not contain a Content-Type.
+* A valid Content-Length header MUST be provided for non 1xx, 204 and 304
+ responses with a Transfer-Encoding of "identity" (default).
+ The Content-Length MUST be the same as the sum of the byte-sizes of
+ the chunks.
+* The REQUEST_METHOD may be any HTTP token.
+
+Internal Rack modules have been updated to follow this behavior, but
+the Rack 0.4 Lint does NOT check it yet for compatibility reasons.
+Please update your libraries accordingly.
+
== Supported web servers
The included *handlers* connect all kinds of web servers to Rack:
* Mongrel
-* Mongrel/Swiftcore (require it before requiring rack)
+* EventedMongrel
* WEBrick
* FCGI
* CGI
* SCGI
* LiteSpeed
These web servers include Rack handlers in their distributions:
* Ebb
* Fuzed
+* Phusion Passenger (which is mod_rack for Apache)
* Thin
Any valid Rack app will run the same on all these handlers, without
changing anything.
@@ -34,16 +51,18 @@
* Camping
These frameworks include Rack adapters in their distributions:
* Coset
* Halcyon
+* Mack
* Maveric
* Merb
* Racktools::SimpleApplication
* Ramaze
* Sinatra
* Vintage
+* Waves
Ruby on Rails can be run with the adapter included with Thin, which
will be merged into a later Rack version.
Current links to these projects can be found at
@@ -59,12 +78,12 @@
presenting them in a nice and helpful way with clickable backtrace.
* Rack::File, for serving static files.
* ...many others!
All these components use the same interface, which is described in
-detail in the Rack specification. You can choose to use them exactly
-in the way you want.
+detail in the Rack specification. These optional components can be
+used in any way you wish.
== Convenience
If you want to develop outside of existing frameworks, implement your
own ones, or develop middleware, Rack provides many helpers to create
@@ -110,10 +129,57 @@
I also provide a local mirror of the gems (and development snapshots)
at my site:
gem install rack --source http://chneukirchen.org/releases/gems
+== Running the tests
+
+Testing Rack requires the test/spec testing framework:
+
+ gem install test-spec
+
+There are two rake-based test tasks:
+
+ rake test tests all the fast tests (no Handlers or Adapters)
+ rake fulltest runs all the tests
+
+The fast testsuite has no dependencies outside of the core Ruby
+installation and test-spec.
+
+To run the test suite completely, you need:
+
+ * camping
+ * mongrel
+ * fcgi
+ * ruby-openid
+ * memcache-client
+
+The full set of tests test FCGI access with lighttpd (on port
+9203) so you will need lighttpd installed as well as the FCGI
+libraries and the fcgi gem:
+
+Download and install lighttpd:
+
+ http://www.lighttpd.net/download
+
+Installing the FCGI libraries:
+
+ curl -O http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
+ tar xzvf fcgi-2.4.0.tar.gz
+ cd fcgi-2.4.0
+ ./configure --prefix=/usr/local
+ make
+ sudo make install
+ cd ..
+
+Installing the Ruby fcgi gem:
+
+ gem install fcgi
+
+Furthermore, to test Memcache sessions, you need memcached (will be
+run on port 11211) and memcache-client installed.
+
== History
* March 3rd, 2007: First public release 0.1.
* May 16th, 2007: Second public release 0.2.
@@ -136,38 +202,57 @@
* Rack::Builder#use now accepts blocks, by Corey Jewett.
(See example/protectedlobster.ru)
* HTTP status 201 can contain a Content-Type and a body now.
* Many bugfixes, especially related to Cookie handling.
+* August 21th, 2008: Fourth public release 0.4.
+ * New middleware, Rack::Deflater, by Christoffer Sawicki.
+ * OpenID authentication now needs ruby-openid 2.
+ * New Memcache sessions, by blink.
+ * Explicit EventedMongrel handler, by Joshua Peek <josh@joshpeek.com>
+ * Rack::Reloader is not loaded in rackup development mode.
+ * rackup can daemonize with -D.
+ * Many bugfixes, especially for pool sessions, URLMap, thread safety
+ and tempfile handling.
+ * Improved tests.
+ * Rack moved to Git.
+
== Contact
Please mail bugs, suggestions and patches to
-<mailto:chneukirchen@gmail.com>.
+<mailto:rack-devel@googlegroups.com>.
-Darcs repository ("darcs send" is welcome for patches):
-http://chneukirchen.org/repos/rack
+Mailing list archives are available at
+<http://groups.google.com/group/rack-devel>
+Git repository (branches rebased on master are most welcome):
+* http://github.com/chneukirchen/rack
+* http://git.vuxu.org/cgi-bin/gitweb.cgi?p=rack.git
+
You are also welcome to join the #rack channel on irc.freenode.net.
== Thanks to
+* blink for the Pool sessions, Memcache sessions, OpenID support, many
+ tweaks, patches and bugreports.
* Michael Fellinger, for the helpful discussion, bugfixes and a better
Rack::Request interface.
* Adrian Madrid, for the LiteSpeed handler.
-* Christoffer Sawicki, for the Rails adapter.
+* Christoffer Sawicki, for the first Rails adapter and Rack::Deflater.
* Tim Fletcher, for the HTTP authentication code.
* Luc Heinrich for the Cookie sessions, the static file handler and bugfixes.
-* blink for the Pool sessions, OpenID support, various tweaks, and bugreports.
* Armin Ronacher, for the logo and racktools.
* Aredridel, for bug fixing.
+* Stephen Bannasch, for bug reports and documentation.
* Gary Wright, for proposing a better Rack::Response interface.
* Jonathan Buch, for improvements regarding Rack::Response.
* Armin Röhrl, for tracking down bugs in the Cookie generator.
* Alexander Kellett for testing the Gem and reviewing the announce.
* Marcus Rückert, for help with configuring and debugging lighttpd.
* The WSGI team for the well-done and documented work they've done and
Rack builds up on.
+* All bug reporters and patch contributers not mentioned above.
== Copyright
Copyright (C) 2007, 2008 Christian Neukirchen <http://purl.org/net/chneukirchen>
@@ -190,13 +275,13 @@
== Links
Rack:: <http://rack.rubyforge.org/>
Rack's Rubyforge project:: <http://rubyforge.org/projects/rack>
+rack-devel mailing list:: <http://groups.google.com/group/rack-devel>
Camping:: <http://camping.rubyforge.org/>
Ramaze:: <http://ramaze.rubyforge.org/>
Maveric:: <http://maveric.rubyforge.org/>
-racktools:: <http://lucumr.pocoo.org/trac/repos/racktools/>
Christian Neukirchen:: <http://chneukirchen.org/>