で、既存のオブジェクトを破壊せずに、その内容を利用した新たなオブジェクトを作りたい場合は、
その既存のオブジェクトを破壊しないような方法を意図的に使う

a = "hage"
b = a + "ADD"

def change_string(s)
s + "CHINGE!"
end

c = change_string(a)

p a, b, c

結果:
"hage"
"hageADD"
"hageCHINGE!"

オブジェクトを「足して」新たなオブジェクトを作るようなメソッドが提供されていなかったらどうするか、というのなら
そりゃ>>183の言うようにオブジェクト内容自体を複製して新たなオブジェクトを作る dup や clone を使うしかあんめえ