From: Mike Owens Date: 2010-09-10T06:57:19+09:00 Subject: [ANN] RSP Web Framework, first public release --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--