Да, потому что строки - это объекты. Попробуйте
buggy_logger = status.dup
Если вы хотите отдельный объект с тем же начальным значением.
Что касается вашего вопроса о alias
Я подозреваю, что вы не правильно понимаете, как alias
используется в ruby; он используется в методах, а не в объектах и не связан с изменчивостью.
Обратите внимание, что та же семантика применима к любому классу; если бы статус был массивом, файлом или чем-то еще (если бы он имел изменяемое состояние, пригодное для использования в качестве регистратора), вы бы получили аналогичные результаты.
Одно предупреждение о dup
. Если ваш объект ссылается на другие объекты, копия также будет ссылаться на такие же объекты. Это нормально, когда вы начинаете думать об этом правильно, но до тех пор сложно.