Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Add README and other documentation

darcs-hash:20070303101645-4fc50-2641e57f88630ebf272b2d6d6daebdb3461a37f3.gz
  • Loading branch information...
commit d773b8bbbe1baecd3d05bef0bb05482668746232 1 parent e88978d
@chneukirchen chneukirchen authored
Showing with 180 additions and 2 deletions.
  1. +18 −0 KNOWN-ISSUES
  2. +153 −0 README
  3. +5 −2 Rakefile
  4. +4 −0 example/lobster.ru
View
18 KNOWN-ISSUES
@@ -0,0 +1,18 @@
+= Known issues with Rack and Web servers
+
+* Lighttpd sets wrong SCRIPT_NAME and PATH_INFO if you mount your
+ FastCGI app at "/". This can be fixed by using this middleware:
+
+ class LighttpdScriptNameFix
+ def initialize(app)
+ @app = app
+ end
+
+ def call(env)
+ env["PATH_INFO"] = env["SCRIPT_NAME"].to_s + env["PATH_INFO"].to_s
+ env["SCRIPT_NAME"] = ""
+ @app.call(env)
+ end
+ end
+
+ Of course, use this only when your app runs at "/".
View
153 README
@@ -0,0 +1,153 @@
+= Rack, a modular Ruby webserver interface
+
+Rack provides minimal, modular and adaptable interface for developing
+web applications in Ruby. By wrapping HTTP requests and responses in
+the simplest way possible, it unifies and distills the API for web
+servers, web frameworks, and software inbetween (the so-called
+middleware) into a single method call.
+
+The exact details of this are described in the Rack specification,
+which all Rack applications should conform to.
+
+== Supported web servers
+
+The included *handlers* connect all kinds of web servers to Rack:
+* Mongrel
+* WEBrick
+* FCGI
+* CGI
+
+Any valid Rack app will run the same on all these handlers, without
+changing anything.
+
+== Supported web frameworks
+
+The included *adapters* connect Rack with existing Ruby web frameworks:
+* Camping
+* Rails (alpha)
+* more to come soon, ...
+
+These frameworks include Rack adapters in their distributions:
+* Ramaze
+* Maveric
+* Racktools::SimpleApplication
+
+== Available middleware
+
+Between the server and the framework, Rack can be customized to your
+applications needs using middleware, for example:
+* Rack::URLMap, to route to multiple applications inside the same process.
+* Rack::CommonLogger, for creating Apache-style logfiles
+* Rack::ShowException, for catching unhandled exceptions and
+ presenting them in a nice and helpful way with clickable backtrace
+ etc.
+* Rack::File, for serving static files.
+* ...
+
+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.
+
+== Convenience
+
+If you want to develop outside of existing frameworks, implement your
+own ones, or develop middleware, Rack provides many helpers to create
+Rack applications quickly and without doing the same web stuff all
+over:
+* Rack::Request, which also provides query string parsing and
+ multipart handling.
+* Rack::Response, for convenient generation of HTTP replies and
+ cookie handling.
+* Rack::MockRequest and Rack::MockResponse for efficient and quick
+ testing of Rack application without real HTTP roundtrips.
+
+== rackup
+
+rackup is a useful tool for running Rack applications, which uses the
+Rack::Builder DSL to configure middleware and build up applications
+easily.
+
+rackup automatically figures out the environment it is run in, and
+runs your application as FastCGI, CGI, or standalone with Mongrel or
+WEBrick---all from the same configuration.
+
+== Quick start
+
+Try the lobster!
+
+Either with the embedded WEBrick starter:
+
+ ruby -Ilib lib/rack/lobster.rb
+
+Or with rackup:
+
+ bin/rackup -Ilib example/lobster.ru
+
+By default, the lobster is found at http://localhost:9292.
+
+== Installing with RubyGems
+
+A Gem of Rack is available. You can install it with:
+
+ gem install rack
+
+I also provide a local mirror of the gems (and development snapshots)
+at my site:
+
+ gem install rack --source http://chneukirchen.org/releases/gems
+
+== History
+
+* March 3rd, 2007: First public release 0.1.
+
+== Contact
+
+Please mail bugs, suggestions and patches to
+<mailto:chneukirchen@gmail.com>.
+
+Darcs repository ("darcs send" is welcome for patches):
+http://chneukirchen.org/repos/rack
+
+You also are welcome to join the #rack channel on irc.freenode.net.
+
+== Thanks to
+
+* Michael Fellinger, for helpful discussion.
+* Christoffer Sawicki, for the Rails adapter.
+* Armin Ronacher, for the logo and racktools.
+* 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.
+
+== Copyright
+
+Copyright (C) 2007 Christian Neukirchen <http://purl.org/net/chneukirchen>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+== Links
+
+Rack:: <http://rack.rubyforge.org/>
+
+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/>
+
View
7 Rakefile
@@ -124,10 +124,13 @@ end
desc "Generate RDoc documentation"
Rake::RDocTask.new(:rdoc) do |rdoc|
- rdoc.options << '--line-numbers' << '--inline-source'
+ rdoc.options << '--line-numbers' << '--inline-source' <<
+ '--main' << 'README' <<
+ '--title' << 'Rack Documentation' <<
+ '--charset' << 'utf-8'
rdoc.rdoc_dir = "doc"
rdoc.rdoc_files.include 'README'
-# rdoc.rdoc_files.include 'ROADMAP'
+ rdoc.rdoc_files.include 'KNOWN-ISSUES'
rdoc.rdoc_files.include 'SPEC'
rdoc.rdoc_files.include 'RDOX'
rdoc.rdoc_files.include('lib/rack.rb')
View
4 example/lobster.ru
@@ -0,0 +1,4 @@
+require 'rack/lobster'
+
+use Rack::ShowExceptions
+run Rack::Lobster.new
Please sign in to comment.
Something went wrong with that request. Please try again.