获取父需要文件的路径,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

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...