I think the problem with #join is that people disagree on whether it should
be a string representation or version.
Is #join a method that takes an array of objects that can be represented
as strings, or does it take an array of (implicit) strings (as you said that
#to_str is for implicit argument passing situations).
I agree with you.
1) It's more widely useful to use #to_s. Otherwise we can't even do simple
things like join arrays of integers by default.
2) I don't think you'll catch any meaningful bugs with a failure on #to_str.
At most, it will alert you that you need to define #to_str. :)
However, not everybody may agree with such points.
- Dan
P.S. For what it's worth, I also agree with your statement earlier that #to_s
shouldn't really be used for debugging, and that #inspect and #p are the
appropriate methods to use in that situation.