我的服务文件夹中有很多服务对象。我正在使用Rails 4:
->services
a_gen.rb
b_gen.rb
...
a_pro.rb
b_pro.rb
...
我希望我的文件夹结构类似于
->services
->gen
a_gen.rb
b_gen.rb
...
->pro
a_pro.rb
b_pro.rb
...
我尝试制作文件夹并将对象放在那里,但Rails抱怨无法找到它。我是否必须告诉铁路看那里?
更新
我收到此错误:
NameError - 未初始化的常量ExampleModelName :: APro
即使加载了路径。一旦它在子文件夹中..Rails正在寻找错误的地方。
答案 0 :(得分:5)
你可以用两种方式做到这一点。
如果您希望rails
自动加载它们而不对config.autoload_paths
进行任何修改,请按照以下步骤为每个文件夹结构定义类:
module Gen
class ServiceA
end
end
如果您不想对班级定义进行任何更改,那么您可以将这些子文件夹添加到config.autoload_paths
中的config/application.rb
,如下所示
module YourApplication
class Application < Rails::Application
config.autoload_paths += [
"#{Rails.root}/app/services/gen",
"#{Rails.root}/app/services/prod"
]
end
end
答案 1 :(得分:2)
用于递归解决方案
re.split
答案 2 :(得分:0)
是的,你这样做。在config/application.rb
中,您可以将子文件夹添加到config.autoload_paths
集合。