2010-11-11 60 views
2

昨天我發現,我無法使用load重新加載腳本rss.rb。它只會在幾秒內爲我做一些未知的事情,返回true並且不執行腳本。但是可以使用require_relative加載(一次),沒有任何問題。我不得不重命名腳本文件,按照我的意願使用它。
那麼爲什麼require_relative工作,但load不?以及如何知道,哪些文件名不能用load加載?
我使用紅寶石1.9.2p0(2010-08-18)[I386-的mingw32]爲什麼我不能用`load`加載特定文件名的腳本?

UPD:

C:> type 1.rb 
p load 'rss.rb' 
p load '2.rb' 

C:> type rss.rb p 'rss.rb loaded'
C:> type 2.rb p '2.rb loaded'
C:> ruby 1.rb true "2.rb loaded" true

回答

0

你加載標準庫中的rss.rb。 load首先經過$LOAD_PATH,並且僅當在該處找不到該文件時,纔在當前目錄中查找該文件。

您可以通過做load "./rss.rb"來使其僅在當前目錄中顯示。

它與require_relative一起使用的原因是require_relative從不看$LOAD_PATH

使用load時,請記住loadrequire_relative不同,它將在當前目錄中查找文件,而不是在腳本所在的目錄中。因此,無論它是否找到該文件取決於您在調用腳本時所處的目錄。 (當然,在以前的ruby版本中使用require加載本地文件也是如此)。

+0

哦,答案非常接近... – Nakilon 2010-11-12 20:53:45

相關問題