Comment by Gigachad
2 days ago
Ruby does have the best testing tooling of any I’ve tried. But I feel like it’s half to make up for how horribly unreliable the language is. The whole thing being untyped makes it borderline impossible to know the code is correct without unit tests covering everything.
"Untyped" means, for example, you can't tell a string from a number, because they are the same type.
You mean "not statically typed". Which also applies to Javascript, PHP, Python, ... so if that critique doesn't stick to those, it's not a critique you can level at Ruby.
Typescript has almost universal adoption at companies now. PHP I can’t imagine any company choosing for new work anymore. And Python I’m not terribly familiar with but it does seem to be moving towards types.
Ruby behaves sensibly through the principle of least surprise.
But it does have extremely powerful metaprogramming capabilities which are regularly abused by those not wise enough to know that just because you could do something doesn't mean that you should.
I regularly code in a variety of languages from C / C++ through Python and Ruby through to Haskell. They all have their advantages and disadvantages. All of them are capable of abuse by the sufficiently determined. And unit tests are helpful in all of them.
It’s quite surprising when you update Rails and they have changed the arguments for some obscure function used in only one place deep in your app and you get no indication of this until the actual line of code is run and it blows up.
I’ve worked on rails apps for the last 9 years and I’d guess 80% of the bugs that show up on production would have been flagged by typescript.
> until the actual line of code is run...
Which is what the Ruby test-heavy culture is all about. I prefer types for this very reason; the compiler/checker is a complete suite of testing I don't have to write.
I’ve seen large Ruby projects with hunders of developers working on it for >10 years with almost 100% sorbet coverage. It’s just that in Ruby you have to pay (ie spend extra time) for decent degree of type safety.