Hmm, guessing that '+' and '%' are being a bit weird...

Verified the some thing happens in: ruby 2.0.0p481

It does look like '<<' is working (or not working) though.

irb(main):007:0> MyString.new("foo").<<("foo").class
=> MyString

On Tue, Feb 10, 2015 at 5:41 PM,  <sawadatsuyoshi / gmail.com> wrote:
> Issue #10845 has been reported by Tsuyoshi Sawada.
>
> ----------------------------------------
> Bug #10845: Subclassing String
> https://bugs.ruby-lang.org/issues/10845
>
> * Author: Tsuyoshi Sawada
> * Status: Open
> * Priority: Normal
> * Assignee:
> * ruby -v: 2.2
> * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
> ----------------------------------------
> If I make a subclass of `String`, the method `*` returns an instance of that class.
>
> ~~~ruby
> class MyString < String
> end
>
> MyString.new("foo").*(2).class #=> MyString
> ~~~
>
> This is different from other similar operations like `+` and `%`, which return a `String` instance.
>
> ~~~ruby
> MyString.new("foo").+("bar").class #=> String
> MyString.new("%{foo}").+(foo: "bar").class #=> String
> ~~~
>
> I don't see clear reason why `*` is to be different from `+` and `%`, and thought that perhaps either the behaviour with `*` is a bug, or the behaviour with `+` and `%` is a bug.
>
> Or, is a reason why they are different?
>
>
>
> --
> https://bugs.ruby-lang.org/



-- 
Incoherently,
Ricky Ng