Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 有没有一种方法可以从超类进行相对路径引用?_Ruby_File - Fatal编程技术网

Ruby 有没有一种方法可以从超类进行相对路径引用?

Ruby 有没有一种方法可以从超类进行相对路径引用?,ruby,file,Ruby,File,我正在开发两个RubyGems,一个是框架,另一个是应用程序。 我的主应用程序的类继承自框架的类 框架中定义的类有一些文件加载方法,这些方法依赖于______;文件____;因此子类可以加载与其路径相关的资源 我想要的是子类能够使用父类中定义的那些方法,而不会(基本上)触及它们。可能吗 问题在于_________;文件___;的问题,如果从子类调用代码,它不会改变,因此加载资源的方法“卡在”frameworks目录中,而不是尝试从app dirs加载 我知道我可以在子类中重新定义这些方法,但我想

我正在开发两个RubyGems,一个是框架,另一个是应用程序。 我的主应用程序的类继承自框架的类

框架中定义的类有一些文件加载方法,这些方法依赖于______;文件____;因此子类可以加载与其路径相关的资源

我想要的是子类能够使用父类中定义的那些方法,而不会(基本上)触及它们。可能吗

问题在于_________;文件___;的问题,如果从子类调用代码,它不会改变,因此加载资源的方法“卡在”frameworks目录中,而不是尝试从app dirs加载

我知道我可以在子类中重新定义这些方法,但我想利用它们已经在父类中定义的优势

我希望子类使用父类中定义的方法引用自己的目录(子类文件所在的目录),这就是问题所在

或者我必须手动设置应用程序目录吗


我会尽量说得更清楚:

是否可以编写如下方法:

# /home/usr/framework/parent.rb
class Parent
  def show_my_path
    puts File.dirname(__FILE__)
  end
end

# /home/usr/app/app.rb
# require Parent
class App < Parent
end
App.new.show_my_path
# Can we have here /home/usr/app
# instead of /home/usr/framework ?
# What's the right way to do this?
#/home/usr/framework/parent.rb
班级家长
def显示我的路径
puts File.dirname(\uuuuu File\uuuuuu)
结束
结束
#/home/usr/app/app.rb
#需要家长
类App<父类
结束
App.new.show_我的路径
#我们可以在这里/家里/usr/应用程序吗
#而不是/home/usr/framework?
#正确的方法是什么?

\uuuuuuuuuu文件
在代码读取期间进行转换。所以这不能改变。即使在一个过程中


您可以尝试使用
调用者
方法提取信息。

正如我们所知,
\uuuuuu文件
将具有当前文件名,无论它是什么。所以你可以试试这个-

# /home/usr/framework/parent.rb
class Parent
  def show_my_path(filename)
    puts File.dirname(filename)
  end
end

# /home/usr/app/app.rb
# require Parent
class App < Parent
end
App.new.show_my_path(__FILE__)
#/home/usr/framework/parent.rb
班级家长
def显示我的路径(文件名)
放置File.dirname(文件名)
结束
结束
#/home/usr/app/app.rb
#需要家长
类App<父类
结束
App.new.show_my_路径(__文件__)

你说什么?

是的,这是我必须走的路,也是我想要避免的路。我希望有办法解决它(是的,事实上这是我能想到的最简单的方法!是的,现在我明白了,所以最好的方法可能就是像韦比什说的那样。我认为,即使我访问了
调用者
,也无法获得目录,除非客户端应用程序明确地传递
\uuu文件