Thursday, July 21, 2005

Ruby On Rails

Well, I did it. Finally. I decided to take a close, hard look at Ruby on Rails.

I have to say, WOW! I'm not really sure how to feel about it all, but I can certainly say that I am initially impressed. Here is my synopsis so far, from a complete newbie and hardly-quasi-programmer skill level.

The ability for Ruby On Rails(RoR) to quickly get the developer up and running is quite refreshing. After spending years on a number of different platforms I can honestly say the RoR has been the only experience that has taken me from A to Z in one sitting. And thanks to an excellent demo video, it was easy to follow.

Everything just worked. And without any major configurations I was up and running with a basic CRUD (Create-Retrieve-Update-Delete) web application. RoR easily mapped my database and created the basic scaffolding (web-user-interface) for the elements in the database.

Templating and the UI were easily configured and modified. Error handling and "flash" prompting (alerting users that an action completed successfully) were easily implemented.

Another nice feature is the zero deploy time. That is, the moment you edit and save a file/template/config in the code base, you can refresh your webapp page and it will immediately update (unless you played around with the database config, in which case you will need to restart the ruby server). No more endless restarting of servers and waiting for pages to compile (e.g. J2EE). This feature alone saves countless hours of downtime (and configuration of IDE's like Eclipse for Tomcat).

I don't know what to say yet because I'm still just amazed that it worked the first time. Seriously! I have been putzing around with JSF/Struts/J2EE/etc for over a year now and STILL HAVE NOT FIGURED IT OUT or easily made it work. At least RoR has focused on the real people -- THE PROGRAMMERS!! *cough* JSF *cough* Yes...there don't appear to be any cool GUI tools/IDE's for it yet, but dang...it works without building 20 different files.

With RoR it just made sense to me. Then again, I'm not a programmer extraordinaire. I just want to spend my time on the UI and the database. NOTHING ELSE!!!!

I still don't know if I'll switch over, but I have to say that it is unfortunately compelling. There are alot of things left unseen for me, like the following:

1. Will there be a strong and loyal community?
2. Will the enterprise world pick it up?
3. How scalable is it?
4. Since I am not as familiar with the Ruby community, how sensible is their roadmapping and (reverse) compatibility? Will they break everything I've worked on the moment I want to upgrade?
5. How capable is their i18n? And other features? Testing Framework?

Other than that, great job RoR guys/gals!

3 comments:

Peter Cooper said...

The testing framework is one of the strongest things about Ruby On Rails, check it out.

The community is strong and blowing up quickly. I have now spotted the first enterprise contracts for RoR popping up here in the UK, although the market is still small.

It's all exploding and anyone involved now is pretty busy with work, and well ahead of the curve :) Welcome!

Robert Bousquet said...

This post from Loud Thinking might answer your questions about how Rails scales.

Ashish Kulkarni said...

#1. There is already a strong community, which is TOO loyal and fantatic sometimes (I include myself in the above classfication).

#2. Dunno. See this post by David Geary for thoughts on the same.

#3. For discussions of scalability, check out Scaling using processes instead of threads and this rather forceful article.

#4. Development has slowed down quite a lot recently. Releases were much more frequent from 0.7 - 0.13.1, where it's been stuck at quite a while (possibly for 1.0). Reverse compatibility has always been excellent. I honestly don't know of roadmapping, as it's pretty much feature complete for the core developers' needs -- that's one reason I suspect releases are less frequent :-)

#5. For internationalization, check out the manual Using Gettext To Translate Your Rails Application.