【发布时间】:2020-05-14 18:51:58
【问题描述】:
有没有办法在app/controllers 文件夹之外正确加载控制器?
背景——情况是我们有多个客户端,我们不想分叉和创建特定于客户端的 Rails 应用程序,因此,我们只有一个应用程序,我们通过服务控制业务逻辑。应用程序的版本通过ENV 变量确定。
我们已定义 app/controllers 文件夹将仅用于共享逻辑,并且我们为 app/clients/[CLIENT]/ 内的每个客户端创建了文件夹,用于满足特定于客户端的需求 - 服务、关注点、配置、控制器,甚至是特定的路线会到这里。
通过这个app/clients/[CLIENT]/controllers,我们想额外加载客户端特定的路由和控制器。客户端文件夹中的示例控制器可能如下所示。
module Clients
module ClientA
module Controllers
module Api
module V1
class RentalsController < ApplicationController; end
end
end
end
end
end
有没有办法正确加载这个?
我尝试在application.rb中执行以下操作
config.autoload_paths += %W(#{config.root}/app/clients/ENV['CLIENT']/**/**)
那你怎么安装这个控制器呢?我尝试了以下方法,但没有奏效。
resources :rentals, controller: 'clients/ClientA/controllers/api/v1/rentals' do
【问题讨论】:
标签: ruby-on-rails