gpt4 book ai didi

ruby-on-rails - 为什么相对路径在 Ruby 中不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 06:29:39 25 4
gpt4 key购买 nike

我开始学习 Ruby,有一件事我不明白,为什么 require 指令的相对路径在 ruby​​ 中不起作用。它几乎适用于我现在使用的所有脚本语言(JSP、PHP...)。我用一个真实的例子来解释。我有一个名为 shapes 的文件夹,其中包含 3 个类 shaperectanglesquare。我还有另一个文件 test_shapes.rb,我从那里调用和测试我的类(class)。当我像这样将我的类导入主文件时:

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'

关于ruby-on-rails - 为什么相对路径在 Ruby 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25314237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com