--0016e6d7effbdbf665048fdab5a3
Content-Type: text/plain; charset=ISO-8859-1

RSP Web Framework



This is the first public release of RSP.

* What is RSP?

RSP is a modular platform built from the ground up for developing Ruby
applications on Apache Web Server. It consists of an Apache module which
embeds a Ruby VM, a simple MVC framework that is easy to understand and
extend, and an optional site library containing additional components that
help make life easier.

* History

RSP has been in development for about four years. It slowly evolved from a
simple FCGI library plugged into the back of lighttpd, designed to be web
server agnostic. When we started actually using it in production, we ended
up moving it to Apache because we had so much other stuff running on it.
Over time it became more and more Apache-centric, culminating in running on
a dedicated Apache module. After version 1, my boss agreed to let me release
the code, but I didn't because things were still changing so much and there
were a lot of warts I wanted to see disappear. Over a year or so version 2
took shape. It it has pretty much solidified.

* Features

If you like Apache then you should feel completely at home with RSP. It's
more than an Apache module, but it's still very light an modular. It
includes both a native RHTML parser which works exactly like eRuby (compiled
into the Apache module), and a very lightweight MVC framework.

RSP is well documented (see doc link below). From the first line of code,
documentation has proceeded lockstep with development. In addition to
documentation, it includes a running example site where all major examples
in the documentation can be run as you read through the documentation
(provided the example site is properly installed on your system).

RSP includes a command-line utility (called, not surprisingly, rsp) that
allows you to run your web code from the command line. Basically it includes
an embedded instance of Apache and Ruby in-proc. You can either feed it raw
HTTP requests or run it in interpreter mode whereby you can control
everything with Ruby, wherein the environment acts as both browser and web
server. You can thus programmatically feed multiple requests to the Apache
instance and process the results. As a result you can create elaborate test
suites for your web apps that are runnable from within Ruby code or the
command line. This approach enables you to do a lot of development without
the need of a browser or web server, just an editor and the command line.

Furthermore, the rsp utility is not limited to just running RSP code. It can
run anything that runs in Apache. So you can run PHP, Django, mod_perl
pages, etc. from the command line (or interpreter mode) just as easily as
RSP pages, and develop test suites that include them. All this is covered in
the documentation.

* Supported Platforms

Ubuntu/Debian are natively supported. There are binary packages for Ubuntu
(i386/amd64) -- Hardy, Intrepid, Jaunty, Karmic, and Lucid. It will build on
FreeBSD (I did actually do this once) and other Un*x systems, but there are
not any native packages created as of yet. The build environment is CMake
based, so if you have the requisite dependencies installed, it should be
relatively easy to build on other systems. But on Ubuntu/Debian building is
a snap. And on Ubuntu, you can install through apt-get.

* Summary

If you like Apache and Ruby then you might enjoy this. You can easily write
code that ranges from little more than a glorified CGI script to MVC. The
entire Apache C API is wrapped (hand-coded) in Ruby C extensions and exposed
to the RHTML and MVC environments. There are no code generators or
application patterns (though there are optional library components). This is
more of a stripped down, modular platform with various optional components
you can add as you like.

This has been a long-running project that has gradually developed in fits
and starts over the years. I think it has finally matured to a point where
it might be useful to others, so that's why I am putting it out there.

Patches, ideas, suggestions are of course welcome.

* Project Information

Website: http://www.linterra.org/rsp/
Documentation: http://www.linterra.org/rsp/docs/
Code: http://github.com/linterra/rsp
License: Apache 2.0

--0016e6d7effbdbf665048fdab5a3--