Issue #13099 has been updated by Benoit Daloze.


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).

----------------------------------------
Bug #13099: Binding#irb does not work outside of irb
https://bugs.ruby-lang.org/issues/13099#change-62404

* Author: Eli Sadoff
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin15]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
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

~~~ ruby
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

~~~ ruby
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)
~~~
	




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>