Rails 0.10 on lighttpd without scaffolding video

Matt Moriarity has managed to do something I’ve been pledging for a long time: Record an updated video for Rails 0.10 using lighttpd and not“cheating” by using scaffolding. Very cool. He builds a small weblog all by hand and even stops to comment on the approach in text throughout.

Check it out Moriarity’s excellent video: Site 1, Site 2

I mistakenly attributed this to Stian Grytøyr in the original post. Sorry about that, Matt

Another tale about Rails scaling

TJ Vanderpoel is currently preparing a case study on how he scaled his mortgage processing application with a single lighttpd web server powered by a cluster of FastCGI application servers. All using Ruby on Rails. But as a counterpoint to the latest round of FUD’ing, he posted this preliminary tale about how his company is scaling Rails:

As far as scalability, apache with fcgi certainly isn’t the best option, for rails. In our environment we have one lighttpd process serving requests in a round-robin fashion from 10 to 100 fastcgi rails listeners. We move anywhere from 300 req/second to 1000 req/second with a dual opteron webserver and the fastcgi listeners can be well in back of the webserver. The only feature i’d like to see added to lighttpd is to be able to add fastcgi listeners on the fly, currently you have to restart the webserver to add listeners. Nonetheless, if you’d talked to rails developers you’d have learned lighttpd is the recommended hosting platform for production applications, as it takes care of many of the speed, and all of the scalability issues.

Vanderpoel should be ready with the full case study on his scaling adventure later this week.

Four Days on Rails

John McCreesh has published a great new 30+ paged tutorials for getting started with Rails entitled Four Days on Rails.

Rails is well documented on-line; in fact, possibly too well documented for beginners, with over 30,000 words of on-line documentation in the format of a reference manual. What’s missing is a roadmap (railmap?) pointing to the key pages that you need to know to get up and running in Rails development… Four Days on Rails is designed to fill that gap.

McCreesh’s has his own site for the book, but I’ve also taken the liberty to do a mirror for the book.

"What the fuck are we gonna do now?!"

Master: “Hmmm. The argument on programmer productivity seems to be lost..”
Apprentice: “It’s game over, man. Just game over! What the fuck are we gonna do now?!”
Master: “You are mistaken, young one. There is always the ace: claim it can’t scale!”

Matt Raible caught the glimpse of a good headline and ran with it: Rails is 8 times slower than Spring+Hibernate. The honorable source of this “fact” comes from “rix” — a commenter on one of Dion’s post (ironically enough railing on this kind of silliness). He has done “extensive performance testing”, but of course doesn’t care to reveal his method, the apps compared, or the hardware setup used.

With this he concludes that Rails isn’t deserving of its attention and that he would rather develop with “…deployment descriptors! And verbose crap. And repetition.” Hehe. I don’t know where to start. Or even if I should. Perhaps other than to say that whenever Microsoft attempts to pull meaningless FUD like this, we call them on it.

Do note that I don’t doubt Java to be faster, I’m objecting to the silliness of publicizing and promoting figures with no context and to draw conclusions from these figures

RubyGems 0.8.6 fixes critical error

So now that you just upgraded to RubyGems 0.8.5, please do so again to 0.8.6. The 0.8.5 version contained a bad bug that would render the rails command to create a new skeleton setup useless. Thankfully, the process is even easier than last time. Just one command: gem update --system.

Rails book slated for late-summer release

Dave Thomas is busy writing the first Rails book and has been making great progress lately. In his blog post Quite a Week For Rails, he says:

I’ve actually finished enough of my new Rails book that I’ve released some chapters to a wonderful panel of reviewers (no more needed right now, thanks). I’m starting to get happy about the way this book is turning out—I’m looking forward to a late-summer release.

The book is naturally to be published by The Pragmatic Bookshelf and distributed by O’Reilly.

Get a life-time TextDrive for $399

TextDrive is our wonderful host. They’re contributing big time to the development of Rails and are up to date with the latest (like exploring lighttpd as an Apache alternative). They’ve won the heart of many big-time Railers, like the Pragmatic Programmers, Scott Barron, Marten Veldthuis, and many others.

Now they’re offering you a limited opportunity of a life-time account for just $399. The drive is called VC II and is a very interesting way to allow users to expand the company’s ambitions by getting something in return and keeping foreign capitals (and the onslaught of strings attached) out.

Better be quick, though. The last drive they did sold out in no time fast.

Installing Rails through RubyGems 3x faster!

RubGems 0.8.5 has been released and turbo-charges the installation of new gems and updating of the repository lists. In general, it’s about three times faster than the old version. All you have to do to update is:

gem install rubygems-update

Bruce Tate discovers Ruby on Rails

Bruce Tate is the author of Bitter Java and Bitter EJB, so if you were just judging by the titles of those books, you may not be too surprised that Tate is at least interested in an alternative. There’s a long way to get a conversion out of it, but Tate at least haves Rails on the radar and are seeing some of the possibilities:

Which brings me back to Ruby on Rails. It’s got that magic. I’ll just give you a little taste. When you’re mapping a Java class to a schema, you must often type the name of a property five times. FIVE TIMES Count them. Three in the bean: the getter, the setter, the instance variable. One in the schema: the field. Two in the mapping: the property, and the column. In Ruby, you type it once. Reflection and inspection of the database handle the rest. You use intelligent defaults and naming conventions to handle the rest. You can always override differences, but you don’t have to.

Keeping DRY is a big part of what makes Ruby on Rails special compared to the Java world. Getting rid of the bane of compilation in the development cycle is another big one.

Rails 0.10.0 loves lighttpd

With the release of Rails 0.10.0, the reign of Apache has finally ended and equal opportunity for all web servers has been introduced. The most important beneficial of this is lighttpd. The server describes itself as “…a secure, fast, compliant and very flexible web-server which has been optimized for high-performance environments” and is catching the attention of a lot of people lately.

Personally, I’ve been most interested in its FastCGI implementation that includes a load balancer component. But whether you need that or not, you owe it to yourself to check out lighttpd. Here’s a sample minimal configuration file needed to setup lighttpd to run a Rails application under FastCGI:

server.port = 8080
server.bind = ""
# Needed on OS X: server.event-handler = "freebsd-kqueue"
server.modules = ( "mod_rewrite", "mod_fastcgi" )
url.rewrite = ( "^/$" =>"index.html", "^([^.]+)$" =>"$1.html" )
server.error-handler-404 = "/dispatch.fcgi"
server.document-root = "/path/application/public"
server.errorlog      = "/path/application/log/server.log"
fastcgi.server = ( ".fcgi" => ( "localhost" => (
 "min-procs" => 1,  "max-procs" => 5,
 "socket"   =>"/tmp/application.fcgi.socket",
 "bin-path" =>"/path/application/public/dispatch.fcgi",
 "bin-environment" => ( "RAILS_ENV" =>"development" )
) ) )

This configuration is also to be found in the README file of new Rails installations.