簡體   English   中英

Ruby需要'文件'和相對位置

[英]Ruby require 'file' and relative location

所以我正在寫一些rspec測試,我對我缺乏Ruby理解感到尷尬。

我有一個如下所示的文件結構:

  • GUI_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 s是相對於當前目錄的,在您的情況下是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中需要更改它的默認值: Ruby:require vs require_relative - 在Ruby <1.9.2和> = 1.9.2中運行的解決方法的最佳實踐

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM