RSP Web Framework, first public release

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