繁体   English   中英

文件夹自动加载中的类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM