【问题标题】:Is referencing using: require '../db.rb' correct?引用 using: require '../db.rb' 正确吗?
【发布时间】:2010-11-12 03:21:48
【问题描述】:

我需要引用目录树中较低的 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

不确定问题出在哪里?

【问题讨论】:

  • 马修说的是对的。解决此问题的一种方法是要求文件的拉取路径(例如 require File.expand_path(File.dirname(_FILE_) + '/rest_of_path') )

标签: ruby require


【解决方案1】:

相对require本身是可以的。但是,require 不会更改您当前的工作目录。所以它在 /folder1 中寻找database.yml

【讨论】:

    【解决方案2】:

    在以前的 Ruby 中,require 包含调用脚本的目录。这存在安全问题,因此在 1.9 中删除了 '.' 目录。为了提供一种访问本地目录中事物的方法,添加了require_relative

    http://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_0/NEWS 谈论将其纳入核心。

    【讨论】:

      猜你喜欢
      • 2019-11-25
      • 2022-12-01
      • 1970-01-01
      • 2015-07-06
      • 2020-02-25
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 2013-02-01
      相关资源
      最近更新 更多