我有一个 gem,里面有这样的代码:
def read(file)
@file = File.new file, "r"
end
现在的问题是,假设您有这样的目录结构:
app/main.rb
app/templates/example.txt
并main.rb
具有以下代码:
require 'mygem'
example = MyGem.read('templates/example.txt')
它提出了File Not Found: templates/example.txt
. example.txt
如果它在同一个目录中,它会起作用,main.rb
但如果它在一个目录中,它就不会起作用。为了解决这个问题,我添加了一个名为relative_to
in的可选参数read()
。这需要一个绝对路径,所以上面可能需要:
require 'mygem'
example = MyGem.read('templates/example.txt', File.dirname(__FILE__))
这很好用,但我认为它有点难看。有没有办法让班级知道read()
正在调用什么文件并根据它计算出路径?