Now I just will be in the know and say that only EVERY programming language is interpreted, whether it is software (Ruby, Python, Java) or a hardware (C, C ++) interpreter :)
For the real answer, although I do not know about the Ruby internal implementation, I am sure that the hell they do not analyze the statement again and again. Although you are not using bytecode in the original implementation (or have they already migrated a moment?), They use some intermediate representation (you can see it beautifully when you want to write C extensions for it), thus simply repeating them over and over again .
Luken source share