From: mame@... Date: 2021-01-20T00:06:52+00:00 Subject: [ruby-core:102178] [Ruby master Bug#17564] Source command in irb exits after reading and evaluating the file Issue #17564 has been updated by mame (Yusuke Endoh). Assignee set to aycabta (aycabta .) Status changed from Open to Assigned ---------------------------------------- Bug #17564: Source command in irb exits after reading and evaluating the file https://bugs.ruby-lang.org/issues/17564#change-90026 * Author: rsharman (Richard Sharman) * Status: Assigned * Priority: Normal * Assignee: aycabta (aycabta .) * ruby -v: ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin17] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- In the irb of ruby 2.3.7 (the version that comes with Macos) the ���source��� command allows ruby code to be fed to irb as if it were typed in by hand. This has a advantage over the ���load��� command because variables can be setup not just functions. However, for ruby versions 2.7.2 and 3.0 irb���s ���source��� command exits after reading and evaluating everything. This is not very useful in an interactive environment. I found what I think was a crucial difference between version 2.3.7 and later versions: in function "each_top_level_statement" of irb/ruby-lex.rb the statement ``` break unless l ``` was replaced by ``` break if @io.eof? ``` When I replaced ���break if @io.eof?��� by ���break unless l��� in version 3.0.0 the old behaviour of the ���source��� command returned! I can now read in ruby code, including variables, and use them. See file patch for a unified diff of the change. I don���t understand why this ���fix��� works, and realize it may not be valid, but I am submitting it in case it is legitimate and can be used. A trivial file demonstrates the problem: file ���a.rb��� simply sets variable ���a���. To test, invoke irb and issue the command ���source ���a.rb������. The expected behaviour is you are left at the irb prompt and variable a is valid. The behaviour in verions 3.0.0 without the fix is irb exits. See file a.rb and output with and without fix in file Log. ---Files-------------------------------- a.rb (9 Bytes) Log (298 Bytes) Patch (383 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: