Ruby on rails Ruby prob,文件名为.dirname(_文件名),类为inherance
我有家长班 /dir1/test1.rb 然后我让孩子们去上课 /dir2/test2.rb test1类有一个使用“File.dirname(File)”的方法。 但是当我从test2调用这个方法时,这是test1固有的 dir是dir1,而不是dir2,test2是dir2Ruby on rails Ruby prob,文件名为.dirname(_文件名),类为inherance,ruby-on-rails,Ruby On Rails,我有家长班 /dir1/test1.rb 然后我让孩子们去上课 /dir2/test2.rb test1类有一个使用“File.dirname(File)”的方法。 但是当我从test2调用这个方法时,这是test1固有的 dir是dir1,而不是dir2,test2是dir2 如何使其工作?必须在test2.rb中使用\uuuuu文件 就这么简单。这个怎么样 class Test2 def self.here @here ||= File.dirname(__FILE__) e
如何使其工作?必须在test2.rb中使用
\uuuuu文件
就这么简单。这个怎么样
class Test2
def self.here
@here ||= File.dirname(__FILE__)
end
end
然后在test1中的方法中调用self.here必须在test2.rb中使用\uuuu文件
就这么简单。这个怎么样
class Test2
def self.here
@here ||= File.dirname(__FILE__)
end
end
然后在test1中的方法中调用self。在这里,这有点粗糙,但是如果每个子类中都有一个方法,比如def initialize
,那么可以从父类中的实例方法中执行此操作:
self.class.instance_method(:initialize).source_location[0]
self.instance_method(:initialize).source_location[0]
或者从父类的类方法中:
self.class.instance_method(:initialize).source_location[0]
self.instance_method(:initialize).source_location[0]
这将返回定义该方法的文件的位置(例如,/dir2/test2.rb
)。这有点粗糙,但是如果您有一个方法已经存在于每个子类中,比如def initialize
,那么您可以从父类的实例方法中执行此操作:
self.class.instance_method(:initialize).source_location[0]
self.instance_method(:initialize).source_location[0]
或者从父类的类方法中:
self.class.instance_method(:initialize).source_location[0]
self.instance_method(:initialize).source_location[0]
这将返回定义方法的文件的位置(例如,/dir2/test2.rb
)。问题是我重复了太多,假设我有100个子类,然后每个子类都应该有这个方法。。。它疼而且不干:没有更好的解决办法吗?@Totty,请看我的答案。如果每个子类中都有一个方法,比如initialize
,那么这个方法就行了。我现在不能确认任何事情,因为我已经多年不使用ruby了。。不过还是要谢谢你的回答。问题是我重复的太多了,假设我有100个儿童班,然后每个班都应该有这个方法。。。它疼而且不干:没有更好的解决办法吗?@Totty,请看我的答案。如果每个子类中都有一个方法,比如initialize
,那么这个方法就行了。我现在不能确认任何事情,因为我已经多年不使用ruby了。。不过还是谢谢你的回答。。