轨道应用程序文件夹中的命名空间类



文件夹结构如下:

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_adapterslib文件夹,一切工作。但还是想把它放在app下,有什么想法吗?

顺便说一下,我使用的是Rails 5。

app中的所有子文件夹都自动自动加载并添加到加载路径中。因此,将文件夹market_adapters添加到加载路径中,并期望名为german.rb的文件定义German类。

如果你真的想使用market_adapters作为命名空间并将文件保存在app中,你需要将其存储在app/market_adapters/market_adapters/german.rb文件夹中。

正确的位置在lib中。

相关内容

  • 没有找到相关文章

最新更新