Rails Cleaning up the mess

Seems like the 0.9.4 release required a public launch in order to find the last snags. No game, no pain, or something. The changes are:

Action Mailer

  • Fixed sending of emails to use Tmail#from not the deprecated Tmail#from_address

Action Pack

  • Fixed bug in page caching that prevented it from working at all
  • Fixed a bug where cookies wouldn’t be set if a symbol was used instead of a string as the key
  • Added assert_cookie_equal to assert the contents of a named cookie

Active Record

  • Fixed that the belongs_to and has_one proxy would fail a test like ‘if project.manager’ — this unfortunately also means that you can’t call methods like project.manager.build unless there already is a manager on the project #492 [Tim Bates]
  • Fixed that the Ruby/MySQL adapter wouldn’t connect if the password was empty #503 [Pelle]


  • Added 5-second timeout to WordNet alternatives on creating reserved-word models #501 [Marcel Molina]
  • Fixed binding of caller #496 [Alexey]

…you may need to use “gem install rails”, and not just “gem update”, to install the latest version.

Rails 0.9.4: Caching, filters, SQLite3...

Another incredibly strong release sees the light of day as we move one step closer to the mythical 1.0. This release tackles one of the five steps on the roadmap in form of caching as well as adding a bunch of other cool stuff.

  • Render Caching: Added an extensive caching module that offers three levels of granularity (page, action, fragment) and a variety of stores (file, memory, DRb, MemCached). Read more
  • Conditional filters: It’s now possible to limit the actions that a given filter will apply to within a controller using either :only or :except. Like, before_filter :authorize, :only => [ :edit, :delete ]. Read more
  • Associating unsaved objects: Associations between unsaved objects makes it much easier to build big graphs that only makes sense to be saved together. Read more
  • Database compatibility: SQLite3 is now supported by the sqlite adapter and MySQL 4.1.1+ is also supported by the included Ruby/MySQL driver.
  • Numeric bytes and time: Rails has taken upon itself to extend Ruby in a few spots, such as adding the possibility for expressions like 45.kilobytes + 2.3.megabytes and 45.minutes + 2.hours + 1.fortnight. Read more

Those were the highlights, but Rails 0.9.4 includes no less than 50 changes, fixes, and features. 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.3.

An unusual high presence of Macs

Most of the core developers in the Rails community are using Macs and they’re certainly not afraid to say so. In the hours surrounding the latest MacWorld, the #rubyonrails channel could just have well have been renamed the Mac Enthusiast channel (actually, it did have the title “Have you ordered your Mac Mini yet?” for a brief moment). But I didn’t know that we actually had an evangelist among the Rails users that was featured on Apple.com:

Gianni is known as “yipstar” on #rubyonrails who says “I’m working on a bunch. A Flash/Ruby ecommerce site for my brothers Tee-Shirt company. A couple small rails site for my old employer, simple stuff. And I’m almost done with my delicous clone supped up on steroids.” Rock on, Gianni!

Having problems running tests under 1.8.2?

Unfortuntately, the snapshot of test/unit included in Ruby 1.8.2 is broken for use with Rake. Steps are being made to remedy the situation, but in the mean while, you can apply the fix needed to the Ruby source itself. It’s a two-line change, but pretty important two lines.

In order to apply this fix, you need to:

cd /usr/local/lib/ruby/1.8

(or where ever you have Ruby installed) and do:

patch -p0 < /path/to/fix/dir.rb.cleanup.patch

Hopefully a more permanent solution can be found in Rake or Ruby shortly.

It\'s all about the applications

While videos and talk are all nice and good, it’s the applications built that has the power to propel frameworks into stardom. Basecamp has served as a flag bearer for a long time, but with the launch of 43 Things, it’s finally getting some assistance from another high profile public site. Alexander Payne takes note:

43 Things was built on Rails. Rails delights me in portions of my being that I never knew existed, much less were capable of being delighted by a web application framework. My infatuation with Ruby, dormant two long years, has been mightily rekindled by Rails. I really quite genuinely want to drink a beer or 12 with David Heinemeier Hansson.

Sure thing, Alexander. I’ll be in Seattle from the 26th until the 30th. Maybe we can figure out a night out for Rails developers and interested.

But what does "proven" really mean?

Michael J. discusses the obligation of the consultant to pick proven technology for custom jobs, but comes to the conclusion that the question is out of sync. It should focus on potential, not risk. When it does, you start questioning terms like proven:

But what does “proven” really mean? It is important to consider the case where something new takes off fast. At lunch we were specifically discussing Ruby on Rails. Two of us thought it looked pretty good, and one person was thinking about a small test project to check it out. Ruby on Rails has the opportunity to take off quickly because Basecamp was built on it, and everyone who’s used it knows that Basecamp is an awesome product. When they find out it was developed in two months by one guy they cannot believe it. Why only two months? Ruby on Rails, supposedly. Sometimes “new” becomes “mainstream” very quickly. It appears that this could happen to Ruby on Rails this year. That brings with it a host of potential problems, but obsolescence isn’t one of them.

Rails runs through XP Cincinnati

Jim Weirich is a member of the Extreme Programming Cincinnati user group that up until their last meeting was largely a Java gathering. Then something happened as Jim started to show the rest of the group what Rails could do. Mark Windholtz summarized it on their mailing list:

We watched a 10 min Rails video… It blew us away how easy it was to build a minimal web app in 10 minutes. After the video Bill announced that he had a Rails server installed and running. Gerard commented that it took us 2-3 meetings to get Tomcat configured for peoples PCs, while it took Bill about 20 minutes to get a page showing in an unfamiliar technology.

And we realized that XP is not just java (for goodness sake!). We can pair, iterate, and test with Rails just fine. In fact it is probably more XP in that we may be able to talk more about OO design issues that if we were stuck in java land. So it turned out unanimous that we would load-up on Rails and next month start developing something.

I think this is going to be huge amounts of fun.

Welcome to the fun, Mark and the rest of the XP-cincinnati group! You guys should come hang out in #rubyonrails at your next meeting and report on the progress. We’d love to hear how it’s going.

UPDATE: Jim just wrote me with the correction that he wasn’t even at that meeting. The group has upon their own volition found their way to the video and gotten interested off that. That’s even more impressive!

Rails go web services with XML-RPC prototype

Lars Hoss wanted an XML-RPC interface to his Rails-based weblog, so he hacked up a quick prototype:

Pretty neat! We’re currently investigating a number of different schemes for how to officially support Web Services (SOAP/XML-RPC) “The Rails Way”. Where getting good support from two of the commercial entities using Rails for their work. Announcements will follow.

Oh yeah, and Lars is a Tapestry convert, by the way. On the experience with switching from Java/Tapestry to Ruby on Rails, he writes:

Though I still like Tapestry very much, I prefer Rails for my private projects. Private free time is spare and Rails helps me to use it more efficient.

Rails on Lighttpd with FastCGI

Although Apache is the default choice of web server for Rails, it is by now means tied to it. Any web server that’s capable of doing a wee bit of rewriting in front and handling FastCGI applications can run Rails. Lighttpd is just one such web server.

If you’re interested in trying that out, TJ Vanderpoel has written an extensive tutorial on how to get Rails running with Lighttpd using FastCGI on Debian.