[英]Class in Folder autoloading
在我的一个控制器中,我想使用一个位于其中的服务类: services/cars/strategies/unload_car_strategy.rb
尽管unload_car_strategy.rb
位于文件夹内,但我不想使用命名空间:该类现在看起来像这样:
class UnloadCarStrategy
....
end
当我在控制器UnloadCarStrategy.new
调用时,出现错误:
NameError: uninitialized constant UnloadCarStrategy
如何指示Rails加载此类?
默认情况下,您的应用程序/目录下的所有内容都会在应用程序启动时自动加载。 因此,您在应用程序启动时加载了服务目录。
即使您在所需的文件夹中添加了尽可能多的文件夹和文件,Rails也会为您加载它们,直到您遵循命名空间。
由于您没有使用命名空间, UnloadCarStrategy
不会加载UnloadCarStrategy
类。
您必须在需要它的相应控制器中或在application.rb文件中明确要求它。
你要么添加
在必须从中调用它的控制器中require "#{Rails.root}/app/services/cars/strategies/unload_car_strategy"
或将以下行添加到application.rb
config.autoload_paths += %W({config.root}/app/services/cars/strategies/unload_car_strategy.rb)
来源: https : //gist.github.com/maxim/6503591#if-you-add-a-dir-under-appsomething
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.