It’s okay to love Ruby on Rails for web development in 2017.
There was a time when every third post on HackerNews was relevant to Ruby on Rails, if not Ruby. That time has passed. Does that mean Ruby on Rails is dead? No. Picking a language or framework is kind of like adopting: the older they are, they less cool they seem.
Having said, Ruby on Rails is mature; it’s that older dog in the shelter with personality.
There are lots of MVC frameworks across many different languages, from PHP to Elixir to Go. Some of these new frameworks even market themselves as “Ruby on Rails for X language”
Sorry, but that’s incorrect.
Ruby on Rails isn’t anything that any of the other frameworks aren’t. That’s not to say that the inverse isn’t true: Ruby on Rails has what the other frameworks don’t have: mature tooling and a massive and well-developed ecosystem.
Sure, it’s chicken versus egg. Sure, you’ll lose style points by picking the older dog from the kennel. But who are you trying to impress? Yourself? Your founder? Your partners? Your colleagues?
You should be trying to impress your customer, your guest, your user.
They will never know what back-end you choose. They care about stability, features, and ease-of-use. And the flavor of the month framework doesn’t offer that.
The reason why I love Ruby on Rails is because it’s made by people who are way smarter than me. Therefore, I am allowed to be dumb. And I love being dumb, because I can spend my time getting less dumb (or more informed) about domain-specific code.
Things I don’t have to worry about with Ruby on Rails:
- Tooling (rake, thor)
- Ecosystem (Rubygems)
- Views, responses (ActionView)
- Routing, resource-handling (ActionController)
- Persistence, ORM (ActiveRecord)
- Mail (mail, ActionMailer)
- Authentication (Devise, Authlogic, Doorkeeper)
And they’re all so mature and battle-tested.
Sure, for bigger projects, there are valid arguments MVC. There’s also an adage, “once you have to go beyond Rails’ internal structure things get messy.” And you know what? That argument is absolutely correct and valid. Things do get messy if you don’t follow along Rails’ conventions. If
Have you ever seen a long-time PHP developer’s Rails codebase? It’s littered with camelCase and flooded monkey-patches. They don’t know why they’re having to do these things, or why they can’t do it their way. The reason why they can’t do it their way is part of what makes Rails great: it’s the underlying built-in communication of ideas (otherwise known as conventions)
I love Rails because it doesn’t make me think about all the stuff I don’t want to think about. I want to focus on domain-specific stuff and not have to worry about authentication, authorization, rendering views, my ORM, and half-dozen other things that Rails absolutely rocks at.