Rake is just… lovely. There’s no other way to describe it. I just moved our XEVA Framework to rake and ended up with this build script weighing in at only 35 lines:
Check out the :harvest task where I’m requiring an external file that’s contains code for bundling up the various build outputs, currently just .dll and .pdb files. The file looks like this:
I’m in love with Rake — and the idea of executable configuration in general — for a few reasons:
1) I can take my scripts down to a reasonable size. The NAnt script for this simple build weighed in at a hefty 162 lines. These two files combined hover around 65. That’s much better signal to noise and it only gets better with the more complex scripts.
2) I can make new tasks lickity split. With ruby you just write some code inside a task. It’s easy to leverage popular libraries like Hpricot for XML poking and peeking and such. No need to compile tasks and manage separate projects just for build code.
3) I can see what’s happening! Ruby is a very flexible language. I can use it’s tricks to pimp out my build scripts and I don’t need to sift through angle bracket madness. Note how I opened up the Dir class to define a new method, exists?. Ah the joys of ruby. We can make things somewhat familiar to our .NET teams while keeping it idiomatic. With tools like IronRuby this prospect get’s even juicier.
If you’re just getting started with rake, you need ruby first. The “one click install” at the official Ruby site is what I’m using and it’s a pain-free setup. There’s plenty on Google, but I recommend giving the Rails Envy boys a click for a super-basic-but-effective primer. Remember the sh method is your friend and, when in doubt, RTFM!