To some degree I think it's a matter of taste, but I would much rather start from a blank slate, with a set of sensible tools to build my solution up from scratch, rather than having an almost finished product I have to carve my solution out of.
To some degree I think it's a matter of taste, but I would much rather start from a blank slate, with a set of sensible tools to build my solution up from scratch, rather than having an almost finished product I have to carve my solution out of.
I feel like this is implicit in the name: these are the guide rails, stay on them and you will deliver more value in less time than you ever have before. If you need to do anything where you have to leave them, you have deRailed the whole thing.
The train metaphor is actually a pretty good one.
I think this is arguable. It's also not that hard, for instance, to get a bare-bones node API up and running and pair it with a React single-page app. And that approach is more modular so you can replace components in the future in a way which is harder than with rails.
Then I ran into finding myself spending time on background jobs, authentication management (not the basic functionality but tinkering & modification past password reset / session management, blacklist/expiry if jwt's, etc), file upload integrations, db management (when not utilizing prisma or hasura), etc. High variety of effort spent on tasks where I found myself asking the question, "why am I having to work on this...?"
I still ship more in Rails. It's still a better tool for most things. There are cases where I'll reach to node when needs are simple and short-lived. Other tools have the potential to exceed Rails (and I hope they do), but they're not there yet.
One of my least favorite things about Rails, & one of the best ideas to emerge in the past decade or so, is react. The componentization of views driven by state is such a useful approach. Rails has historically had a has & belong to many relationship between controller contexts and views, which is essentially global and easy to get super confusing. React (and now browser-react aka web components) provide a better way of tackling this problem.
And... they hook up directly to my cache? They provide a great way of broadcasting dom updates directly? They interoperate with web components no problem where I need high fidelity interaction/performance? etc etc. Rails... has done it again.
No getting away from how useful it is.
Now that I'm hiring devs, I do not want to pay them to build a CRUD framework from scratch, I'd rather have them building business logic we can't get off the shelf for free.
But whatever ends up working for you is cool!
A majority of online information based systems take input via forms and retrieve data from a database based on that input.
This is where Rails is the GOAT.