Ruby-проба с File.dirname (__ FILE__) и классовой непереносимостью - PullRequest
1 голос
/ 14 мая 2010

У меня есть родительский класс в /dir1/test1.rb тогда у меня есть дочерний класс в /dir2/test2.rb

класс test1 имеет метод, который использует «File.dirname ( FILE )». НО, когда я вызываю этот метод из test2, это присуще test1 dir - это dir1, вставил dir2, где находится test2.

Как заставить это работать?

Ответы [ 2 ]

1 голос
/ 05 марта 2013

Это немного странно, но если у вас есть метод, который уже есть в каждом дочернем классе, например def initialize, вы можете сделать это из метода экземпляра в родительском классе:

self.class.instance_method(:initialize).source_location[0]

Или из метода класса родительского класса:

self.instance_method(:initialize).source_location[0]

Возвращает местоположение файла, в котором определен метод (например, /dir2/test2.rb).

0 голосов
/ 14 мая 2010

использование __FILE__ должно быть в test2.rb

Это действительно так просто. Как насчет этого?

class Test2
  def self.here
    @here ||= File.dirname(__FILE__)
  end
end

Затем в методе в test1 вы вызываете self.here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...