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
вызов. Как я могу это исправить?