我有一个/ 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:在`require':无法加载此类文件 - lib / myapp /../../ models(LoadError)
我试过了:
require 'app/models'
也没有用。
我做错了什么,为什么config.yml文件加载正确?
答案 0 :(得分:7)
File.open使用显式路径,但需要尝试在PATH中搜索。 Ruby> = 1.9.2不会将当前目录添加到搜索路径 - 因此您需要明确指定它
require File.join(File.dirname(__FILE__), "./../../app", 'models')
或使用require_relative
require_relative '../../app/models'
或者,您可以将当前目录添加到搜索路径(不推荐,出于安全考虑,已将其从ruby中删除)
$: << '.'