需要来自所需文件的文件

时间:2017-10-24 17:07:30

标签: ruby require

我有其他文件required.rbmain.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_relative的更改要求并未改变Dir[Dir.pwd + "/req_files/*.rb"],更具体地Dir.pwd解析相对于原始文件(主要或测试人员)的事实,因此无法按要求表达,也不能用于两个入口点

另请注意,required.rbrequire_relative已经main.rb已经需要tester.rb

2 个答案:

答案 0 :(得分:0)

  

有没有办法表示相对于实际required.rb的路径

是的,有点儿。还有另一种方法。

http://ruby-doc.org/core-2.4.2/Kernel.html#method-i-require_relative

  

require_relative(string)→true或false

     

Ruby尝试加载名为string的库相对于require文件的路径。如果无法确定文件的路径,则引发LoadError。如果加载文件,则返回true,否则返回false。

答案 1 :(得分:0)

我对__FILE__不正确;使用File.dirname(__FILE__)代替Dir.pwd可用于提供实际文件的目录与调用文件的目录。