在作为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
答案 0 :(得分:1)
选项A.是正确的,但它应该是lib/my_engine/blog.rb
。你可以阅读更多关于Ruby&amp; Rails命名约定here。
此外,如果您想在博客命名空间下放置更多模块或类,请将它们放在文件夹lib/my_engine/blog
中,并将它们嵌套在MyEngine::Blog
下。