It's 2010. You want to build an web application. PHP is dead. Java is dead.
If you've got a blank slate, use Rails. If you've only built a prototype, switch to Rails as soon as possible. If you decide to ignore Rails you're one of two things:
- Much smarter than me. You've won several awards for your coding chops and you're building a new Erlang framework that will replace Rails in 6 months
- A complete buffoon who knows nothing
So, before you start hurling tomatoes at me, here are five reasons you should use rails:
1. Intelligent Defaults
The Rails team has some of the smartest technologists working to improve the standard behaviors in the framework. One example of this is error validation and the flash message. The flash message is used to provide feedback to the user after an action has been taken. Things like "Thanks for signing up" or "You need to fill in an email address". Rails defaults are more intelligent. The default flash message behaves in the way users expect. Other frameworks I've seen used on software projects like Seam and Zend have extremely awkward standard behaviors that cause user confusion. Every default you need to correct sucks time away from doing cool things. There are hundreds of examples of intelligent defaults within Rails.
Don't believe me yet? Pluralize is another. Rails can automagically pluralize words like "user" or "person". 1 person, 2 people. Rails gives this to you for free too. Think about the sites you know out there built on crappy frameworks that do things like 100 user(s). Why be one of them? Why build it yourself?
2. Super-fast Deployment
Im going to highlight heroku here because this is the way deployment should be:
git push heroku master
That's it. If your deploy process takes more than 1 - 5 minutes, consider switching to Rails. (Also see Capistrano for deployment)
If you don't get something for free in core rails, the next place to try to find it is in a Gem. Gems allow you to do harder things really easily - like connecting to twitter, or facebook, or processing images. The same intelligent people working on rails extend it with gems. As of this writing there are over 11,000 gems that a developer can install to make life easier.
As one example, I had a side project where I wanted to make pretty urls - like my.com/people/colin rather than my.com/users?id=23. On a java project I worked on, it took a developer a day of work to get Pretty URLs working for me. It took me 20 minutes using friendly_id, a rails gem.
There are great rails gems for almost EVERYTHING. That's part of what you get with a solid community.
The last thing you want to do is build your application on a framework with a dead community. The community improves the framework, provides support, and shares knowledge about the best way to do things. The rails community is the most intelligent and active developer community on the web right now. That's why you have a gem for almost everything - and sometimes more than one. The rails community is innovating and other people are borrowing ideas from them. But if you're anywhere else, you're already behind the curve.
Put all of this together and you get every business douchebag's favorite buzz word: Synergy. You can build better web applications faster. My friend Euwyn thinks you can build a basic version of any application in rails in a weekend. I agree. When everything else feels like an uphill battle, ride the rails and get more done in less time.
What about Django?
This article could have been written about Django too. I like and recommend Django as an alternative to Rails, but it really depends on what your developers prefer. If you have a developer trying to convince you to use something other than Rails or Django, find a different developer.
Convince me I'm wrong
Please, convince me. Show me some alternatives that allow you to develop better applications faster than Rails. I don't think they are out there right now.