[ruby-core:113759] [Ruby master Bug#19711] NoMethodError "private method `new' called for class" since bebd05fb51ea65bc57344b67100748200f8311eb
From:
"ioquatix (Samuel Williams) via ruby-core" <ruby-core@...>
Date:
2023-06-05 01:33:57 UTC
List:
ruby-core #113759
Issue #19711 has been updated by ioquatix (Samuel Williams).
```ruby
module ActiveSupport
class Deprecation
include Singleton
```
Why is Rails trying to call `new` on a singleton class?
What is the expected behaviour of calling new on a subclass of a Singleton?
----------------------------------------
Bug #19711: NoMethodError "private method `new' called for class" since bebd05fb51ea65bc57344b67100748200f8311eb
https://bugs.ruby-lang.org/issues/19711#change-103404
* Author: yahonda (Yasuo Honda)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.3.0dev (2023-06-03T00:35:18Z master bebd05fb51) [x86_64-linux]
* Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
Rails CI against ruby3.3.0dev has been failing https://buildkite.com/rails/rails/builds/96929#0188841c-cf1f-46d6-b48b-f510a5675262/1069-1078
According to git bisect, this change has been triggered via bebd05fb51ea65bc57344b67100748200f8311eb
### Steps to reproduce (that may not be minimum though)
```
$ gem install activesupport
$irb
require 'active_support/deprecation'
klass = Class.new(ActiveSupport::Deprecation)
deprecator = klass.new
```
### Expected behavior
It should successfully work as the previous commit does.
```
$ ruby -v
ruby 3.3.0dev (2023-06-02T21:16:52Z master 4e26ae3cb9) [x86_64-linux]
$ gem install activesupport
Successfully installed activesupport-7.0.5
Parsing documentation for activesupport-7.0.5
Done installing documentation for activesupport after 1 seconds
1 gem installed
$ irb
irb(main):001:0> require 'active_support/deprecation'
=> true
irb(main):002:0> klass = Class.new(ActiveSupport::Deprecation)
=> #<Class:0x00007f683e01a5b0>
irb(main):003:0> deprecator = klass.new
=>
#<#<Class:0x00007f683e01a5b0>:0x00007f683e2207b0
...
irb(main):004:0>
```
### Actual behavior
It gets "(irb):5:in `<main>': private method `new' called for class #<Class:0x00007fbd57dd9b10> (NoMethodError)"
```
$ ruby -v
ruby 3.3.0dev (2023-06-03T00:35:18Z master bebd05fb51) [x86_64-linux]
$ gem install activesupport
Successfully installed activesupport-7.0.5
Parsing documentation for activesupport-7.0.5
Done installing documentation for activesupport after 1 seconds
1 gem installed
$ irb
irb(main):001:0> require 'active_support/deprecation'
=> true
irb(main):002:0> klass = Class.new(ActiveSupport::Deprecation)
irb(main):003:0> deprecator = klass.new
(irb):3:in `<main>': private method `new' called for class #<Class:0x00007f7e13282bc8> (NoMethodError)
from <internal:kernel>:187:in `loop'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/irb-1.7.0/exe/irb:9:in `<top (required)>'
from /home/yahonda/.rbenv/versions/trunk/bin/irb:25:in `load'
from /home/yahonda/.rbenv/versions/trunk/bin/irb:25:in `<main>'
irb(main):004:0>
irb(main):003:0> require 'active_support/deprecation'
=> true
irb(main):004:0> klass = Class.new(ActiveSupport::Deprecation)
=> #<Class:0x00007fbd57dd9b10>
irb(main):005:0> deprecator = klass.new
(irb):5:in `<main>': private method `new' called for class #<Class:0x00007fbd57dd9b10> (NoMethodError)
from <internal:kernel>:187:in `loop'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/irb-1.7.0/exe/irb:9:in `<top (required)>'
from /home/yahonda/.rbenv/versions/trunk/bin/irb:25:in `load'
from /home/yahonda/.rbenv/versions/trunk/bin/irb:25:in `<main>'
irb(main):006:0>
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/