> I'm really interested in seeing Ruby on Rails.  As far as I can tell 
> it doesn't appear to be available yet.  Will it be available as a 
> standard ruby module, open source and everything?

Thank you and no, it's not available yet. It'll be available under an 
open source license when released (BSD/Ruby-like).

Rails is really a couple of things, though. It's composed of two 
different sub-projects, Active Record (model) and Action Pack 
(control/view), and a lot of glue to bind these together seemlessly. So 
in its final version there'll be a Rails release containing everything 
needed to build successful web-applications (such as Basecamp[1]) and a 
individual release for each of the two sub-projects.

Instiki is already using an older variant of the Action Pack, but 
doesn't use Active Record. James Buck and others are using Active 
Record in isolation to build projects without the Action Pack. So 
that's the reason for the otherwise slight confusion in three different 
projects. I hope I'll be able to explain it clearly when its time to 
release things.

Regarding time, I'm natural hesitant to provide anything concrete. No 
reason to setup future disappointments. But I will say that the Active 
Record is _very_ close to release. It's already documented in total, 
fitted for use with three different databases, and ships with a bunch 
of examples. So it's just the last stretch of spit and polish that's 
lacking for the Three-Quarters release (0.7.5).

With regard to the entire framework, I'm tentatively shooting for a 
release of some kind during late June. There's a range of projects 
waiting to start using Rails and I'll be presenting again at the 
Building of Basecamp[2] workshop also in late June. So there's a bunch 
of external pressure to get to a release out combined with my 
graduation in early June should at least open a window of possibility. 
Don't hold your breath, though -- as adviceable for any project, open 
source or commercial.

> So I was confused when I saw things in the Rails model classes like 
> belongs_to and has_many.  These look like new language keywords.  How 
> is this done?

Ruby can call methods during class or module evaluation. So what looks 
like keywords are actually just class method calls made during the 
class evaluation. It's the same "trick" used by Ruby's own attr_* 
accessor macro-like methods. It's a really powerful feature and one of 
which I'm most fond of with Ruby.

These method calls are then used to dynamically extend the class under 
evaluation based on data gathered through introspection.

This is why Rails is able to shed the bulk of configuration files that 
are used by other conventional frameworks (especially in XML-happy Java 
land). This also strips the compilation step, so any change you make to 
model, controller, or view is instantiously visible. (You can see how 
much this means to productivity in the second hour of the video 
referenced below).

> I also was wondering how the views were implemented.  How are the 
> embedded ruby tags parsed?  Does the code use eval or is there a 
> better way?

Action Views uses ERB, which is an all-Ruby version of eRuby, which in 
turn is just what you describe: embedded Ruby. On top of this is 
sprinkled a helper system, so you don't litter the views with tons 
scriplets. The helper system provides a lot of default behavior for 
standard web-applications. It's kinda like tag libraries from Java 
land. Just without all the overhead and wiring that makes people use 
Java scriptlets in the first place.

There's a couple of presentations available at the 
http://www.rubyonrails.org/ site and a two-hour video at 
http://www.loudthinking.com/arc/000232.html.

I really do hope that June is the month were I put my code where my 
mouth is and deliver. Real Artists Ship, I'm told ;)

fn1. http://www.basecamphq.com/
fn2. http://www.37signals.com/workshop-062504.php
--
David Heinemeier Hansson,
http://www.instiki.org/      -- A No-Step-Three Wiki in Ruby
http://www.basecamphq.com/   -- Web-based Project Management
http://www.loudthinking.com/ -- Broadcasting Brain
http://www.nextangle.com/    -- Development & Consulting Services