加载目录中的所有文件时,Ruby未初始化的常量错误

时间:2012-01-31 15:39:18

标签: ruby

我正在尝试使用以下代码从Ruby文件加载目录中的所有ruby文件:

Dir["#{File.dirname(__FILE__)}/pages/*_page.rb"].each { |r| load r }

但是,在这个目录中,我有一个继承自Class Foo的Class Bar。

Class Bar < Foo

当我运行程序时,出现错误:未初始化的常量Foo(NameError)。

我认为这是因为它试图加载Bar类,但还没有加载Foo类。

我已经尝试在Bar中明确要求Foo,但随后我将收到警告,因为Foo将被加载两次。

如何加载目录中的所有文件,以便自动需要任何所需文件。

1 个答案:

答案 0 :(得分:1)

由于没有真正的方法来强制使用循环时需要文件的顺序,因此首先必须require在循环之前定义Foo的文件。

require "./pages/file_that_defines_foo.rb"
Dir["#{File.dirname(__FILE__)}/pages/*_page.rb"].each { |r| load r }