引用使用:require'../db.rb'正确吗?

时间:2010-11-12 03:21:49

标签: ruby 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

不确定这里有什么问题?

2 个答案:

答案 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。