我找不到一种方法来生成在 Rails 下具有嵌套命名空间的引擎。每次这样做时,我基本上都必须手动编辑和移动生成的文件。
Rails 中真的不支持嵌套命名空间吗?似乎不太可能。
在公司,我们对所有内容进行命名,如下所示:
公司名称::服务名称::模块
因此,当我致力于 Service1 并制作将集成到客户支持用于根据客户请求处理该服务的用户和数据的应用程序中的引擎时,我想在
公司名称::服务1::客户支持
然而rails似乎无法做到这一点。
-
Using rails plugin new a::b::blah
不被接受:
akovanm0:test avandra$ rails plugin new a::b::blah -T --dummy-path=spec/dummy --mountable --full --mountable
Invalid plugin name a::b::blah. Please give a name which use only alphabetic or numeric or "_" characters.
指定rails plugin new a/b/blah
生成一个引擎,但具有相同的输出rails plugin new blah
- 指定
rails plugin new a_b_blah
生成一个字面名称为 a_b_blah 的引擎,而不是命名空间。 (实际名称是驼峰式的 ABBlah)
我想要实现的是一个引擎,其控制器、模型和视图是在a::b::blah
命名空间,并且可以以相同的方式安装。
我希望所有生成的控制器都进入app/controllers/a/b/blah
, 下的模型app/models/a/b/blah
, 等等...
有办法实现这一点吗?
对于 2022 年阅读本文的人来说,我相信 Rails 的更高版本会使用破折号作为单独的命名空间来处理引擎名称。
rails plugin new parent_engine-sub_engine --mountable
将创建以下内容engine.rb
:
module ParentEngine
module SubEngine
class Engine < ::Rails::Engine
isolate_namespace ParentEngine::SubEngine
end
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)