Issue #11772 has been updated by Daniel P. Clark.


~~~ruby
class A
  undef :to_s
  def to_str
    "hello world"
  end
end

"#{A.new}"
#NoMethodError: undefined method `to_s' for #<A:0x00000000dbea70>

"" + A.new
# => "hello world"
~~~

----------------------------------------
Bug #11772: Implicit conversion of Array in String interpolation does not call to_str
https://bugs.ruby-lang.org/issues/11772#change-55256

* Author: Daniel P. Clark
* Status: Closed
* Priority: Normal
* Assignee: 
* ruby -v: 
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
While providing an example in https://bugs.ruby-lang.org/issues/10930#note-7 I found that the implicit changing of an Array calls to_s without trying to_str first.  Isn't String interpolation "implicitly" converting items to strings?

~~~ruby
class Array
  def to_str
    "Hello from Array!"
  end
end

"#{[1,2,3,4,5]}"
# => [1, 2, 3, 4, 5]
~~~

I believe String interpolation should call `to_str` before `to_s`



-- 
https://bugs.ruby-lang.org/