Are you sure Ruby isn't just using dynamic variables? My information may be old, but that's all it seemed like to me. A certain amount of confusion naturally arises in the Ruby world because of the absence of explicit declaration, so the name binding rules get to be rather complicated.
In fact, that's the basic underlying problem with Ruby, as far as I can tell. In pursuing the principle of least surprise, they've merely swept the surprises elsewhere. Waterbed theory of surprise, if you will... Larry