Ruby问题与File.dirname(__ FILE__)和类继承

时间:2010-05-14 17:08:37

标签: ruby-on-rails

我有父类 /dir1/test1.rb 然后我有儿童班 /dir2/test2.rb

test1类有一个使用“File.dirname( FILE )”的方法。 但是当我从test2调用这个方法时,就是test1固有的 dir是dir1,在dir2中,test2是。

如何让它发挥作用?

2 个答案:

答案 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