Rails is Scalable
Despite the negative press, I’ll argue rails does scale.
After developers at Twitter have spoken at length about their issues with Rails performance, it’s easy to get the wrong idea.
Rails is not the fastest framework in the world… but I will argue that performance is the last thing you should worry about when you want to scale.
In my experience, NodeJS or projects written in other frameworks start to collapse architecturally after an alarmingly small amount of complexity is added to them.
More important than how many requests you can serve per second, is how your development team can maintain productivity over time.
With the strong opinions and emphasis on code quality, Rails applications continue to remain relatively healthy and concise when compared with their brethren.
The hard cold fact of the matter is: CPU cycles are cheap. Developer hours are not. If your company and product are in their early stages of development I can almost promise you that the costs of poorly structured spaghetti code will far outweigh your hosting costs.
As our Lord and savior Uncle Bob says: the only way to go fast is to go well.
Rails is Opinionated
Rails is one of the most opinionated frameworks there is. Creating opinions in a development team is labor-intensive and wasteful. Trying to come to a consensus on the most arbitrary of decisions can be frustrating.
Where should we put files relating to our data model?
Where should we put our config?
Our email code?
Decision made. Conversation over. Now let’s get back to our desks and write some code!
Having an opinionated framework to lean back on is a breath of fresh air. If you know rails, you can instantly be productive in a new codebase. It’s easy to hire and onboard new developers because they are already familiar with the conventions.
Database Management and Tooling
Database management is hard. Managing database schemas and migrations is hard.
Rails provides you with a no-nonsense way of defining your database structures, as well as a full suite of CLI commands for migrating, resetting, seeding, dropping and creating databases across all environments.
Just look at how simple and clear Rails migrations are:
Rails handles databases in a ubiquitous way. There are database drivers for almost every popular database, and schema management and Object Relational Mapping is handled the same way across all data stores.
Item 3 of the 12 factor app is configuration management.
Rails has multi-environment support built into the framework, with sane
defaults and safety checks across
Rails also has great support for environment variables using the dotenv library or similar.
Because the NodeJS ecosystem is so fragmented, it is common to see libraries use entirely different configuration styles and it is frequently frustrating to try and massage them to work nicely together.
Rails (and Ruby) Have a Deep Culture of Code Quality
Writing clean, readable code has always been in Rails’ DNA. The language of ruby itself was designed with clear and concise code as the primary design principle.
Often people, especially computer engineers, focus on the machines. They think, “By doing this, the machine will run fast. By doing this, the machine will run more effectively. By doing this, the machine will something something something.” They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.
Matsumoto - the creator of Ruby
Rails automatically generates tests as you build code, encouraging developers to write well-tested, clean code.
Some would argue that Ruby and Rails were the combination that pushed TDD and BDD principles into the development lime-light.
The Rails team have put a lot of time and effort into creating simple (but powerful) ways to manage assets in a modern way.
Thankfully Rails has included another “batteries included” approach with the asset pipeline.
Ruby is a Pleasure to Use
It gets out of your way, supports flexible and concise metaprogramming, and has a fantastic standard library.
A Smorgasbord of Plugins
Almost no other framework can boast the shear number and range of plugins.
Rails is all about getting on your feet quickly and being ultra-productive by leveraging it’s OpenSource community. Rails provides you with the tools (and the documentation) to get up and running immediately.
Heroku embraced Rails’ “batteries included” philosophy and revolutionized development operations almost overnight.
By providing a single-command deployment and effortless plugin system, Heroku enabled developers for the first time to deploy and manage large, enterprise-level infrastructure with a simple and quick GUI.
Rails was and still is their champion framework.
One of my personal favorite aspects to Rails is the automatic tooling for generating admin and back office tools.
Perhaps the best is ActiveAdmin. Well-supported, secure, and with smart defaults; ActiveAdmin allows developers to scaffold complicated admin GUIs with just a few lines of code.
Just point the tool at your database table, list a few fields and define the layout and POOF you have yourself a personalised data management tool. Download one of the free themes and you’re free to move on and develop your project instead of wasting time building tooling.
Rails is battle-hardened and industry-proven. There is a long list of (very) successful businesses building their product with Rails.
Twitter, AirBNB, Github, Kickstarter, DigitalOcean, Groupon, SlideShare, Urban Dictionary, Couchsurfing, Basecamp… and many more!
Rails is secure, open source and ubiquitous. The talent pool is deep. The framework is mature. The community is vibrant.