Я не понимаю, почему они говорят. Ruby передает все параметры по значению и в то же время следующий код доказывает обратное:
class MyClass1
  @var1 = 123
  def get1
    @var1
  end
  def set1=value
    @var1 = value
  end
end
c1 = MyClass1.new
c1.set1 = 444
p c1.get1 # 444
def test1 mc
  mc.set1 = 999
end
test1 c1
p c1.get1 # 999
Если бы он был по значению, он распечатывал 444, а не 999.
