我有一个 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_toin的可选参数read()。这需要一个绝对路径,所以上面可能需要:
require 'mygem'
example = MyGem.read('templates/example.txt', File.dirname(__FILE__))
这很好用,但我认为它有点难看。有没有办法让班级知道read()正在调用什么文件并根据它计算出路径?