我们有一个大型的Rails应用程序,并且有一个共享的代码库(控制器,模型等)和一些特定于项目的自定义代码,位于
app/views/custom/project_name/...,
app/controllers/custom/project_name/...
# .. and so on.
由于我想分隔这些项目特定的代码(并且还防止在每个服务器上加载所有自定义代码,但仅限于项目名称与主机名fe相同),因此我尝试在lib文件夹中使用rails引擎,但由于缺少名称空间而未能成功(请参见下文)。
我还尝试用
加载代码# HOSTNAME = `hostname`.strip
config.eager_load_paths += %W(#{Rails.root}/custom/#{HOSTNAME})
config.autoload_paths += %W(#{Rails.root}/custom/#{HOSTNAME})
但是最有问题的是,我希望具有以下内容结构:
root_dir/custom/project_name
controllers
views
models
我仍然希望使用自定义名称空间命名的模型和控制器:
class Custom::ProjectName::Controller < ApplicationController
end
class Custom::ProjectName::MyModel < ApplicationRecord
end
您是否知道如何通过保留名称空间来实现这一点(因为我想防止重复的名称等)?