Rails is still a good web framework within its limits. If you want to build a small, modest complexity web app with like 1 or 2 developers and under maybe 6 months of active development, modest traffic needs, etc, it's a good way to get everything up and running fast with best-practices for everything.
The lack of types may start to pinch some once you get an order of magnitude more developer-months into the app than that. Lack of overall speed, threading issues, and memory usage may be an issue once you get a few orders of magnitude more traffic. But while you're within those limits, I think you'll get features out on it faster than any other language or framework.
As they say, a lot more startups have died due to not being able to iterate fast enough in the early stages than from their traffic capacity, hosting efficiency, and bug count once they get into serious growth.
Of course lets silently ignore Github, Gitlab, Shopify and others: all small, modest complexity web apps built with Ruby on Rails. Look at Shopify last year black friday numbers and come back and tell us how Ruby is fit only for modest traffic.
I think it works well for SaaS type offerings where you have a low number of high-value clients. We don't do high-traffic public sites. Perhaps my opinion would be different then.
Would they be where they are today if there weren't been built at that moment with Ruby?
Both these questions are hard to answer without connecting the dots, looking backward.
Github was started in 2007, Shopify in 2006, Gitlab in 2011, Whop in 2021
It takes a long time approximately for a company to get out of the medium zone and go really big. So the only answer for this is we don't really know.
For any programming language you can find similar stories.
I tried to answer this question 6 years ago by analysing company data from YCombinator and TechStars: https://github.com/lucianghinda/programming-languages-in-sta...
Here is some data I found back then in 2019:
- Ruby companies raised 13 Billion dollars
- Python companies raised 11 billion dollars
- Java companies raised 1.5 billion dollars
- PHP companies raised 1.4 billion dollars
- Go companies raised 1.3 billion dollars
- Node.js companies raised 800 million dollars
Of course this data is 6 years old and it was based on the initial programming language and also it is about funding amount and not revenue.
I did not had time these days to update the data there.
I think how many quality devs you can hire with that language is really the only question that matters 90% of the time (ballparking), so long as the language is designed for that use case, like don't use assembly to write a production webapp.
I don't know many devs that code with Ruby, I know of more devs that code in rust and Go which are newer by at least a decade? so the question of what actual benefits it has is important.
For Go, it makes it hard to mess up error handling and easy to deploy your apps since it's all a static blob, but memory footprint and optimization can be challenging at times. For rust, it takes a long time to do things, so fast shipping timelines might not be a good fit. For Ruby, does it have anything that makes it more secure, faster to code with,resilient to failure, easier to scale,etc...? I don't think anyone answered that here.
What can it do _better_ that the other languages you listed can't or can't as well?
There's a reason that the DevOps world abandoned Ruby wholesale in the late 2010s (mostly replacing it with Go).
In a world where container orchestration allowed servers to be more fully utilised, it became increasingly obvious that the ancillary tooling (think log shipping or metrics collection) often had a larger memory and CPU footprint than the core service itself.
Formerly popular tools in this class like Sensu or fluentd have either been rewritten or replaced with Go equivalents, and Ruby seems to be more or less dead for new projects outside of the Rails niche.
Big legacy companies who have invested heavily into Ruby cannot switch but every shop I’ve been at often started new services in non-Ruby (mostly Go but have seen plenty of Node/TS as well or Rust for that matter).
If I were to start a new app Ruby would be far from my first choice and the biggest reason are types. After being in the weeds of big Rails apps while also working with Go/Ts/typed Python, Ruby seems very fragile in big codebases. Sorbet is also not enough.