在一个文件中更改后,Ruby的$ LOAD_PATH如何在其他文件中受到影响?

时间:2015-10-07 01:29:32

标签: ruby

我有以下项目目录结构:

.
├── 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中的加载路径?

2 个答案:

答案 0 :(得分:0)

$LOAD_PATH是在单个ruby进程中的所有文件之间共享的全局变量。因此,当一个文件修改它时,修改后执行的任何代码也将使用修改后的版本。

您可以阅读有关全局变量here

的更多信息

答案 1 :(得分:0)

正如其他人所指出的那样,LOAD_PATH是全局的。 你不应该依赖这样的技巧。在您的情况下,正确的做法是使用 require_relative