【发布时间】:2018-04-05 14:07:53
【问题描述】:
我有一个文件required.rb 是其他文件main.rb 和tester.rb 需要的,每个文件都单独调用并单独运行。
在required.rb 内,我想要求所需文件的子目录中的所有文件。整个事情看起来像这样:
main.rb
lib/
required.rb
req_files/
req1.rb
req2.rb
req3.rb
tester/
tester.rb
导入所需文件的代码如下:
Dir[Dir.pwd + "/req_files/*.rb"].each do |file|
require file
end
在我看到的建议策略中,无论是使用Dir.pwd 还是__FILE__,应用于required.rb 位置的上下文是首先需要它的原始文件的上下文,这意味着我可以'不支持在当前设置中分别要求这两个文件。
有没有办法表示相对于实际required.rb 的路径?
编辑:
但不是这样,因为将 require 更改为 require_relative 并不会改变 Dir[Dir.pwd + "/req_files/*.rb"] 更具体地说 Dir.pwd 相对于原始文件(主文件或测试文件)解析的事实,因此它不能表示为 required并为两个入口点工作
另请注意,require_relative 已经需要 required.rb 来自 main.rb 和 tester.rb。
【问题讨论】:
-
@BradWerth:不过,并不是真正的重复。因为这个问题没有提到
require_relative。 -
有更好的“重复”,但目标更差。我看着它有点像stackoverflow.com/questions/4660142/… 的使用方式......
-
我认为重复是合理的,因为这显然是 OP 正在寻找的信息。如果不是这个,我敢打赌,在过去 10 年的 ruby 问题中,我至少可以再找到一个 require_relative 问题......