【发布时间】:2014-03-28 19:49:46
【问题描述】:
我正在开发一个 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 调用中无法访问它们。我该如何解决这个问题?
【问题讨论】:
-
您应该手动要求文件
标签: ruby-on-rails ruby lazy-loading constants