2016-02-11 180 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