Workflows in Rails Development

What’s your workflow like for Rails development? For Nexus we’ve got a fairly good workflow set up, though we’re only using it with 2 developers. When I’m working on standalone projects (ISKsense, EVE Metrics, and other sites where there’s just me working on the code) then I use pretty much the same workflow. Here’s how it works.

Git (hosted at github.com) stores the project source code. For a given problem, I fork, make changes, merge back in, and push. That results in the Git repository on Github having the most up-to-date version on the ‘master’ branch.

At this point, CruiseControl.rb (A great continuous integration tool) picks up the update, and tries to run the full RSpec test suite on the project. Emails are sent out to all developers when the tests pass or fail, with associated error information if it’s the latter, as well as a HTML report on our CCrb instance.

Assuming we’re ready to deploy, I fire up Capistrano (an excellent pure-Ruby tool for deployment) on my development box, and run ‘cap deploy’. Capistrano connects to the server, makes a Git clone of the most recent master copy, copies in keys/database configs (So they’re kept out of Git), migrates the database, and then makes a symlink to the new project so Apache (running Passenger) is updated as to where it should be looking. And voila, we’re deployed!

I’d be interested to hear what workflows other people use for Rails development. This works fine, and Git means it scales fairly easily to accept more developers, as well as providing incredibly flexible distributed control (So I can work on my laptop away from the internet, committing, branching and so on as needed). But I’d be at a loss to make this work on a more complex deployment, say with EC2 or other virtualisation software. A continuous integration tool that played better with RSpec would be awesome, too.

Perfect Circle

Yup, back on WordPress.

Radiant is an awesome CMS, but it’s still at heart a CMS. Mephisto is just undermaintained and hasn’t got any buzz around it, but WordPress still manages to impress me as a piece of software. I’m willing to overlook that dark, PHP-based heart nestling under the pretty face.

I’m also intending to start blogging more often, and finally might get some purpose to these posts. I’ve got Twitter for my outpourings now, so hopefully I’ll continue the trend I started with more Rails, EVE and other dedicated posts on those topics rather than my usual rambling post about everything. Oops.

My laptop is very, very sorted at this point, and I plan to dedicate a few posts detailing my setup and steps to reproduce it. I’ve got everything from Compiz to monitor-mode WLAN, 2-factor authentication using one-time-pads on a USB stick to Processing running well. Not bad for a £300 bit of kit, and certainly above my expectations as to what I could achieve with it. I’ve been playing around a lot with wireless gear too, and plan to have some serious playtime with WPA2 at some point. Certainly a moderately serious aerial project is on the cards for the EeePC!