Ruby as a language is really beautiful and gets a lot of things right. But a few aspects keep bugging all the time:
- Magic global variables from perl legacy :
$!, $@ etc.
- Prevalent practice of autoloading constants - javascript finally got this right with ES6 modules. Explicit imports are verbose but they are amazingly helpful when trying to read through code.
- Logical operators - we have both
and, or etc. and &&, || with different operator precedence.
- Lack of a good interactive debugger - pry comes very close but is difficult to use in large codebases. No good visual debuggers like the one built into chrome.
- Ternary conditional operator, an unwanted legacy from c-esque languages - in a language where if-else is an expression - there is simply no need for this to exist.