ruby-on-rails – 为什么相对路径在Ruby中不起作用
发布时间:2020-12-16 19:26:14 所属栏目:百科 来源:网络整理
导读:我开始学习 Ruby,有一件事我不明白,为什么require指令的相对路径在ruby中不起作用.这是几乎在我现在的每个脚本语言(JSP,PHP …)中的工作.我用一个真实的例子解释.我有一个名为shape的文件夹,其中包含3类形状,矩形和正方形.我还有另一个文件test_shapes.rb从
我开始学习
Ruby,有一件事我不明白,为什么require指令的相对路径在ruby中不起作用.这是几乎在我现在的每个脚本语言(JSP,PHP …)中的工作.我用一个真实的例子解释.我有一个名为shape的文件夹,其中包含3类形状,矩形和正方形.我还有另一个文件test_shapes.rb从我调用和测试我的类.当我将类导入主文件时,如下所示:
require "./shape" require "./rectangle" require "./square" 我找不到文件的错误.当我包含我的子文件夹的名称,如下所示: require "./shapes/shape" require "./shapes/rectangle" require "./shapes/square" 代码是完美的工作.因为我指定了整个路径到项目的根目录(我认为的lib文件夹).当我包括我包括硬盘的绝对路径,像这样: require "#{File.dirname(__FILE__)}/shape" require "#{File.dirname(__FILE__)}/rectangle" require "#{File.dirname(__FILE__)}/square" 它也正常工作. 所以,我只想要一些解释,如果知道为什么第一个导入方法(当前文件夹的相对路径)不工作. 解决方法
相对路径是基于工作目录.我假设主文件位于同一目录下.如果在项目根目录下运行ruby ./shapes/main.rb,那么ruby会尝试找到{project_root} /shape.rb,而不是{project_root} /shapes/shape.rb.它不工作
你需要使用require_relative,如下所示. # {project_root}/shapes/main.rb require_relative './shape' require_relative './rectangle' require_relative './square' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |