Ruby on rails 应用/服务文件夹中的Rails命名空间服务对象
我试图将服务对象放入Ruby on rails 应用/服务文件夹中的Rails命名空间服务对象,ruby-on-rails,namespaces,autoload,Ruby On Rails,Namespaces,Autoload,我试图将服务对象放入app/services文件夹中,但通过services::SomeModel::SomeClass引用它们,以更好地组织我的代码(该项目相当大) 但是,由于Rails加载文件的方式,app/services被视为基本文件夹,Rails一直希望将类定义为::Tasks::Create,而不是::services::Tasks::Create 我可以通过将我的服务对象放置在一个子目录中来解决这个问题,比如app/classes/services,然后通过::services::
app/services
文件夹中,但通过services::SomeModel::SomeClass
引用它们,以更好地组织我的代码(该项目相当大)
但是,由于Rails加载文件的方式,app/services
被视为基本文件夹,Rails一直希望将类定义为::Tasks::Create
,而不是::services::Tasks::Create
我可以通过将我的服务对象放置在一个子目录中来解决这个问题,比如app/classes/services
,然后通过::services::Tasks::Create
,引用它们,但我更希望/services
文件夹位于/app
目录中
我不太喜欢某些服务使用的约定,将它们命名为::Tasks::CreateService
。我用我的方式命名它们的全部原因是,任何人都可以查看代码,了解相关文件的位置,并保持一切井然有序
我尝试过在config/application.rb
文件中使用auto\u load
,但这似乎不起作用,因为Rails已经在app/*
中预加载了文件(这是我的理解)
有没有办法通过
::Services::Model::Action
引用服务对象,并将文件放在app/Services/Model/Action.rb
中?我使用的结构与您似乎有问题的结构完全相同……但我没有任何问题。。。我将它们称为Services::Tasks::Create
(无前导:)…不确定这对您的问题是否重要似乎我必须自动加载/app
目录,我认为Rails已经完成了这项工作。。。工作,但我不知道“为什么”。我使用完全相同的结构,你似乎有问题…但我没有任何问题。。。我将它们称为Services::Tasks::Create
(无前导:)…不确定这对您的问题是否重要似乎我必须自动加载/app
目录,我认为Rails已经完成了这项工作。。。工作,但我不知道“为什么”。
# app/services/tasks/create.rb
module Services
module Tasks
class Create
# ...
end
end
end