Нет, это не ошибка в Ruby, это то, как работает общее изменяемое состояние, не только в Ruby, но и на любом языке программирования.
Подумайте об этом так:моя мама зовет меня "сын", мои друзья зовут меня "Йорг".Если я постригусь, то не имеет значения, какое имя вы используете для обозначения меня: я один и тот же человек, независимо от того, называете ли вы меня "сын" или "Йорг", "мистер Миттаг" или "эй,douchebag ", поэтому мои волосы всегда будут короткими.Волшебство не вырастет, если вы будете называть меня другим именем.
В вашем коде происходит то же самое: вы ссылаетесь на строку двумя разными именами, но не имеет значения, какое имя вы используете;если строка меняется, то она меняется.
Решение, конечно, состоит в том, чтобы не использовать изменяемое состояние и не изменять общее состояние, как в ответе @ hurikhan77.