String.newではto_strメソッドが使われる

7月になったのでStringクラスで遊びましょう(意味なしジョーク)。
オブジェクトoを文字列として扱うときにはto_sメソッドを使いますが、String.new(o)で文字列を作るときには、to_strメソッドを使います。

class Rubyco
  def initialize(s)
    @s = s
  end
  def to_s
    @s + ' (by to_s)'
  end
  def to_str
    @s + ' (by to_str)'
  end
end

o = Rubyco.new('Hello')
s = String.new(o)
puts o      #=> Hello (by to_s)
puts s      #=> Hello (by to_str)