Actions
Bug #19726
closedScript loaded twice when requiring self
Bug #19726:
Script loaded twice when requiring self
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 3.3.0preview1 (2023-05-12 master a1b01e7701) [x86_64-linux]
Description
The executed program is not added to $LOADED_FEATURES unexpectedly resulting in the program possibly being loaded twice:
a.rb:
#!/usr/bin/env ruby
require "./b"
C = 42
return unless __FILE__ == $0
puts C
b.rb:
require "./a"
This results in:
$ ./a.rb
./a.rb:5: warning: already initialized constant C
/home/johannes/t/a.rb:5: warning: previous definition of C was here
42
Ruby version:
$ sudo docker run ruby:3.3.0-preview1 ruby --version
ruby 3.3.0preview1 (2023-05-12 master a1b01e7701) [x86_64-linux]
This could be solved by always adding the executed program to $LOADED_FEATURES.
As a workaround, executed programs can be prepended with:
require "pathname"
if __FILE__ == $0
$LOADED_FEATURES << Pathname.new(__FILE__).expand_path.to_s
end
Actions