我有以下项目目录结构:
.
├── bin
├── lib
│ ├── foo
│ │ ├── bar.rb
│ │ └── baz.rb
│ └── foo.rb
└── test
foo.rb :
require 'foo/bar'
bar.rb :
require 'foo/baz'
baz.rb :
puts "baz"
当我通过将lib目录添加到加载路径来运行foo.rb
时,Ruby打印出来:
"baz"
我将lib目录添加到foo.rb
中的加载路径。它如何被添加到foo/bar.rb
中的加载路径?
答案 0 :(得分:0)
$LOAD_PATH
是在单个ruby进程中的所有文件之间共享的全局变量。因此,当一个文件修改它时,修改后执行的任何代码也将使用修改后的版本。
您可以阅读有关全局变量here
的更多信息答案 1 :(得分:0)
正如其他人所指出的那样,LOAD_PATH是全局的。 你不应该依赖这样的技巧。在您的情况下,正确的做法是使用 require_relative