加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

获取父需要文件的路径,Ruby

发布时间:2020-12-17 02:22:27 所属栏目:百科 来源:网络整理
导读:是否有可能获取需要 Ruby中另一个文件的文件的位置? 我有一个项目,我生成一些进程,我希望能够在代码中确定哪个文件是所需文件的父文件.调试时这很好. 例: #initial.rb:require "./my_file.rb"fork do require "./my_file2.rb"end – #my_file.rb:puts "Req
是否有可能获取需要 Ruby中另一个文件的文件的位置?

我有一个项目,我生成一些进程,我希望能够在代码中确定哪个文件是所需文件的父文件.调试时这很好.

例:

#initial.rb:
require "./my_file.rb"
fork do
   require "./my_file2.rb"
end

#my_file.rb:

puts "Required from file: #{?????}"

#my_file2.rb:

require "./my_file.rb"

我希望得到类似的东西:

#=> Required from file: /path/to/initial.rb
#=> Required from file: /path/to/my_file2.rb

解决方法

基于 Jacobs answer,我结束了对require_relative的重新定义,并要求:

alias :old_require_relative :require_relative
def require_relative(arg)
  #~ puts caller.map{|x| "t#{x}"}
  puts "%s requires %s" % [ caller.first.split(/:d+/,2).first,arg]
  old_require_relative arg
end
alias :old_require :require
def require(arg)
  #~ puts caller.map{|x| "t#{x}"}
  puts "%s requires %s" % [ caller.first.split(/:d+/,arg]
  old_require arg
end

在具有以下加载顺序的测试测试场景中:

test.rb
+-  test1.rb
    +- test1_a.rb
+ test2.rb

以下电话

require './test1'
require './test2'

要么

require_relative 'test1'
require_relative 'test2'

造成:

test.rb requires ./test1
C:/Temp/test1.rb requires test1_a
test.rb requires ./test2

您还可以在输出中包含需求行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读