我有父类 /dir1/test1.rb 然后我有儿童班 /dir2/test2.rb
test1类有一个使用“File.dirname( FILE )”的方法。 但是当我从test2调用这个方法时,就是test1固有的 dir是dir1,在dir2中,test2是。
如何让它发挥作用?
答案 0 :(得分:1)
这有点hacky但是如果你有一个已经存在于每个子类中的方法,比如def initialize
,那么你可以在父类的实例方法中执行此操作:
self.class.instance_method(:initialize).source_location[0]
或者来自父类的类方法:
self.instance_method(:initialize).source_location[0]
这将返回定义方法的文件的位置(例如/dir2/test2.rb
)。
答案 1 :(得分:0)
__FILE__
的使用必须在test2.rb
真的那么简单。怎么样?
class Test2
def self.here
@here ||= File.dirname(__FILE__)
end
end
然后在test1中的方法中调用self.here