|
| 1 | +<?xml version="1.0" encoding="iso-8859-1"?> |
| 2 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" |
| 3 | + "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
| 4 | +<html xmlns="http://www.w3.org/1999/xhtml"> |
| 5 | + <head> |
| 6 | + <title>Rack: a Ruby Webserver Interface</title> |
| 7 | + <link rev=" made" href=" [email protected]" /> |
| 8 | + <meta name="author" content="Christian Neukirchen" /> |
| 9 | + <meta name="date" content="Thu Aug 21 12:41:29 CEST 2008" /> |
| 10 | + <meta name="DC.Title" content="Rack: a Ruby Webserver Interface" /> |
| 11 | + <meta name="DC.Creator" content="Christian Neukirchen" /> |
| 12 | + <style type="text/css"> |
| 13 | +*{margin:0;padding:0}iframe,a img,fieldset,form,table{border:0} |
| 14 | +h6,h5,h4,h3,h2,h1,caption,th,td{font-size:100%;font-weight:normal} |
| 15 | +dd,dt,li,dl,ol,ul{list-style:none}legend{color:#000} |
| 16 | +button,select,textarea,input{font:100% serif}table{border-collapse:collapse} |
| 17 | +caption,th,td{text-align:left} |
| 18 | + |
| 19 | +body { |
| 20 | + font-family: Verdana, sans-serif; |
| 21 | + margin: 0px; |
| 22 | + background-color: #FFFFFF; |
| 23 | + text-align: center; |
| 24 | +} |
| 25 | + |
| 26 | +div.content { |
| 27 | + width: 27em; |
| 28 | + margin: 0 auto; |
| 29 | + text-align: left; |
| 30 | + padding: 10px; |
| 31 | + border-left: 15px solid #9CDAF9; |
| 32 | + border-right: 15px solid #9CDAF9; |
| 33 | +} |
| 34 | + |
| 35 | +img#logo { |
| 36 | + margin: 0 auto; |
| 37 | + display: block; |
| 38 | + padding-bottom: 1em; |
| 39 | +} |
| 40 | + |
| 41 | +h1, h2, h3, h4 { |
| 42 | + margin-top: 1em; |
| 43 | + margin-bottom: 0.33em; |
| 44 | + border-left: 15px solid #7CBAE9; |
| 45 | + margin-left: -25px; |
| 46 | + border-right: 15px solid #7CBAE9; |
| 47 | + margin-right: -25px; |
| 48 | + padding: 10px; |
| 49 | +} |
| 50 | + |
| 51 | +h1 { |
| 52 | + font-size: 200%; |
| 53 | + margin-top: 0; |
| 54 | + margin-bottom: 0; |
| 55 | + font-weight: bold; |
| 56 | +} |
| 57 | + |
| 58 | +h2 { |
| 59 | + font-size: 130%; |
| 60 | +} |
| 61 | + |
| 62 | +h3 { font-size: 120%; } |
| 63 | + |
| 64 | +a { color: #0066B2; text-decoration: none; } |
| 65 | +a:visited { color: #6CAAD9; } |
| 66 | +a:hover { text-decoration: underline; } |
| 67 | + |
| 68 | +pre { |
| 69 | + background-color: #BBDFFA; |
| 70 | + padding: 0.2em; |
| 71 | + margin: 0.5em 0; |
| 72 | +} |
| 73 | + |
| 74 | +p { |
| 75 | + margin-bottom: 0.5em; |
| 76 | +} |
| 77 | + |
| 78 | +ul li { |
| 79 | + list-style-type: disc; |
| 80 | + margin-left: 1.5em; |
| 81 | + margin-bottom: 0.33em; |
| 82 | +} |
| 83 | + |
| 84 | +p#imprint { |
| 85 | + font-size: small; |
| 86 | + margin-top: 2.5em; |
| 87 | + text-align: center; |
| 88 | +} |
| 89 | + |
| 90 | +dd { |
| 91 | + margin-left: 2em; |
| 92 | +} |
| 93 | + |
| 94 | +blockquote { |
| 95 | + margin: 0.5em 2em; |
| 96 | + font-style: italic; |
| 97 | +} |
| 98 | + |
| 99 | +blockquote .src { |
| 100 | + text-align: right; |
| 101 | +} |
| 102 | + </style> |
| 103 | + </head> |
| 104 | + <body> |
| 105 | + <div class="content"> |
| 106 | +<h1>Rack: a Ruby Webserver Interface</h1> |
| 107 | + |
| 108 | +<p><img id="logo" src="rack-logo.png" alt="Rack powers web applications" /></p> |
| 109 | + |
| 110 | +<p><strong>Rack</strong> provides an minimal interface between webservers supporting |
| 111 | +Ruby and Ruby frameworks.</p> |
| 112 | + |
| 113 | +<h2>News</h2> |
| 114 | + |
| 115 | +<dl> |
| 116 | +<dt>December 24th, 2008</dt><dd><a href="http://groups.google.com/group/rack-devel/browse_thread/thread/a5f156a8c592ab1c">Introducing the Rack Core Team</a></dd> |
| 117 | + |
| 118 | +<dt>December 23rd, 2008</dt><dd><a href="http://www.heise.de/newsticker/Rails-Erfinder-stellt-Rails-Metal-vor--/meldung/120849">Rack is mentioned on <a href="http://www.heise.de/newsticker/Rails-Erfinder-stellt-Rails-Metal-vor--/meldung/120849">heise.de</a>!</a></dd> |
| 119 | + |
| 120 | +<dt>December 5th, 2008</dt><dd><a href="http://weblog.rubyonrails.org/2008/12/5/this-week-in-edge-rails">The tighter integration of Rails with Rack continues.</a></dd> |
| 121 | + |
| 122 | +<dt>August 21st, 2008</dt><dd><strong>Rack 0.4</strong> has been <a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/312148">released</a>!</dd> |
| 123 | + |
| 124 | +<dt>May 31st, 2008</dt><dd>Rack development <a href="http://github.com/chneukirchen/rack/tree/master">moves to Git</a>.</dd> |
| 125 | + |
| 126 | +<dt>May 24th, 2008</dt><dd>There now is a Google Group on <a href="http://groups.google.com/group/rack-devel">Rack Development</a>.</dd> |
| 127 | + |
| 128 | +<dt>February 26th, 2008</dt><dd><strong>Rack 0.3</strong> has been <a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/292557">released</a>!</dd> |
| 129 | + |
| 130 | +<dt>November 10th, 2007</dt><dd>Rack has been presented at the <a href="http://euruko.com/">Euruko 2007</a>. Slides and a paper are available at <a href="http://chneukirchen.org/talks/#introducingrack">http://chneukirchen.org/talks/</a>.</dd> |
| 131 | + |
| 132 | +<dt>October 2007</dt><dd>Ryan Allen gave a <a href="http://yeahnah.org/files/rack-presentation-oct-07.pdf">presentation on Rack</a> (PDF).</dd> |
| 133 | + |
| 134 | +<dt>May 16th, 2007</dt><dd><strong>Rack 0.2</strong> has been <a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/251804">released</a>!</dd> |
| 135 | +</dl> |
| 136 | + |
| 137 | +<h2>Documentation</h2> |
| 138 | + |
| 139 | +<p>Read <a href="doc/files/SPEC.html">The Rack interface specification</a> |
| 140 | +and <a href="doc">other documentation</a>.</p> |
| 141 | + |
| 142 | +<h2>Supported Handlers</h2> |
| 143 | + |
| 144 | +<ul> |
| 145 | +<li>Rack::Handler::Mongrel (also with Swiftcore's evented_mongrel, just require it before Rack.)</li> |
| 146 | +<li>Rack::Handler::WEBrick</li> |
| 147 | +<li>Rack::Handler::FastCGI</li> |
| 148 | +<li>Rack::Handler::CGI</li> |
| 149 | +<li>Rack::Handler::SCGI</li> |
| 150 | +<li>Rack::Handler::LSWS</li> |
| 151 | +</ul> |
| 152 | + |
| 153 | +<p>Web servers that include their own handlers:</p> |
| 154 | + |
| 155 | +<ul> |
| 156 | +<li><a href="http://repo.or.cz/w/ebb.git">Ebb</a></li> |
| 157 | +<li><a href="http://fuzed.rubyforge.org/">Fuzed</a></li> |
| 158 | +<li><a href="http://www.modrails.com/">Phusion Passenger (mod_rack)</a></li> |
| 159 | +<li><a href="http://code.macournoyer.com/thin/">Thin</a></li> |
| 160 | +</ul> |
| 161 | + |
| 162 | +<h2>Supported Adapters</h2> |
| 163 | + |
| 164 | +<ul> |
| 165 | +<li>Rack::Adapter::Camping</li> |
| 166 | +<li><a href="http://chneukirchen.org/repos/coset">Coset</a></li> |
| 167 | +<li><a href="http://halcyon.rubyforge.org/">Halcyon</a></li> |
| 168 | +<li><a href="http://www.mackframework.com/">Mack</a></li> |
| 169 | +<li><a href="http://maveric.rubyforge.org/">Maveric</a></li> |
| 170 | +<li><a href="http://merbivore.com/">Merb</a></li> |
| 171 | +<li><a href="http://lucumr.pocoo.org/trac/repos/racktools/">Racktools</a>::SimpleApplication</li> |
| 172 | +<li><a href="http://ramaze.rubyforge.org/">Ramaze</a></li> |
| 173 | +<li><a href="http://sinatra.rubyforge.org/">Sinatra</a></li> |
| 174 | +<li><a href="http://vintage.devjavu.com/">Vintage</a></li> |
| 175 | +<li><a href="http://rubywaves.com/">Waves</a></li> |
| 176 | +</ul> |
| 177 | + |
| 178 | +<h2>Blurb</h2> |
| 179 | + |
| 180 | +<blockquote> |
| 181 | +Personifi uses Rack cause we like its elegant design, speed and fast |
| 182 | +turn around time. With Rack we serve billions of requests per |
| 183 | +month. It makes our life good! |
| 184 | +<div class="src">—Armin Roehrl, Lead Engineer of Personifi</div> |
| 185 | +</blockquote> |
| 186 | + |
| 187 | +<h2>TODO</h2> |
| 188 | + |
| 189 | +<p>Currently, we can need help in these things:</p> |
| 190 | + |
| 191 | +<ul> |
| 192 | +<li>Please help test Thin's Rails handler.</li> |
| 193 | +<li>If you know JRuby, help write a Servlet adapter.</li> |
| 194 | +<li>If you know Sandbox, maybe something that would let Rack work with a |
| 195 | +Sandbox (I think it would be needed if frameworks stand on each |
| 196 | +other feet.)</li> |
| 197 | +<li>Figure out how to use Mongrel’s URL classifier for URLMap (IOWA has |
| 198 | +a cleaned and modularized version of it, I heard).</li> |
| 199 | +<li>Spread the word! Write cool Rack apps!</li> |
| 200 | +</ul> |
| 201 | + |
| 202 | +<h2>License</h2> |
| 203 | + |
| 204 | +<p>Rack is licensed under the very liberal |
| 205 | +<a href="http://www.opensource.org/licenses/mit-license.php">MIT License</a>.</p> |
| 206 | + |
| 207 | +<h2>Get it!</h2> |
| 208 | + |
| 209 | +<p> |
| 210 | + Releases: |
| 211 | +</p> |
| 212 | +<dl> |
| 213 | + <dt>Rack 0.4</dt> |
| 214 | + <dd><a href="http://chneukirchen.org/releases/rack-0.4.0.tar.gz">rack-0.4.0.tar.gz</a> (<tt>65a19e53a0dc661f4055d043126585b49a0b618d</tt>)</dd> |
| 215 | + <dd><a href="http://rubyforge.org/frs/download.php/41599/rack-0.4.0.tar.gz">rack-0.4.0.tar.gz (Rubyforge)</a></dd> |
| 216 | + |
| 217 | + <dt>Rack 0.3</dt> |
| 218 | + <dd><a href="http://chneukirchen.org/releases/rack-0.3.0.tar.gz">rack-0.3.0.tar.gz</a> (<tt>5e92f2901d2dc77eb0453fc3acdd6c4a07fc167a</tt>)</dd> |
| 219 | + <dd><a href="http://rubyforge.org/frs/download.php/32984/rack-0.3.0.tar.gz">rack-0.3.0.tar.gz (Rubyforge)</a></dd> |
| 220 | + <dt>Rack 0.2</dt> |
| 221 | + <dd><a href="http://chneukirchen.org/releases/rack-0.2.0.tar.gz">rack-0.2.0.tar.gz</a> (<tt>f1063711f228d19875a3211d71308b5c</tt>)</dd> |
| 222 | + <dd><a href="http://rubyforge.org/frs/download.php/20773/rack-0.2.0.tar.gz">rack-0.2.0.tar.gz (Rubyforge)</a></dd> |
| 223 | + <dt>Rack 0.1</dt> |
| 224 | + <dd><a href="http://chneukirchen.org/releases/rack-0.1.0.tar.gz">rack-0.1.0.tar.gz</a> (<tt>79b46158b7b30adcd7a9148cc7ed4305</tt>)</dd> |
| 225 | + <dd><a href="http://rubyforge.org/frs/download.php/18067/rack-0.1.0.tar.gz">rack-0.1.0.tar.gz (Rubyforge)</a></dd> |
| 226 | +</dl> |
| 227 | + |
| 228 | +<p> |
| 229 | + Or, via Gems: |
| 230 | +</p> |
| 231 | +<pre><code>gem install rack |
| 232 | +</code></pre> |
| 233 | + Mirror, may be more recent: |
| 234 | +<pre><code>gem install rack --source http://chneukirchen.org/releases/gems |
| 235 | +</code></pre> |
| 236 | + |
| 237 | +<p>Currently, bleeding-edge Rack is available |
| 238 | +via Git:</p> |
| 239 | + |
| 240 | +<pre><code>git clone git://github.com/chneukirchen/rack.git |
| 241 | +</code></pre> |
| 242 | + |
| 243 | +<p>The respository is <a href="http://github.com/chneukirchen/rack/tree/master">browsable |
| 244 | +online</a>, |
| 245 | +too.</p> |
| 246 | + |
| 247 | +<h2>Contact</h2> |
| 248 | + |
| 249 | +<p>Send patches, questions or bugs |
| 250 | + |
| 251 | +(<a href="http://groups.google.com/group/rack-devel">archives</a>), or |
| 252 | +visit the Rack IRC channel <code>#rack</code> |
| 253 | +at <a href="http://freenode.net/">Freenode</a>.</p> |
| 254 | + |
| 255 | +<h2>More information</h2> |
| 256 | + |
| 257 | +<ul> |
| 258 | +<li><a href="http://chneukirchen.org/blog/archive/2007/02/introducing-rack.html">Introducing Rack</a>, an introductory blog post by Christian Neukirchen.</li> |
| 259 | +<li><a href="http://rubyforge.org/projects/rack/">Rack project at Rubyforge</a>.</li> |
| 260 | +<li><a href="http://lucumr.pocoo.org/trac/repos/racktools/">racktools</a> provides |
| 261 | +various tools for rack that make web development a charm.</li> |
| 262 | +</ul> |
| 263 | + |
| 264 | +<p id="imprint"> |
| 265 | +© 2007, 2008 <a href=" mailto:[email protected]" >Christian Neukirchen </a> |
| 266 | +</p> |
| 267 | + </div> |
| 268 | + </body> |
| 269 | +</html> |
0 commit comments