2010-11-12 103 views
0

我需要在目錄樹中引用我的db.rb文件。正在使用:require'../db.rb'是否正確?

/folder1/test.rb 
/db.rb 
/database.yml 

運行:

ruby db.rb 

不會返回一個錯誤。

在test.rb我所做的:

require '../db.rb' 

,我得到一個錯誤:

../db.rb:7:in `initialize': No such file or directory - database.yml (Errno::ENOENT) 
    from ../db.rb:7:in `open' 
    from ../db.rb:7 
    from test.rb:1:in `require' 
    from test.rb:1 

不知道問題是什麼嗎?

+0

馬修說的是正確的。解決這個問題的一種方法是要求文件的拉出路徑(例如需要File.expand_path(File.dirname(\ __ FILE \ __)+'/ rest_of_path')) – mpd 2010-11-12 10:47:23

回答

3

相對require本身沒問題。但是,require不會更改您當前的工作目錄。所以它在/ folder1中尋找database.yml

0

在之前的紅寶石中,require包括了調用腳本的目錄。這有一些安全問題,因此在1.9中刪除了'.'目錄。提供了一種獲取本地目錄require_relative中的東西的方法。

http://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_0/NEWS談到它被納入核心。