微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

是否有可能获取需要 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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐