是否有可能获取需要
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 举报,一经查实,本站将立刻删除。