[#122258] [Ruby Misc#21367] Remove link to ruby-doc.org from www.ruby-lang.org/en/documentation/ — "p8 (Petrik de Heus) via ruby-core" <ruby-core@...>
Issue #21367 has been reported by p8 (Petrik de Heus).
11 messages
2025/05/23
[ruby-core:122080] [Ruby Feature#21335] Namespaces should be present in the backtrace
From:
"mame (Yusuke Endoh) via ruby-core" <ruby-core@...>
Date:
2025-05-14 00:45:08 UTC
List:
ruby-core #122080
Issue #21335 has been updated by mame (Yusuke Endoh).
As the current behavior of the backtrace, if the receiver class is completely bound to the constant names, they are prefixed to the method names in the backtrace. So, if you do:
```ruby
NS1 = Namespace.new
NS1.load "foo.rb"
NS2 = Namespace.new
NS2.load "foo.rb"
NS1::Foo.test(NS1, NS2, 10)
```
you will see:
```
$ RUBY_NAMESPACE=1 ./miniruby test.rb
./miniruby: warning: Namespace is experimental, and the behavior may change in the future!
See doc/namespace.md for know issues, etc.
foo.rb:9:in 'NS1::Foo.test'
foo.rb:7:in 'NS2::Foo.test'
foo.rb:9:in 'NS1::Foo.test'
foo.rb:7:in 'NS2::Foo.test'
foo.rb:9:in 'NS1::Foo.test'
foo.rb:7:in 'NS2::Foo.test'
foo.rb:9:in 'NS1::Foo.test'
foo.rb:7:in 'NS2::Foo.test'
foo.rb:9:in 'NS1::Foo.test'
foo.rb:7:in 'NS1::Foo.test'
test.rb:23:in '<main>'
```
This depends on the output of `Class#name`, so the result may change depending of the progress of #21316.
----------------------------------------
Feature #21335: Namespaces should be present in the backtrace
https://bugs.ruby-lang.org/issues/21335#change-113234
* Author: tenderlovemaking (Aaron Patterson)
* Status: Open
----------------------------------------
Namespaces can call in to other name spaces. I think it might be helpful if namespace information is in the backtrace.
For example:
```ruby
File.binwrite "foo.rb", <<-eorb
class Foo
def self.test(ns1, ns2, count)
if count == 0
puts caller
else
if count % 2 == 0
ns1::Foo.test(ns1, ns2, count - 1)
else
ns2::Foo.test(ns1, ns2, count - 1)
end
end
end
end
eorb
ns1 = Namespace.new
ns1.load "foo.rb"
ns2 = Namespace.new
ns2.load "foo.rb"
ns1::Foo.test(ns1, ns2, 10)
```
The output is like this:
```
See doc/namespace.md for known issues, etc.
/Users/aaron/git/ruby/exe/ruby: warning: Namespace is experimental, and the behavior may change in the future!
See doc/namespace.md for known issues, etc.
/Users/aaron/git/ruby/foo.rb:9:in 'test'
/Users/aaron/git/ruby/foo.rb:7:in 'test'
/Users/aaron/git/ruby/foo.rb:9:in 'test'
/Users/aaron/git/ruby/foo.rb:7:in 'test'
/Users/aaron/git/ruby/foo.rb:9:in 'test'
/Users/aaron/git/ruby/foo.rb:7:in 'test'
/Users/aaron/git/ruby/foo.rb:9:in 'test'
/Users/aaron/git/ruby/foo.rb:7:in 'test'
/Users/aaron/git/ruby/foo.rb:9:in 'test'
/Users/aaron/git/ruby/foo.rb:7:in 'test'
./test.rb:23:in '<main>'
```
`Foo.test` alternates between namespaces when calling a method, but you can't tell from the backtrace. I think we should include namespaces in the backtrace.
--
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/lists/ruby-core.ml.ruby-lang.org/