Первое. Поскольку семантика языка подразумевает практически полное отсутствие статического анализа программист на руби ОБЯЗАН написать невероятное количество тестов, чтобы хоть как-то формализовать то, что происходит в программе.
Практика показывает, что они этого не делают (спасибо аджайлу и современной DELIVER DELIVER DELIVER культуре), в результате получаем кривое неюзабельное ДЕ***МО, ведь даже хваленый гитлаб у меня отваливался с 503 при попытке отредактировать раннер и внести чуть более сложные настройки....А ведь гитлаб пишут сотни, а каждый день тестируют тысячи.
Второе, производительность. Руби ужасно медленный -
https://github.com/kostya/benchmarksСчитается, что руби "достаточно быстрый" и большинство машин сейчас многоядерные и вам просто нужно бросить больше железа на решение проблемы....
"Я не считаю что я разбираюсь в потоках, поэтому я не могу принять решение по Actor библиотеке или вообще по потокам" - Матц, создатель руби.
....руби также полное днище в вопросах многопоточности. MRI имеет глобальный лок интерпретатора, соответственно только одна YARV инструкция может быть выполнена за раз
Также руби расходует огромное количество памяти и не возвращат ее в ОС, как JVM.
https://www.sitepoint.com/ruby-uses-memory/Поскольку руби использует 1 интерпретатор на все потоки, то любой необработанный эксепшен валит всю VM