2012-11-28 70 views
1

Ruby只需要我的寶石,而不是我寫的代碼。我不確定我做錯了什麼。Troublesoot紅寶石需求

這工作

require "test-unit" 
require "require "C:\\Users\\zreichert\\workspace\\FalconQA\\PageObjects\\Users\\user.rb" 

這不起作用

require "Users/user" 
require "Users\user" 
require "Users/user.rb" 
require "Users\user.rb" 
require_relative "Users/user" 
require_relative "Users\user" 
require_relative "Users/user.rb" 
require_relative "Users\user.rb" 

,我運行位於腳本 - C:/用戶/ zreichert /工作區/ FalconQA/testCases

我試圖改變目錄之前要求這樣

Dir.chdir "C:/Users/zreichert/workspace/FalconQA/testCases" 

所有的錯誤是這個樣子

C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:在require': cannot load such file -- Users/user (LoadError) from c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in需要」 從C:/用戶/zreichert/workspace/FalconQA/testCases/FAL001.rb:14:in`

+0

嘗試'需要 「./Users/user」' – 2012-11-28 17:07:31

+0

@slivu奏效謝謝,請轉換爲答案,以便我可以接受。 – Zach

+0

任何看起來像'「Users \ user」'的東西都會失敗,因爲在雙引號字符串中如何解釋轉義字符。 –

回答

2

你可以嘗試

require "./Users/user" 
1

您可以使用此:

require_relative '../PageObjects/Users/user.rb' 

斜線比兩個反斜線更好,因爲它工作在Windows和麗努都X/MacOS的。

1

只是對Roozbeh的回答略有擴大,require_relative讓你相對文件加載到包含require_relative這樣一個chdir不會對此有什麼影響的文件的位置。

從什麼您在質詢時說,從FAL001.rb到user.rb相對路徑是

../PageObjects/Users/user.rb 

即上一級,然後下入PageObjects /用戶,因此

require_relative '../PageObjects/Users/user.rb' 
+0

感謝您的全力幫助。這更有意義。 – Zach

+0

這對我來說完全有意義,但是當我嘗試這樣做時,我得到:C:/Users/zreichert/workspace/FalconQA/testCases/FAL001.rb:4:在'require_relative'中:無法加載這樣的文件 - C:/ Users/zreichert /工作區/ FalconQA /測試用例/用戶/用戶數據。rb(LoadError) \t from C:/Users/zreichert/workspace/FalconQA/testCases/FAL001.rb:4:in'

'你有什麼想法嗎? – Zach

+0

找出我的錯誤,無視最後的評論。謝謝 – Zach

0

作爲一個心理安全提示,任何看起來像"Users\user"會由於在雙引號字符串中如何解釋轉義字符而失敗。

相反,使用單引號爲您require參數來保存你的理智:

require 'foo' 

require './relative/path/to/foo' 
require '../relative/path/to/bar'