Jon Udell discovers Ruby on Rails

Jon Udell discovers Ruby on Rails and shows special affection for Active Record in Separating code from its environment:

I’ve only scratched the surface of Ruby, but when I recently started a project that required a Web-based interface to a SQL database, I reached for Ruby on Rails, because I’d heard it’s a great way to automate the tedious chores of Web development. If there is another object-relational mapper that is as powerful and yet as lightweight as Ruby on Rails, I haven’t seen it.

Addressing "bogus statements" about Rails

Xavier Defrang has been following the heated arguments about Rails for some time and got fed up with a bunch of “…bogus statements (FUD?) and issues raised in the TSS discussion”. So he went ahead with a summary of the claims and why he believed them to be without merit.

I particularly like the code snippet for putting the “code embedded in HTML is evil” nonsense to rest:

Of course, you could even write that snippet as a single readable line:

<%= @collection.collect { |item| content_tag "li", item.some.nested.property } %>

Code embedded in HTML is only evil when you’re not using a programming language suitable for the purpose and when you don’t apply sound principles of abstractions.

Rails mentioned in Reuters story on open source

The rise of small outfits building big things on constrained budgets is the theme of a Reuters story carried by Yahoo! News. It includes a quote by Tim O’Reilly and talks among others about Odeo. And of particular interest on these parts about their use of Ruby on Rails:

Evan Williams, who helped create Blogger software and later sold it to Google, is working with a small group of developers in San Francisco, to build Odeo, a highly anticipated new application due out in the next few weeks. Odeo relies on a freely available set of simple yet powerful database programing tools known as Ruby on Rails.

Rails enters and Ruby reach goes up by 2-3x

Rob Harwood spotted this very interesting trend from Alexa describing the rise of Ruby reach as Rails enters the scene:

Harwood interprets the correlation:

Forget the hype over Rails — not important. Forget the anti-hype too — irrelevant. Instead, just look at this graph from Alexa.com. See any correlation? Rails is a killer app, regardless of hype or anti-hype. As soon as Rails appeared on the scene, Ruby has experienced a 200% increase in web traffic over three months.

Justin Gehtland is back with numbers to back it up

Justin Gehtland is back with numbers to back up his original claim that “Rails is actually faster” for his application than the Java/Spring/Hibernate/JSTL stack powered version was. Through various benchmarks, he has found Rails to be roughly 15-30% faster than the old Java version. Interestingly enough, it seemed that Rails was especially better performing on deeper domain features:

What I found was that, the less complex the feature, the faster the Java app served it relative to the Rails app. The more complex the feature, the slower the Java app served it relative to the Rails app.

Looking at pages that are a good fit for caching, the difference is a lot more startling. While Justin admits that there was probably a lot more work with tuning and tweaking that could be done on the Java versions (where page caching in Rails is triggered by 1 line of code), his tests shows the Rails version to perform 1,754-1,785 requests/second vs the 80/88 requests/second on the Java side.

The blistering performance is naturally due to the way that Rails steps out of the way for page caching and lets lighttpd serve the caches straight from the static cached files. So while the difference is 20:1, it’s not that interesting a comparison. Except for the point that this type of page caching is integrated in the Rails framework and used by default. So it requires no effort to get this type of performance.

But even though Justin now has the numbers to back up his claim about his particular application, such numbers are not in generally all that interesting. I concur with Justin that the interesting conclusion is that Rails isn’t naturally dog slow because its in Ruby and a Java/Spring/Hibernate/JSTL-stack app not automatically blazing fast because its in Java:

To me, the eye-opening revelation isn’t “Rails is faster than Java/Spring/Hibernate”. It’s “Rails can be very fast”. I think that there is a lot to be said for Rails, and it deserves much of the press it is getting.

Size of the application
Just as extract general lessons about performance from particular applications, so is it hard to compare the size and complexity of two solutions implementing the same application. So measurements such as KLOC are hardly the be all, end all. They’re merely indicators.

But as such indicators go, Justin serves a rather nice one with the comparison on his application. The Rails application was done with 1,277 lines of code and configuration while the Java-stack application required 4,454 lines. About a factor of 3,5×. And here comes the kicker, the Rails application includes a month’s worth of new features added over the abandoned Java version.

So what does all this mean? Justin concludes…

I think that the application I’m working on is perfectly suited for Rails and Rails is perfectly suited for it. I think that I have had more fun working on the Rails app than the Java version. However, I think that the Java version is just as capable, and could be just as performant, as the Rails app.

I think there are plenty of applications, and development teams, that are better suited to Java and its immense universe of available support libraries. I certainly am not going to stop developing in and learning about Java just because I’ve discovered Rails. On the other hand, I am going to spend more of my time trying to find projects that I can use Rails on.

Justin Gehtland is the co-author of Spring: A Developer’s Notebook due out this month (congratulations!).

Exploring Ruby on Rails in a conversation

Ara Howard and Doug Fales has a great article on Linux Journal exploring Rails through a conversation. They talk about how thinks work building a small blog engine and touches on many of the Ruby facilities that Rails employ to do its magic. They also talk a bit about why some of the reactions to Rails have been so explosive and what kind of fears that are triggered when new tech hits the street. Great stuff.

Moved to a brand new dedicated server

The terror reign of intermittent MySQL errors has ended. We moved to a brand new dedicated server this morning thanks once again to the kind crew at TextDrive.

UPDATE: The wiki is offline for a bit today as the server will be reconfigured to allow larger memory allocations.