`ClassName.constants`在Rails应用程序中返回空数组

我正在开发一个Rails 3应用程序,我的lib文件夹中有一个类的层次结构,例如:

 lib ├── assets ├── tasks │  └── import.rake └── importer ├── base.rb └── source  ├── facebook.rb  ├── google.rb  └── twitter.rb 

我已经更新了config/application.rb以包含这一行:

 config.autoload_paths += %W(#{config.root}/lib) 

然后在Importer::Base里面,我有一个实例方法试图加载Provider模块中的所有类,例如:

 Importer::Source.constants.each do |class_name| Importer::Source.const_get(class_name).process end 

lib/importer/base的三个类具有类似于以下的类层次结构:

 module Importer module Source class Facebook # ... end end end 

当我调用此方法时, Importer::Source.constants最终返回一个空数组。 如果我直接通过名称引用它们,那么这些类似乎是延迟加载的,但它们在constants调用中是不可访问的。 我怎样才能解决这个问题?

使用@ apneadiving的建议,我能够通过将此行添加到我的base.rb文件的开头来解决此问题:

 Dir[Rails.root.join('lib/importer/source/**/*.rb')].each(&method(:require))