From: naruse@... Date: 2020-11-21T05:35:15+00:00 Subject: [ruby-core:100998] [Ruby master Bug#10845] Subclassing String Issue #10845 has been updated by naruse (Yui NARUSE). In 2.7 we break large compatibilities, and this tickets breaks Rails again. "Rails master already fixes it" doesn't care the problem; we breaks compatibility. Breaking compatibility itself is not problem, but we can provide very small benefit for Rails application in 2.7 and 3.0. We only provide disadvantages in recent versions. Ractor and types are great milestone for future Rails, but they are not for Rails at this time. I'm serious about the motivation of upgrading to Ruby 3.0 for Rails users. I worry that so much. ---------------------------------------- Bug #10845: Subclassing String https://bugs.ruby-lang.org/issues/10845#change-88665 * Author: sawa (Tsuyoshi Sawada) * Status: Closed * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) * 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/ Unsubscribe: