我有以下文件夹结构:
app
├── assets
├── controllers
├── helpers
├── mailers
├── market_adapters
│ └── german.rb
│...
文件market_adapters/german.rb
是:
module MarketAdapters #(I've also tried naming it singular)
class German
end
end
运行测试时出现错误:
/gems/activesupport-5.0.0/lib/active_support/dependencies.rb:512:in
`load_missing_constant': Unable to autoload constant German,
expected .../app/market_adapters/german.rb to define it (LoadError)
将market_adapters
文件夹添加到autoload_paths
似乎无效config.autoload_paths << "#{Rails.root}/app/market_adapters"
如果我将market_adapters
移到lib
文件夹,一切正常。但仍然希望在app
下提出任何想法吗?
顺便说一下,我正在使用Rails 5。
答案 0 :(得分:5)
app
中的所有子文件夹都会自动加载并添加到加载路径中。因此,文件夹market_adapters
会添加到加载路径中,而名为german.rb
的文件应该定义German
类。
如果您确实希望将market_adapters
用作命名空间并将文件保留在应用中,则需要将其存储在app/market_adapters/market_adapters/german.rb
文件夹中。
然而,正确的地方是在lib。