Ruby CGI with DBI

I just got another e-mail about that old article I wrote for O'Reilly Network about using AJAX to do song search for my Webcast radio station.

Interestingly though, this e-mail wasn't asking about the AJAX stuff -- this guy wanted to know about the server-side Ruby code I mention in the article.

Ruby is fantstic for Web programming -- simple or complicated. Unfortunately everyone is so focused on the Rails hype that plain vanilla Web programming kind of takes a back seat.

For using Ruby's DBI to talk to a database -- including how to iterate through a recordset, you can check out the excellent resource at Kitebird . And LinuxJournal has a good article that talks about how to use the basic Ruby CGI module for Web programming .

Most of the CGI examples use that complicated HTML-generation stuff to craft the markup for the page. I actually tend just to build a string of content throughout the script execution and then write the whole thing out at the end -- it's way less complicated for someone like me who's comfortable working directly with markup, and managing string data myself.

I do it kind of like this:

    #!/usr/bin/ruby
   
   
    require
   
   
    'cgi'
   
   
    require
   
   
    'dbi'
   
   cgi = CGI.
   
    new
   
   content =
   
    ''
   
   content +=
   
    'Some stuff<br/>'
   
   content +=
   
    'Some more stuff'
   
   content += <<DOC
   
    This
   
   is content inside of a heredoc.<br/>
I can
   
    do
   
   linebreaks
   
    and
   
   stuff in here.
DOC

cgi.out() { content }
  
 

You can get the full rundown on the CGI module from the online version of the Pickaxe book as well.

You can get a performant Ruby CGI app by using either FastCGI or mod_ruby . The kind folks at ZTtracks have a somewhat old but nice resource on setting up Apache to serve a mod_ruby Web app.