2

我有一个 /scripts 文件夹,其中包含我的项目的一些 ruby​​ 脚本。

/scripts
/scripts/app/models.rb
/scripts/config/config.yml
/scripts/lib
/scripts/lib/myapp/test.rb

在我的 test.rb 中,我有以下代码可以正确加载 config.yml 文件:

env = ENV['ENV'] || 'development'
config = YAML::load(File.open('config/config.yml'))[env]

现在在 test.rb 文件的顶部,我正在尝试加载与 ActiveRecord 一起使用的 models.rb 文件,但出现错误:

require File.join(File.dirname(__FILE__), "../../", 'models')

错误:

1.9.1/rubygems/custom_require.rb:36:in `require': 无法加载此类文件 -- lib/myapp/../../models (LoadError)

我试过:

require 'app/models'

那也没有用。

我在做什么错,为什么 config.yml 文件加载正确?

4

1 回答 1

7

File.open 使用显式路径,但需要尝试在 PATH 中搜索。Ruby >= 1.9.2 不会将当前目录添加到搜索路径 - 因此您需要明确指定它

require File.join(File.dirname(__FILE__), "./../../app", 'models')

或使用 require_relative

require_relative '../../app/models'

或者,您可以将当前目录添加到搜索路径(不推荐,出于安全考虑,这已从 ruby​​ 中删除)

$: << '.'
于 2012-09-23T20:53:50.320 回答