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/>