I’ve been working with Rails for a few weeks now and it’s making “install” vs. “build” decisions much harder —
(We interrupt this post to get two things out of the way:
Yes, Rails is as good as everyone is saying.
And yes, that pisses me off too. I worked so hard at becoming a PHP ninja that I’m bitter about having to walk away from it to get this level of functionality and polish. But, time marches on, and so shall I.
Okay, back to my point...)
At its core, Rails lets you build good stuff fast. Really fast.
Say you come up with a data model for your church Web site. Let’s say you have a half-dozen tables for various things you want to manage: sermons, news articles, staff profiles, etc.
If you have the database built, Rails will give you a functional administrative interface for the five tables in...maybe two minutes (you have to run the same script five times – how fast can you do that?).
Since you probably have some relationships in there – foreign keys and stuff – give youself another five minutes to set up all the management for those. Then give yourself maybe two hours to really dial in the interface, add validation, file uploads, etc.
So, in just over two hours, you’ve gone from five database tables to finished app. Users will tweak of course, but the way Rails puts it all together, tweaking is a wonderfully simple and elegant affair. I can honestly say I’ve never written kludge with Rails (yet – I haven’t been coding it long).
What this means is that the line blurs between (1) using a pre-built system, and (2) rolling your own system. In the above example, we rolled our own CMS...or did we? Sure we coded some stuff, but Rails did all the real work. In the end, we did less work than if we installed and configured a pre-built content management system.
It just so happens that we’re looking for a CMS for our church. I’ve always been in the “use a system that’s already been built” camp, but with Rails, I don’t know if that still applies. I’m looking at all these systems and thinking, “I only need 10% of the functionality they offer, and I could built that functionality faster with Rails that I could wrestle it out of any of those systems.”
So, like I said, the line between “build it yourself” and “install and configure” really blurs. You could look at it that Rails is the CMS, it just doesn’t know it yet. It just needs to be...oh, I don’t know...installed and configured.
I don’t want to reinvent the wheel, but with Rails, the wheel is there, I just need to smooth it out a bit. And is that so bad?