【问题标题】:Requiring files from a required file从所需文件中请求文件
【发布时间】:2018-04-05 14:07:53
【问题描述】:

我有一个文件required.rb 是其他文件main.rbtester.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.rbtester.rb

【问题讨论】:

标签: ruby require


【解决方案1】:

我对@9​​87654321@ 的看法不正确;使用File.dirname(__FILE__) 而不是Dir.pwd 可以提供实际文件的目录与调用文件的目录。

【讨论】:

    【解决方案2】:

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

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

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

    require_relative(string) → true or false

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

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 1970-01-01
      • 2017-10-23
      • 2020-01-06
      • 2017-10-11
      • 2020-09-14
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多