在作为isolate_namespace Rails引擎gem的父模块中嵌套子模块的正确语法是什么?
# lib/myengine/engine.rb
module MyEngine
class Engine < Rails::Engine
isolate_namespace Myengine
# def ...
end
end
例如。父模块是 MyEngine,子模块是 Blog。MyEngine 将共享公共域,如 CRUD、Taggable、Searchable 等,这将保持 gem 代码 DRY 并与主应用程序(MyApp)隔离,同时继承隔离的命名空间和引擎。
这两种方法中的任何一种都正确吗?有什么重构建议吗?
# A
# lib/myengine/blog.rb
module MyEngine
module Blog
# def ...
end
end
# B
# lib/myengine/blog.rb
module MyEngine
class Engine < Rails::Engine
isolate_namespace Myengine
module Blog
# def ...
end
end
end