Bug #13099
closedBinding#irb does not work outside of irb
Description
I had read that one of the new features of 2.4.0 is that Binding#irb
is now a method, so I decided to test this out in a program I was working on. Here is the program
class Test
attr_accessor :x, :y, :z
def initialize(x, y, z)
@x = x
@y = y
binding.irb
@z = z
end
end
a = Test.new(1, 2, 3)
And the error that I got is
binding_test.rb:6:in `initialize': undefined method `irb' for #<Binding:0x007f8562025078> (NoMethodError)
from binding_test.rb:11:in `new'
from binding_test.rb:11:in `<main>'
So, I thought that maybe it was an issue with running it in a constructor, so I tried the simpler invocation
binding.irb
but I had a problem with that as well, with a very similar error message
bind.rb:1:in `<main>': undefined method `irb' for #<Binding:0x007ff34984e880> (NoMethodError)
Updated by snood1205 (Eli Sadoff) almost 8 years ago
- Description updated (diff)
Updated by nobu (Nobuyoshi Nakada) almost 8 years ago
- Status changed from Open to Rejected
You have to require "irb"
by yourself.
No plan to autoload "irb" by binding.irb
now.
Updated by Eregon (Benoit Daloze) almost 8 years ago
Nobuyoshi Nakada wrote:
You have to
require "irb"
by yourself.
No plan to autoload "irb" bybinding.irb
now.
I also expected from the description in NEWS that Binding#irb would automatically require irb.
That would be really useful as a debugging tool, as it would literally mean adding "binding.irb" and no need for extra code.
Updated by shyouhei (Shyouhei Urabe) almost 8 years ago
Silently requiring something reminds me of multi-threaded autoload situation. Is it OK?
Updated by Eregon (Benoit Daloze) almost 8 years ago
Shyouhei Urabe wrote:
Silently requiring something reminds me of multi-threaded autoload situation. Is it OK?
Since require is thread-safe, I think the only requirement in this case is that all threads trying to touch IRB first need to require "irb"
(so trying to optimize with e.g. require "irb" unless defined?(IRB) would be bad).
Updated by nobu (Nobuyoshi Nakada) about 7 years ago
- Status changed from Rejected to Closed
I had changed the mind, sorry.