2010-10-23 72 views
0

每當我需要紅寶石或IRB文件我得到這個錯誤:紅寶石奇怪的錯誤

LoadError: no such file to load -- (insert any filename).rb 
    from <internal:lib/rubygems/custom_require>:29:in `require' 
    from <internal:lib/rubygems/custom_require>:29:in `require' 
    from (irb):1 
    from /usr/bin/irb1.9.1:12:in `<main>' 

它發生,即使該文件存在,我使用ruby1.9.1據我所知, ,我還沒有安裝RubyGems的。我在Ubuntu 10.10 Maverick Meerkat上運行。請幫忙,這個問題很煩人!在此先感謝,埃爾。

編輯:我忘了說,無論文件在哪裏,即使它在同一個目錄中並且明確存在,我總是會得到這個錯誤。

+0

該文件在哪裏存在? – sepp2k 2010-10-23 16:44:35

+0

我的檔案?它存在於:home/elliot/programming/Ruby Projects /圖表數據結構/ Graph.rb – Ell 2010-10-23 16:47:46

+0

@Eli:不,我的意思是ho.rb – sepp2k 2010-10-23 16:52:46

回答

1

Rubygems默認安裝在Ruby 1.9上。

檢查您要加載的文件是否在變量$:中列出的目錄中,或者在require中指定文件的完整路徑。或者,將目錄添加到$:明確:

$: << '/my/lib/path' 
require 'mylib' 
+0

謝謝,這解決了這個問題。對不起,作爲一個noob,我只是從Windows XP轉移到Ubuntu,它需要一些習慣,特別是軟件包安裝系統! – Ell 2010-10-23 17:01:13

4

在Ruby 1.9.2,我的猜測是,你正在使用的版本,當前目錄是在$LOAD_PATH不再。如果您希望require文件與require所調用文件的路徑相關,則應該使用require_relative

如果你真的require文件相對於當前目錄下,然後你可以將當前目錄添加到$LOAD_PATH像這樣:

$LOAD_PATH << '.' 

然而,這一改動是有原因的,所以你不應該這麼做。畢竟,這會使您的應用程序或多或少地表現出不同的行爲,具體取決於您剛啓動應用程序時碰巧遇到的目錄。更糟糕的是,如果攻擊者可以讓你從他控制的目錄中運行應用程序,他可以讓你爲他執行任意代碼。

0

你使用p0嗎?我得到lot on ruby-1.9.2-p0。嘗試做未鏈接的(例如,沒有使用--with-baseruby./configure組,換句話說

curl ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p136.tar.gz | tar xz 
cd ruby-1.9.2-p136 
./configure 
make -j2 
sudo make install 

從此開始。對我來說,那個固定的syck不在那裏(雖然不同的問題猛漲了:/),yaml,甚至stringiozlib