gpt4 book ai didi

Ruby 需要 'file' 和相对位置

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

所以我正在编写一些 rspec 测试,我为自己缺乏对 Ruby 的理解而感到尴尬。

我的文件结构如下所示:

  • GUI_Tests/Tests/test_spec.rb
  • GUI_Tests/windows_gui.rb
  • GUI_Tests/upload_tool.rb

当我为 test_spec.rb 文件运行规范时,我需要像这样包含 upload_tool 文件:

spec -r ../upload_tool -fs test_spec.rb

然后,upload_tool 需要 windows_gui.rb,如下所示:

require '../windows_gui'

我的问题是,为什么我必须相对于 test_spec.rb(需要 ../)而不是 upload_tool.rb 来引用 windows_gui.rb?这对我来说感觉不对,我想在测试规范的上下文之外使用 upload_tool.rb,这意味着每次都更改要求。

显然我遗漏了一些东西,但如果我没有引用相对于测试规范,我会收到一个找不到文件的错误。

很抱歉在这里如此无知,但我空手而归。任何想法表示赞赏。

BB

最佳答案

你不知道。 require 是相对于当前目录的,在您的例子中是 GUI_Tests/Tests。如果您改为这样做:

cd ..
spec -r upload_tool -fs Test/test_spec.rb

你必须使用这个:

require 'windows_gui' # without '../'

解决该问题的最常见方法是使用 File.dirname(__FILE__):

require File.join(File.dirname(__FILE__), '..', 'windows_gui')

注意:在 Ruby 1.9.2 中 require 更改了它的默认值:Ruby: require vs require_relative - best practice to workaround running in both Ruby <1.9.2 and >=1.9.2

关于Ruby 需要 'file' 和相对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3258260/

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