Really Getting Started in Rails

Amy Hoy is a designer, programmer, and writer digging into Rails. She read Curt Hibbs’ great introduction article on Rails at O’Reilly’s OnLAMP, but decided she’d like to decorate it a bit with why’s:

The only thing is, like all tutorials, it doesn’t always explain why. Why is that the syntax? What does that line mean, exactly? Why is the application designed so it fits together that way? Me, I like to know why—in reality, because of my designer brain, I have to know why to really grok it and retain it.

That decoration turned into a whole article entilted Really Getting Started in Rails that works very well as a companion to Hibbs’ original article. Great work, Amy!

Off the Treadmill, Onto the Rails

Mike Clark, author of Pragmatic Project Automation, caught up with me for a few quick questions about the automation of Rails. A snippet:

Mike: Everybody who tries Rails raves about how it makes them super productive. What types of automation does Rails employ to help developers create great apps so quickly?

David: The basic philosophy is to encourage good behavior through invitations. So, for example, when you use the generator to create a new model or controller, it also creates unit test stubs that are all hooked up. You just enter a new test case and off you go. The same goes to fixtures, where a YAML file is already created and hooked up, just waiting for you to input the data…

We also talk about Rake and continuos integration with Damage Control. Additionally, it was great to see Mike so excited about Rails:

Rails projects are popping up all over. I just started converting a small J2EE project to Rails, and let me just say that Rails is highly addictive stuff.

Rails 0.9.5: A world of fixes and tweaks

This release is mostly about polishing the Rails by closing holes, deficiencies, and subtle extensions to existing features. The long-awaited Directions and generator upgrade have been postponed to the next release. The highlights of this release is:

  • Rewritten reloading: Working in development with models and controllers reloading on every request now resembles “the real thing” a lot more by actually removing the model classes before reloading them. This fixes a bunch of subtle bugs and makes it possible to remove a method and see it reflected without restarting the application.
  • Create and update collections: Through calls like text_field "student[]", "last_name", it’s now much easier to get input tags like input name="student[123][last_name]"..., which together with the fact that Base#create, Base#update, Base#destroy, Base#delete, AssociationCollection#build, and AssociationCollection#create now all accept arrays enables handling of many records at once.
  • Stopping after render/redirect: Any before_filter can now terminate the chain by calling render or redirect and the pattern of redirect-and-return now works again. The first call to either render or redirect wins as well and subsequent calls are ignored.

That’s just three of the 37 changes, fixes, and additions available in Rails 0.9.5. You can read the full story in the changelogs for Active Record, Action Pack, and Rails.

This release shouldn’t require any changes to your application if you’re coming from Rails 0.9.4 unless you were relying on const_missing to load non-AR/AO/AC classes. In that case, you’ll have to start being explicit with require_dependency for the reloading to be triggered.

Pedrosa on Rails vs WebWork: 'Language DOES matter'

Joao Pedrosa has been using both Rails and WebWork and iterates five key points on why “…WW is clearly inferior to Rails in every aspect” before arriving at the following conclusion:

Although I think RoR is superior to all Java web framework I used so far, I really respect the WW guys for building this framework which is one of the coolest in Javaland (unfortunately still ruled by crapware like Struts) but there is absolutely NO WAY any Java framework can compete with RoR… just try to build some real life app with it to figure out yourself how much precious time you’ve been wasting until now.

Time to shutdown IDEA and launch TextMate, 2005 will definetly be the year of Ruby on Rails! :)

'Ruby on Rails is unbelievably good'

Daryl discovers Ruby on Rails:

Ruby on Rails is unbelievably good. It’s too good to be true almost… Quite honestly, in an afternoon I built a completely working web application without the fancy css frills and such mind you, but completely usable that would have taken me the weekend with other methods… I’m still kind of in shock as to how productive I was this weekend with RoR. And this was while learning how to program in Ruby.

Welcome to the new world, Daryl!

Rich clients with Rails and XUL

Zed Shaw put together a simple proof of concept application in a couple of hours to demonstrate the possibilities for rich clients in Rails and XUL. Being XUL, it naturally only works in Firefox and Mozilla, and being proof of concept, it still has plenty of stuff missing. But it does provide a window into the kind of applications Rails are capable of powering if you’re willing to limit the application to the Mozilla platform.

railsxul.png

UPDATE: Zed has explained how the prototype works and offers a few suggestions for Rails.

Celebrating six months anniversary!

On July 24th of last year, Rails 0.5 was released through RubyForge. It mustered 357 downloads in just five days. Today, fifteen releases later, we’ve pushed more than ten thousand gems and five thousand tgz/zip versions over the virtual counter. At the time of writing, the IRC channel holds 153 handles. We recently got Slashdotted and a ton of cool applications are coming out using Rails.

We’ve certainly come quite a long way in six months.

But its only going to get better. A lot better. Dave Thomas is writing the first book on Rails, the mystical 1.0 release is just 1-2 months away, and there’s a number of cool speaking engagements coming up at future conferences that’s going to push awareness even higher.

If you’re reading this, I salute you for being one of the early adopters (or at least interested) that has helped bring Rails this far. Happy half-birthday, Rails!

CD Baby leaves PHP behind for Ruby on Rails

Derek Sivers have just announced that CDBaby.com is about to embark on an application rewrite that’ll replace the 90,000 lines of PHP code with an alternative built using Ruby on Rails.

CD Baby is a very successful etailer of independent music. They list 82,443 artists that together have sold 1.2 million CDs! And unlike the cartels, CD Baby is all paying back to artists — $12 million has made it back into artists’ pockets.

Derek describe the reasoning behind his departure from PHP to Ruby on Rails as follows:

Now, with Rails, there are a team of passionate geniuses contributing to this web-making framework daily. It’s small enough that you can stay on top of it, and watch this framework get more and more powerful by the week. Improvements that are pragmatic not political. People using it to make effective websites, contributing to the shared framework around it as they go. Why not take advantage of all this brilliant work?

Congratulations, Derek! And congratulations to the star team of core Rails contributors that he has chosen to assist him in the transition: Jeremy Kemper (bitsweat) and Tobias Luekte (xal). Without a doubt two of the very finest Rails developers out there. Great choice!

Also, I love how Derek prefaces his comment section:

Please no flames about Python, PHP, Java, or MySQL. My choice to use Ruby + Postgres was due to my love of them, not hate of something else

Loving Ruby, loving Rails is not about hating something else. It’s not a zero-sum game where love must be balanced with equal amounts of hate.

Speeding up CGI access to Gem Rails

Jamis has a nice article demonstrating how he decreased the reload time from 2.4 seconds to just 1.1 seconds on CGI access to his Gem Rails application:

Rails’ preferred installation method is RubyGems, a convenient, powerful utility for installing Ruby libraries and applications. Unfortunately, that convenience comes at a price—loading a library via RubyGems adds some overhead. Recent releases of RubyGems have made some good progress in reducing that overhead, but it still exists.

If you’re running WEBrick or FastCGI for development, this is not an issue, though.