Ruby adota metaprogramação (reflexão, introspecção), programação multiparadigma e dinamismo em um nível incomum. É fácil dar um tiro no pé com força e flexibilidade.
Problemático? Ruby tem a capacidade de ser extremamente legível ou inescrutável. Eu vi código que parece pertencer a um script Bash.
Más práticas? Alguns rubiistas valorizam a inteligência sobre a sabedoria. Eles escrevem e compartilham truques que mostram sua inteligência, mas isso cria código ilegível e frágil.
Como um aparte: Javascript foi um desastre por design, e o livro "The Good Parts" tenta extrair sua beleza oculta. O Perl, uma linguagem que popularizou "Há mais de uma maneira de fazer" (ou seja, flexibilidade), tem um livro semelhante em "Perl, Best Practices". A história de Perl é de experimentação e experiência conquistada com dificuldade, "Melhores Práticas" representa seu conhecimento. Perl 6 será, acho justo dizer, uma reinicialização da linguagem com base nesse conhecimento e muito mais. Ruby pode sofrer de problemas semelhantes.
@ James e para loops ... Quando você faz um loop for em ruby, ele chama ".each". Portanto, "for" é um açúcar sintático para pessoas mais confortáveis com loops no estilo C. Mas como Rubyist, você vai usar iteradores como .map, .inject, .each_with_object, o tempo todo. Você nunca precisará escrever um loop for com algo como "i = 0; i> 6; i ++" em ruby, e assim acabará abandonando o hábito. @andrew ... rubi eloquente não apoia loops.