Por que isso não funciona se em Ruby tudo é um Objeto?

Considerando que na linguagem de programação Ruby tudo é considerado um Objeto, eu assumi com segurança que a passagem de argumentos para métodos é feitapor referênci. No entanto, este pequeno exemplo abaixo me intriga:

$string = "String"

def changer(s)
  s = 1
end

changer($string)

puts $string.class
String
 => nil

Como você pode ver, o objeto original não foi modificado, gostaria de saberporqu, e também, como eu poderia realizar o comportamento desejado, isto é. Obtendo o método para realmente alterar o objeto referenciado por seu argument

questionAnswers(5)

yourAnswerToTheQuestion