我需要引用目录树中较低的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 :(得分:3)
相对require
本身没问题。但是,require
不会更改您当前的工作目录。所以它正在/ folder1中寻找database.yml
。
答案 1 :(得分:0)
在以前的Rubies中,require
包含了调用脚本的目录。存在安全问题,因此在1.9中删除了'.'
目录。提供了一种在本地目录require_relative
中获取内容的方法。
http://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_0/NEWS谈到将其纳入Core。