I’ve never been a rails dev, but it popularized opinionated MVC, correct?
For that reason I would avoid it these days. MVC helps coordinated teams of people move faster on small to medium sized projects. It does this at the price of heavily coupling your front and backend. I believe rails couples the DB as well, or can? (Showing my ignorance of the Ruby world here)
We’re all developing with AI now. When things are coupled, AI breaks them. More than this though, with AI you want a completely decoupled frontend that knows nothing about the structure of the backend for maximum iteration speed. You want formal DTOs and other isolation abstractions small teams hate because they provide the decoupling that only large teams (or AI) benefit from.
Fully decoupled, you can build your frontend out on fake (AI generated) data, reworking the whole UI 12 times without thinking about the backend and database at all.
Rails (I’m speculating) makes small talented teams more effective. One person can do more. But if the price is coupling, and you have unlimited AI labor that will never be intimately familiar with the code, then you still pay that price without getting the human oriented benefits.
Decoupling makes the isolated change easier while coordinating the change that affects multiple layers harder.
People used coupled frameworks to make the layer spanning changes easier. AI is not great at such changes either but it can put in the work to properly split the change it is trying to make into separate per-layer changes ahead of time. So I think in general you are right that for AI it's better to have things very decoupled.
It's still worth having things that ensure consistency on layer boundaries, like for example using backend types (dtos) to generate fronend types so incompatibility doesn't go undetected.
You make some great points here.
I would say in an API-only context, we're seeing a lot of benefits in using RoR for the back-end and pairing it with Tanstack for the front-end.
Realistically, when/if it matters, we'll just port to a quicker language, which is now effortless.
But when you're in build mode, Rails is wonderfully ergonomic (for humans + AI).