加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读