I’ve decided to highlight Rails this month, because it’s
remarkably boring.

That’s right: Boring. Even David Heinemeier Hansson (its author) agrees.

I started writing a little web application for my other non-profit to put Rails through
its paces. Armed with experience, let me step you slowly through its
ever-so-boring pieces:

  • Installation is a total snoozer.


    [chad@mymachine]$ sudo gem install rails
    Attempting local installation of ‘rails’
    Local gem file not found: rails.gem
    Attempting remote installation of ‘rails’
    Install required dependency rake? [Yn] y
    Install required dependency activerecord? [Yn] y
    Install required dependency actionpack? [Yn] y
    Successfully installed rails, version 0.6.0

    [chad@mymachine]$ mkdir -p ~/code/ruby
    [chad@mymachine]$ rails ~/code/ruby/mynewsite
    [chad@mymachine]$ cd ~/code/ruby/mynewsite
    [chad@mymachine]$ public/dispatch.servlet
    [2004-08-16 22:34:15] INFO WEBrick 1.3.1
    [2004-08-16 22:34:15] INFO ruby 1.8.1 (2003-12-25) [i686-linux]
    [2004-08-16 22:34:15] WARN TCPServer Error: Address family not supported by protocol – socket(2)
    [2004-08-16 22:34:15] INFO WEBrick::HTTPServer#start: pid=21242 port=3000

Not only did this install Rails and all of its dependencies (using RubyGems, of course), but the last
little bit setup a new Rails workspace with everything I needed to actually
run a Rails application and then started it up with Webrick. Where are all
of the XML config files that I love so much to squint at?

  • Writing database code is even worse. For the basics, you don’t
    have to do any coding. What kind of sick mind was behind
    ActiveRecord anyway? How
    are we programmers supposed to stay employed if there’s no work for
    us to do?
  • Gluing this all together to get an end-to-end web application
    working is the biggest non-event yet. Roughly:


    scaffold :tablename

That sets up "scaffolding" which creates (in the runtime
environment) controller, view, and model code to fully manipulate the table
that you point to. In case you missed it (it was quick), here it is again:

        scaffold :tablename
  • The most frustratingly boring part of all of this is the
    documentation. David’s got videos, wikis, tutorials and demo
    apps (all on www.rubyonrails.org),
    which means I didn’t get the fun of having to wade through
    Rails’ source code every time I wanted to implement a new feature for
    my web application.

Despite being arguably the most boring web framework I’ve ever seen,
a lot of people seem to be coming to Rails from all over the place. Even the DotNet and Java
guys
, who definitely don’t seem to like being bored with
nothing to do (All that Static Typing leads to lots of Typing) seem to be
coming around to Ruby-land as a result of Rails.

I hear there are talks about porting this thing to languages like Python
and TCL (Java, too? Is it possible in Java?).

Thankfully, though Rails itself is boring, it stays out of the way, and you
can do really interesting things with it.

I hear that this is destined to be one of
the more interesting examples…