deivid-rodriguez / byebug

Debugging in Ruby 2
BSD 2-Clause "Simplified" License
3.34k stars 328 forks source link

Invoking byebug inside DelegateClass definition throws the `cannot load such file -- .../core` error. #853

Open Nakilon opened 1 month ago

Nakilon commented 1 month ago

Addressing an undefined method inside initialize throws a cryptic error message:

     ArgumentError:
       not delegated

so to find it out I wanted to use byebug, like this:

require "delegate"
MyClass = DelegateClass(Hash) do
  def initialize

    require "byebug"
    byebug

    undefined_variable_that_caused_error
    super({ 1=>2 })
  end
end
MyClass.new

but it throws:

Traceback (most recent call last):
    8: from temp.rb:10:in `<main>'
    7: from temp.rb:10:in `new'
    6: from temp.rb:5:in `initialize'
    5: from /home/.../.rbenv/versions/2.7.8/lib/ruby/2.7.0/delegate.rb:86:in `method_missing'
    4: from /home/.../.rbenv/versions/2.7.8/lib/ruby/2.7.0/delegate.rb:86:in `bind_call'
    3: from /home/.../.rbenv/versions/2.7.8/lib/ruby/gems/2.7.0/gems/byebug-11.1.3/lib/byebug/attacher.rb:36:in `byebug'
    2: from /home/.../.rbenv/versions/2.7.8/lib/ruby/2.7.0/delegate.rb:86:in `method_missing'
    1: from /home/.../.rbenv/versions/2.7.8/lib/ruby/2.7.0/delegate.rb:86:in `bind_call'
/home/.../.rbenv/versions/2.7.8/lib/ruby/2.7.0/delegate.rb:86:in `require_relative': cannot load such file -- /home/.../.rbenv/versions/2.7.8/lib/ruby/2.7.0/core (LoadError)

because there https://github.com/ruby/delegate/blob/1c9f9cb37de9c1baa31dad5f67b00f59b765e22a/lib/delegate.rb#L89 they recall your https://github.com/deivid-rodriguez/byebug/blob/7e7384836defcfb40b675f5405428515b48eea9e/lib/byebug/attacher.rb#L36

Not sure who is to blame.