From: xtkoba+ruby@... Date: 2021-02-12T16:08:31+00:00 Subject: [ruby-core:102471] [Ruby master Bug#17623] endless def can access to outer local variables and lead to unexpected result Issue #17623 has been updated by xtkoba (Tee KOBAYASHI). I found that `f` is indeed defined in RubyInstaller's `irb.cmd`: ``` --- original/irb.cmd +++ RubyInstaller/irb.cmd @@ -28,7 +28,7 @@ end if Gem.respond_to?(:activate_bin_path) -load Gem.activate_bin_path('irb', 'irb', version) +f = Gem.activate_bin_path('irb', 'irb', version); require 'irbrc_predefiner'; load f else gem "irb", version load Gem.bin_path("irb", "irb", version) ``` The same goes for `str` or `version` with every environment: ``` irb(main):001:0> str => nil irb(main):002:0> version => ">= 0.a" irb(main):003:0> ``` I have no idea whether it is a bug or not that the local variables defind in `irb` command is visible from IRB. ---------------------------------------- Bug #17623: endless def can access to outer local variables and lead to unexpected result https://bugs.ruby-lang.org/issues/17623#change-90359 * Author: UlyssesZhan (������ ���) * Status: Open * Priority: Normal * ruby -v: ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x64-mingw32] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- ``` ruby irb(main):001:0> a = 1 => 1 irb(main):002:0> def f = a => :f irb(main):003:0> f => "D:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb" ``` I have not idea what it means. The codes just work fine outside irb. Maybe it is a bug. -- https://bugs.ruby-lang.org/ Unsubscribe: