Well, it works for us. We’re writing a pretty straightforward web application – and Rails seems to do those reasonably well. As much as possible, we try to stay within the Rails way.
Rails is ‘web-native’. So is our application. It’s a good fit. Rails makes it easy to write for the web. We care about accessibility and standards – Rails gives us the control where we need it. Rails also offers us the ability to use recent standard web functionality. We can build up-to-date, innovative features.
Our work – well, most of it – is open. We wanted to use a technology stack which was similarly open. We’re not tied to a particular vendor – not that having a vendor is necessarily a bad thing, of course.
Why not Django, or TurboGears, or Drupal? No particular reason. People with Rails skills were easier to find. We didn’t go through a long – or even a short – comparison between web stacks. We just chose Rails. Could we have done it all in Django? Probably. But – it doesn’t really matter what we use, just as long as we can provide the service.
The Rails community in London is pretty strong. We’re based in London. There’s user groups, O’Reilly books, people who we can talk to if we have a problem. There’s pretty comprehensive documentation. The solutions to most of our problems are a Google query away.
What we’re doing isn’t terrifically complex, nor do we have huge amounts of traffic. We’re only at the beginning of the ‘scaling’ journey. But other people seem to have managed it…
Rails is relatively easy to pick up and to cross-train staff in. It’s a ‘no-surprises’ MVC stack. It’s public – and standardised. If we mention Rails, people usually know what we’re talking about. People can get familiar with the framework and be productive early.
We also appreciate the tools that we can use that support good development practice. rspec and autotest are especially useful. And behind Rails, there’s Ruby. We like Ruby. We like writing domain logic, not ‘code’.
We’ve most likely got some challenges ahead: more data, more caching, proxy setup. We’ve chosen a tool that will help us deliver.