2016-02-11 114 views
1

編程語言要求:使用相對路徑

紅寶石

我有以下目錄結構:

-program (dir) 
--const.rb 
--libs (dir) 
---someClass.rb 

我想include/requireconst.rbsomeClass.rb

我嘗試:

(1)

$:.unshift File.expand_path(File.dirname.expand_path(__FILE__))) 
require "../const" 

(2)

$:.unshift File.expand_path(File.dirname.expand_path(__FILE__))) 
require "./const" 

(3)

require_relative "../const" 

(4)

$:.unshift File.expand_path(File.dirname.expand_path(__FILE__))) 
require_relative "../const" (also with single quotes) 

他們返回一個錯誤:

`require': cannot load such file ... (LoadError) 

任何想法?

+0

順便說一下,'require_relative'../ const''適合我。 –

+0

嗯,奇怪,我會再檢查一次,我會回覆你 – Bulki

回答

3

require不做相對路徑展開。傳遞給它之前,必須展開路徑。

require File.expand_path("../const", __dir__) 
+0

試過了,但還沒有工作,還在尋找doh,但不是已經開始規則修復了嗎? => $ :. unshift File.extend_path(File.dirname.expand_path(__ FILE__)))) – Bulki

+0

對於file:Class(NoMethodError)fyi,ruby version:2.0.0的undefined「extend_path」方法。你的意思是expand_path? – Bulki

+0

對不起,應該是'expand_path'。我會修好它。 – sawa